d37b107a51da4b45ff587aab8e17e5d30a659679
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
1 \input texinfo @c -*-texinfo-*-
2 @c Copyright (C) 1988-2018 Free Software Foundation, Inc.
3 @c
4 @c %**start of header
5 @c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
6 @c of @set vars. However, you can override filename with makeinfo -o.
7 @setfilename gdb.info
8 @c
9 @c man begin INCLUDE
10 @include gdb-cfg.texi
11 @c man end
12 @c
13 @settitle Debugging with @value{GDBN}
14 @setchapternewpage odd
15 @c %**end of header
16
17 @iftex
18 @c @smallbook
19 @c @cropmarks
20 @end iftex
21
22 @finalout
23 @c To avoid file-name clashes between index.html and Index.html, when
24 @c the manual is produced on a Posix host and then moved to a
25 @c case-insensitive filesystem (e.g., MS-Windows), we separate the
26 @c indices into two: Concept Index and all the rest.
27 @syncodeindex ky fn
28 @syncodeindex tp fn
29
30 @c readline appendices use @vindex, @findex and @ftable,
31 @c annotate.texi and gdbmi use @findex.
32 @syncodeindex vr fn
33
34 @c !!set GDB manual's edition---not the same as GDB version!
35 @c This is updated by GNU Press.
36 @set EDITION Tenth
37
38 @c !!set GDB edit command default editor
39 @set EDITOR /bin/ex
40
41 @c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
42
43 @c This is a dir.info fragment to support semi-automated addition of
44 @c manuals to an info tree.
45 @dircategory Software development
46 @direntry
47 * Gdb: (gdb). The GNU debugger.
48 * gdbserver: (gdb) Server. The GNU debugging server.
49 @end direntry
50
51 @copying
52 @c man begin COPYRIGHT
53 Copyright @copyright{} 1988-2018 Free Software Foundation, Inc.
54
55 Permission is granted to copy, distribute and/or modify this document
56 under the terms of the GNU Free Documentation License, Version 1.3 or
57 any later version published by the Free Software Foundation; with the
58 Invariant Sections being ``Free Software'' and ``Free Software Needs
59 Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
60 and with the Back-Cover Texts as in (a) below.
61
62 (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
63 this GNU Manual. Buying copies from GNU Press supports the FSF in
64 developing GNU and promoting software freedom.''
65 @c man end
66 @end copying
67
68 @ifnottex
69 This file documents the @sc{gnu} debugger @value{GDBN}.
70
71 This is the @value{EDITION} Edition, of @cite{Debugging with
72 @value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN}
73 @ifset VERSION_PACKAGE
74 @value{VERSION_PACKAGE}
75 @end ifset
76 Version @value{GDBVN}.
77
78 @insertcopying
79 @end ifnottex
80
81 @titlepage
82 @title Debugging with @value{GDBN}
83 @subtitle The @sc{gnu} Source-Level Debugger
84 @sp 1
85 @subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
86 @ifset VERSION_PACKAGE
87 @sp 1
88 @subtitle @value{VERSION_PACKAGE}
89 @end ifset
90 @author Richard Stallman, Roland Pesch, Stan Shebs, et al.
91 @page
92 @tex
93 {\parskip=0pt
94 \hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par
95 \hfill {\it Debugging with @value{GDBN}}\par
96 \hfill \TeX{}info \texinfoversion\par
97 }
98 @end tex
99
100 @vskip 0pt plus 1filll
101 Published by the Free Software Foundation @*
102 51 Franklin Street, Fifth Floor,
103 Boston, MA 02110-1301, USA@*
104 ISBN 978-0-9831592-3-0 @*
105
106 @insertcopying
107 @end titlepage
108 @page
109
110 @ifnottex
111 @node Top, Summary, (dir), (dir)
112
113 @top Debugging with @value{GDBN}
114
115 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
116
117 This is the @value{EDITION} Edition, for @value{GDBN}
118 @ifset VERSION_PACKAGE
119 @value{VERSION_PACKAGE}
120 @end ifset
121 Version @value{GDBVN}.
122
123 Copyright (C) 1988-2018 Free Software Foundation, Inc.
124
125 This edition of the GDB manual is dedicated to the memory of Fred
126 Fish. Fred was a long-standing contributor to GDB and to Free
127 software in general. We will miss him.
128
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
137 * Reverse Execution:: Running programs backward
138 * Process Record and Replay:: Recording inferior's execution and replaying it
139 * Stack:: Examining the stack
140 * Source:: Examining source files
141 * Data:: Examining data
142 * Optimized Code:: Debugging optimized code
143 * Macros:: Preprocessor Macros
144 * Tracepoints:: Debugging remote targets non-intrusively
145 * Overlays:: Debugging programs that use overlays
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
153 * Remote Debugging:: Debugging remote programs
154 * Configurations:: Configuration-specific information
155 * Controlling GDB:: Controlling @value{GDBN}
156 * Extending GDB:: Extending @value{GDBN}
157 * Interpreters:: Command Interpreters
158 * TUI:: @value{GDBN} Text User Interface
159 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
160 * GDB/MI:: @value{GDBN}'s Machine Interface.
161 * Annotations:: @value{GDBN}'s annotation interface.
162 * JIT Interface:: Using the JIT debugging interface.
163 * In-Process Agent:: In-Process Agent
164
165 * GDB Bugs:: Reporting bugs in @value{GDBN}
166
167 @ifset SYSTEM_READLINE
168 * Command Line Editing: (rluserman). Command Line Editing
169 * Using History Interactively: (history). Using History Interactively
170 @end ifset
171 @ifclear SYSTEM_READLINE
172 * Command Line Editing:: Command Line Editing
173 * Using History Interactively:: Using History Interactively
174 @end ifclear
175 * In Memoriam:: In Memoriam
176 * Formatting Documentation:: How to format and print @value{GDBN} documentation
177 * Installing GDB:: Installing GDB
178 * Maintenance Commands:: Maintenance Commands
179 * Remote Protocol:: GDB Remote Serial Protocol
180 * Agent Expressions:: The GDB Agent Expression Mechanism
181 * Target Descriptions:: How targets can describe themselves to
182 @value{GDBN}
183 * Operating System Information:: Getting additional information from
184 the operating system
185 * Trace File Format:: GDB trace file format
186 * Index Section Format:: .gdb_index section format
187 * Man Pages:: Manual pages
188 * Copying:: GNU General Public License says
189 how you can copy and share GDB
190 * GNU Free Documentation License:: The license for this documentation
191 * Concept Index:: Index of @value{GDBN} concepts
192 * Command and Variable Index:: Index of @value{GDBN} commands, variables,
193 functions, and Python data types
194 @end menu
195
196 @end ifnottex
197
198 @contents
199
200 @node Summary
201 @unnumbered Summary of @value{GDBN}
202
203 The purpose of a debugger such as @value{GDBN} is to allow you to see what is
204 going on ``inside'' another program while it executes---or what another
205 program was doing at the moment it crashed.
206
207 @value{GDBN} can do four main kinds of things (plus other things in support of
208 these) to help you catch bugs in the act:
209
210 @itemize @bullet
211 @item
212 Start your program, specifying anything that might affect its behavior.
213
214 @item
215 Make your program stop on specified conditions.
216
217 @item
218 Examine what has happened, when your program has stopped.
219
220 @item
221 Change things in your program, so you can experiment with correcting the
222 effects of one bug and go on to learn about another.
223 @end itemize
224
225 You can use @value{GDBN} to debug programs written in C and C@t{++}.
226 For more information, see @ref{Supported Languages,,Supported Languages}.
227 For more information, see @ref{C,,C and C++}.
228
229 Support for D is partial. For information on D, see
230 @ref{D,,D}.
231
232 @cindex Modula-2
233 Support for Modula-2 is partial. For information on Modula-2, see
234 @ref{Modula-2,,Modula-2}.
235
236 Support for OpenCL C is partial. For information on OpenCL C, see
237 @ref{OpenCL C,,OpenCL C}.
238
239 @cindex Pascal
240 Debugging Pascal programs which use sets, subranges, file variables, or
241 nested functions does not currently work. @value{GDBN} does not support
242 entering expressions, printing values, or similar features using Pascal
243 syntax.
244
245 @cindex Fortran
246 @value{GDBN} can be used to debug programs written in Fortran, although
247 it may be necessary to refer to some variables with a trailing
248 underscore.
249
250 @value{GDBN} can be used to debug programs written in Objective-C,
251 using either the Apple/NeXT or the GNU Objective-C runtime.
252
253 @menu
254 * Free Software:: Freely redistributable software
255 * Free Documentation:: Free Software Needs Free Documentation
256 * Contributors:: Contributors to GDB
257 @end menu
258
259 @node Free Software
260 @unnumberedsec Free Software
261
262 @value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
263 General Public License
264 (GPL). The GPL gives you the freedom to copy or adapt a licensed
265 program---but every person getting a copy also gets with it the
266 freedom to modify that copy (which means that they must get access to
267 the source code), and the freedom to distribute further copies.
268 Typical software companies use copyrights to limit your freedoms; the
269 Free Software Foundation uses the GPL to preserve these freedoms.
270
271 Fundamentally, the General Public License is a license which says that
272 you have these freedoms and that you cannot take these freedoms away
273 from anyone else.
274
275 @node Free Documentation
276 @unnumberedsec Free Software Needs Free Documentation
277
278 The biggest deficiency in the free software community today is not in
279 the software---it is the lack of good free documentation that we can
280 include with the free software. Many of our most important
281 programs do not come with free reference manuals and free introductory
282 texts. Documentation is an essential part of any software package;
283 when an important free software package does not come with a free
284 manual and a free tutorial, that is a major gap. We have many such
285 gaps today.
286
287 Consider Perl, for instance. The tutorial manuals that people
288 normally use are non-free. How did this come about? Because the
289 authors of those manuals published them with restrictive terms---no
290 copying, no modification, source files not available---which exclude
291 them from the free software world.
292
293 That wasn't the first time this sort of thing happened, and it was far
294 from the last. Many times we have heard a GNU user eagerly describe a
295 manual that he is writing, his intended contribution to the community,
296 only to learn that he had ruined everything by signing a publication
297 contract to make it non-free.
298
299 Free documentation, like free software, is a matter of freedom, not
300 price. The problem with the non-free manual is not that publishers
301 charge a price for printed copies---that in itself is fine. (The Free
302 Software Foundation sells printed copies of manuals, too.) The
303 problem is the restrictions on the use of the manual. Free manuals
304 are available in source code form, and give you permission to copy and
305 modify. Non-free manuals do not allow this.
306
307 The criteria of freedom for a free manual are roughly the same as for
308 free software. Redistribution (including the normal kinds of
309 commercial redistribution) must be permitted, so that the manual can
310 accompany every copy of the program, both on-line and on paper.
311
312 Permission for modification of the technical content is crucial too.
313 When people modify the software, adding or changing features, if they
314 are conscientious they will change the manual too---so they can
315 provide accurate and clear documentation for the modified program. A
316 manual that leaves you no choice but to write a new manual to document
317 a changed version of the program is not really available to our
318 community.
319
320 Some kinds of limits on the way modification is handled are
321 acceptable. For example, requirements to preserve the original
322 author's copyright notice, the distribution terms, or the list of
323 authors, are ok. It is also no problem to require modified versions
324 to include notice that they were modified. Even entire sections that
325 may not be deleted or changed are acceptable, as long as they deal
326 with nontechnical topics (like this one). These kinds of restrictions
327 are acceptable because they don't obstruct the community's normal use
328 of the manual.
329
330 However, it must be possible to modify all the @emph{technical}
331 content of the manual, and then distribute the result in all the usual
332 media, through all the usual channels. Otherwise, the restrictions
333 obstruct the use of the manual, it is not free, and we need another
334 manual to replace it.
335
336 Please spread the word about this issue. Our community continues to
337 lose manuals to proprietary publishing. If we spread the word that
338 free software needs free reference manuals and free tutorials, perhaps
339 the next person who wants to contribute by writing documentation will
340 realize, before it is too late, that only free manuals contribute to
341 the free software community.
342
343 If you are writing documentation, please insist on publishing it under
344 the GNU Free Documentation License or another free documentation
345 license. Remember that this decision requires your approval---you
346 don't have to let the publisher decide. Some commercial publishers
347 will use a free license if you insist, but they will not propose the
348 option; it is up to you to raise the issue and say firmly that this is
349 what you want. If the publisher you are dealing with refuses, please
350 try other publishers. If you're not sure whether a proposed license
351 is free, write to @email{licensing@@gnu.org}.
352
353 You can encourage commercial publishers to sell more free, copylefted
354 manuals and tutorials by buying them, and particularly by buying
355 copies from the publishers that paid for their writing or for major
356 improvements. Meanwhile, try to avoid buying non-free documentation
357 at all. Check the distribution terms of a manual before you buy it,
358 and insist that whoever seeks your business must respect your freedom.
359 Check the history of the book, and try to reward the publishers that
360 have paid or pay the authors to work on it.
361
362 The Free Software Foundation maintains a list of free documentation
363 published by other publishers, at
364 @url{http://www.fsf.org/doc/other-free-books.html}.
365
366 @node Contributors
367 @unnumberedsec Contributors to @value{GDBN}
368
369 Richard Stallman was the original author of @value{GDBN}, and of many
370 other @sc{gnu} programs. Many others have contributed to its
371 development. This section attempts to credit major contributors. One
372 of the virtues of free software is that everyone is free to contribute
373 to it; with regret, we cannot actually acknowledge everyone here. The
374 file @file{ChangeLog} in the @value{GDBN} distribution approximates a
375 blow-by-blow account.
376
377 Changes much prior to version 2.0 are lost in the mists of time.
378
379 @quotation
380 @emph{Plea:} Additions to this section are particularly welcome. If you
381 or your friends (or enemies, to be evenhanded) have been unfairly
382 omitted from this list, we would like to add your names!
383 @end quotation
384
385 So that they may not regard their many labors as thankless, we
386 particularly thank those who shepherded @value{GDBN} through major
387 releases:
388 Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
389 Jim Blandy (release 4.18);
390 Jason Molenda (release 4.17);
391 Stan Shebs (release 4.14);
392 Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
393 Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
394 John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
395 Jim Kingdon (releases 3.5, 3.4, and 3.3);
396 and Randy Smith (releases 3.2, 3.1, and 3.0).
397
398 Richard Stallman, assisted at various times by Peter TerMaat, Chris
399 Hanson, and Richard Mlynarik, handled releases through 2.8.
400
401 Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
402 in @value{GDBN}, with significant additional contributions from Per
403 Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
404 demangler. Early work on C@t{++} was by Peter TerMaat (who also did
405 much general update work leading to release 3.0).
406
407 @value{GDBN} uses the BFD subroutine library to examine multiple
408 object-file formats; BFD was a joint project of David V.
409 Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
410
411 David Johnson wrote the original COFF support; Pace Willison did
412 the original support for encapsulated COFF.
413
414 Brent Benson of Harris Computer Systems contributed DWARF 2 support.
415
416 Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
417 Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
418 support.
419 Jean-Daniel Fekete contributed Sun 386i support.
420 Chris Hanson improved the HP9000 support.
421 Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
422 David Johnson contributed Encore Umax support.
423 Jyrki Kuoppala contributed Altos 3068 support.
424 Jeff Law contributed HP PA and SOM support.
425 Keith Packard contributed NS32K support.
426 Doug Rabson contributed Acorn Risc Machine support.
427 Bob Rusk contributed Harris Nighthawk CX-UX support.
428 Chris Smith contributed Convex support (and Fortran debugging).
429 Jonathan Stone contributed Pyramid support.
430 Michael Tiemann contributed SPARC support.
431 Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
432 Pace Willison contributed Intel 386 support.
433 Jay Vosburgh contributed Symmetry support.
434 Marko Mlinar contributed OpenRISC 1000 support.
435
436 Andreas Schwab contributed M68K @sc{gnu}/Linux support.
437
438 Rich Schaefer and Peter Schauer helped with support of SunOS shared
439 libraries.
440
441 Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
442 about several machine instruction sets.
443
444 Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
445 remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
446 contributed remote debugging modules for the i960, VxWorks, A29K UDI,
447 and RDI targets, respectively.
448
449 Brian Fox is the author of the readline libraries providing
450 command-line editing and command history.
451
452 Andrew Beers of SUNY Buffalo wrote the language-switching code, the
453 Modula-2 support, and contributed the Languages chapter of this manual.
454
455 Fred Fish wrote most of the support for Unix System Vr4.
456 He also enhanced the command-completion support to cover C@t{++} overloaded
457 symbols.
458
459 Hitachi America (now Renesas America), Ltd. sponsored the support for
460 H8/300, H8/500, and Super-H processors.
461
462 NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
463
464 Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
465 processors.
466
467 Toshiba sponsored the support for the TX39 Mips processor.
468
469 Matsushita sponsored the support for the MN10200 and MN10300 processors.
470
471 Fujitsu sponsored the support for SPARClite and FR30 processors.
472
473 Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
474 watchpoints.
475
476 Michael Snyder added support for tracepoints.
477
478 Stu Grossman wrote gdbserver.
479
480 Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
481 nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
482
483 The following people at the Hewlett-Packard Company contributed
484 support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
485 (narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
486 compiler, and the Text User Interface (nee Terminal User Interface):
487 Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
488 Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
489 provided HP-specific information in this manual.
490
491 DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
492 Robert Hoehne made significant contributions to the DJGPP port.
493
494 Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
495 development since 1991. Cygnus engineers who have worked on @value{GDBN}
496 fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
497 Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
498 Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
499 Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
500 Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
501 addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
502 JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
503 Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
504 Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
505 Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
506 Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
507 Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
508 Zuhn have made contributions both large and small.
509
510 Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
511 Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
512
513 Jim Blandy added support for preprocessor macros, while working for Red
514 Hat.
515
516 Andrew Cagney designed @value{GDBN}'s architecture vector. Many
517 people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
518 Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
519 Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
520 Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
521 with the migration of old architectures to this new framework.
522
523 Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
524 unwinder framework, this consisting of a fresh new design featuring
525 frame IDs, independent frame sniffers, and the sentinel frame. Mark
526 Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
527 libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
528 trad unwinders. The architecture-specific changes, each involving a
529 complete rewrite of the architecture's frame code, were carried out by
530 Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
531 Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
532 Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
533 Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
534 Weigand.
535
536 Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
537 Tensilica, Inc.@: contributed support for Xtensa processors. Others
538 who have worked on the Xtensa port of @value{GDBN} in the past include
539 Steve Tjiang, John Newlin, and Scott Foehner.
540
541 Michael Eager and staff of Xilinx, Inc., contributed support for the
542 Xilinx MicroBlaze architecture.
543
544 Initial support for the FreeBSD/mips target and native configuration
545 was developed by SRI International and the University of Cambridge
546 Computer Laboratory under DARPA/AFRL contract FA8750-10-C-0237
547 ("CTSRD"), as part of the DARPA CRASH research programme.
548
549 The original port to the OpenRISC 1000 is believed to be due to
550 Alessandro Forin and Per Bothner. More recent ports have been the work
551 of Jeremy Bennett, Franck Jullien, Stefan Wallentowitz and
552 Stafford Horne.
553
554 @node Sample Session
555 @chapter A Sample @value{GDBN} Session
556
557 You can use this manual at your leisure to read all about @value{GDBN}.
558 However, a handful of commands are enough to get started using the
559 debugger. This chapter illustrates those commands.
560
561 @iftex
562 In this sample session, we emphasize user input like this: @b{input},
563 to make it easier to pick out from the surrounding output.
564 @end iftex
565
566 @c FIXME: this example may not be appropriate for some configs, where
567 @c FIXME...primary interest is in remote use.
568
569 One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
570 processor) exhibits the following bug: sometimes, when we change its
571 quote strings from the default, the commands used to capture one macro
572 definition within another stop working. In the following short @code{m4}
573 session, we define a macro @code{foo} which expands to @code{0000}; we
574 then use the @code{m4} built-in @code{defn} to define @code{bar} as the
575 same thing. However, when we change the open quote string to
576 @code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
577 procedure fails to define a new synonym @code{baz}:
578
579 @smallexample
580 $ @b{cd gnu/m4}
581 $ @b{./m4}
582 @b{define(foo,0000)}
583
584 @b{foo}
585 0000
586 @b{define(bar,defn(`foo'))}
587
588 @b{bar}
589 0000
590 @b{changequote(<QUOTE>,<UNQUOTE>)}
591
592 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
593 @b{baz}
594 @b{Ctrl-d}
595 m4: End of input: 0: fatal error: EOF in string
596 @end smallexample
597
598 @noindent
599 Let us use @value{GDBN} to try to see what is going on.
600
601 @smallexample
602 $ @b{@value{GDBP} m4}
603 @c FIXME: this falsifies the exact text played out, to permit smallbook
604 @c FIXME... format to come out better.
605 @value{GDBN} is free software and you are welcome to distribute copies
606 of it under certain conditions; type "show copying" to see
607 the conditions.
608 There is absolutely no warranty for @value{GDBN}; type "show warranty"
609 for details.
610
611 @value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
612 (@value{GDBP})
613 @end smallexample
614
615 @noindent
616 @value{GDBN} reads only enough symbol data to know where to find the
617 rest when needed; as a result, the first prompt comes up very quickly.
618 We now tell @value{GDBN} to use a narrower display width than usual, so
619 that examples fit in this manual.
620
621 @smallexample
622 (@value{GDBP}) @b{set width 70}
623 @end smallexample
624
625 @noindent
626 We need to see how the @code{m4} built-in @code{changequote} works.
627 Having looked at the source, we know the relevant subroutine is
628 @code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
629 @code{break} command.
630
631 @smallexample
632 (@value{GDBP}) @b{break m4_changequote}
633 Breakpoint 1 at 0x62f4: file builtin.c, line 879.
634 @end smallexample
635
636 @noindent
637 Using the @code{run} command, we start @code{m4} running under @value{GDBN}
638 control; as long as control does not reach the @code{m4_changequote}
639 subroutine, the program runs as usual:
640
641 @smallexample
642 (@value{GDBP}) @b{run}
643 Starting program: /work/Editorial/gdb/gnu/m4/m4
644 @b{define(foo,0000)}
645
646 @b{foo}
647 0000
648 @end smallexample
649
650 @noindent
651 To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
652 suspends execution of @code{m4}, displaying information about the
653 context where it stops.
654
655 @smallexample
656 @b{changequote(<QUOTE>,<UNQUOTE>)}
657
658 Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
659 at builtin.c:879
660 879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
661 @end smallexample
662
663 @noindent
664 Now we use the command @code{n} (@code{next}) to advance execution to
665 the next line of the current function.
666
667 @smallexample
668 (@value{GDBP}) @b{n}
669 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
670 : nil,
671 @end smallexample
672
673 @noindent
674 @code{set_quotes} looks like a promising subroutine. We can go into it
675 by using the command @code{s} (@code{step}) instead of @code{next}.
676 @code{step} goes to the next line to be executed in @emph{any}
677 subroutine, so it steps into @code{set_quotes}.
678
679 @smallexample
680 (@value{GDBP}) @b{s}
681 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
682 at input.c:530
683 530 if (lquote != def_lquote)
684 @end smallexample
685
686 @noindent
687 The display that shows the subroutine where @code{m4} is now
688 suspended (and its arguments) is called a stack frame display. It
689 shows a summary of the stack. We can use the @code{backtrace}
690 command (which can also be spelled @code{bt}), to see where we are
691 in the stack as a whole: the @code{backtrace} command displays a
692 stack frame for each active subroutine.
693
694 @smallexample
695 (@value{GDBP}) @b{bt}
696 #0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
697 at input.c:530
698 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
699 at builtin.c:882
700 #2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
701 #3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
702 at macro.c:71
703 #4 0x79dc in expand_input () at macro.c:40
704 #5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
705 @end smallexample
706
707 @noindent
708 We step through a few more lines to see what happens. The first two
709 times, we can use @samp{s}; the next two times we use @code{n} to avoid
710 falling into the @code{xstrdup} subroutine.
711
712 @smallexample
713 (@value{GDBP}) @b{s}
714 0x3b5c 532 if (rquote != def_rquote)
715 (@value{GDBP}) @b{s}
716 0x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
717 def_lquote : xstrdup(lq);
718 (@value{GDBP}) @b{n}
719 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
720 : xstrdup(rq);
721 (@value{GDBP}) @b{n}
722 538 len_lquote = strlen(rquote);
723 @end smallexample
724
725 @noindent
726 The last line displayed looks a little odd; we can examine the variables
727 @code{lquote} and @code{rquote} to see if they are in fact the new left
728 and right quotes we specified. We use the command @code{p}
729 (@code{print}) to see their values.
730
731 @smallexample
732 (@value{GDBP}) @b{p lquote}
733 $1 = 0x35d40 "<QUOTE>"
734 (@value{GDBP}) @b{p rquote}
735 $2 = 0x35d50 "<UNQUOTE>"
736 @end smallexample
737
738 @noindent
739 @code{lquote} and @code{rquote} are indeed the new left and right quotes.
740 To look at some context, we can display ten lines of source
741 surrounding the current line with the @code{l} (@code{list}) command.
742
743 @smallexample
744 (@value{GDBP}) @b{l}
745 533 xfree(rquote);
746 534
747 535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
748 : xstrdup (lq);
749 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
750 : xstrdup (rq);
751 537
752 538 len_lquote = strlen(rquote);
753 539 len_rquote = strlen(lquote);
754 540 @}
755 541
756 542 void
757 @end smallexample
758
759 @noindent
760 Let us step past the two lines that set @code{len_lquote} and
761 @code{len_rquote}, and then examine the values of those variables.
762
763 @smallexample
764 (@value{GDBP}) @b{n}
765 539 len_rquote = strlen(lquote);
766 (@value{GDBP}) @b{n}
767 540 @}
768 (@value{GDBP}) @b{p len_lquote}
769 $3 = 9
770 (@value{GDBP}) @b{p len_rquote}
771 $4 = 7
772 @end smallexample
773
774 @noindent
775 That certainly looks wrong, assuming @code{len_lquote} and
776 @code{len_rquote} are meant to be the lengths of @code{lquote} and
777 @code{rquote} respectively. We can set them to better values using
778 the @code{p} command, since it can print the value of
779 any expression---and that expression can include subroutine calls and
780 assignments.
781
782 @smallexample
783 (@value{GDBP}) @b{p len_lquote=strlen(lquote)}
784 $5 = 7
785 (@value{GDBP}) @b{p len_rquote=strlen(rquote)}
786 $6 = 9
787 @end smallexample
788
789 @noindent
790 Is that enough to fix the problem of using the new quotes with the
791 @code{m4} built-in @code{defn}? We can allow @code{m4} to continue
792 executing with the @code{c} (@code{continue}) command, and then try the
793 example that caused trouble initially:
794
795 @smallexample
796 (@value{GDBP}) @b{c}
797 Continuing.
798
799 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
800
801 baz
802 0000
803 @end smallexample
804
805 @noindent
806 Success! The new quotes now work just as well as the default ones. The
807 problem seems to have been just the two typos defining the wrong
808 lengths. We allow @code{m4} exit by giving it an EOF as input:
809
810 @smallexample
811 @b{Ctrl-d}
812 Program exited normally.
813 @end smallexample
814
815 @noindent
816 The message @samp{Program exited normally.} is from @value{GDBN}; it
817 indicates @code{m4} has finished executing. We can end our @value{GDBN}
818 session with the @value{GDBN} @code{quit} command.
819
820 @smallexample
821 (@value{GDBP}) @b{quit}
822 @end smallexample
823
824 @node Invocation
825 @chapter Getting In and Out of @value{GDBN}
826
827 This chapter discusses how to start @value{GDBN}, and how to get out of it.
828 The essentials are:
829 @itemize @bullet
830 @item
831 type @samp{@value{GDBP}} to start @value{GDBN}.
832 @item
833 type @kbd{quit} or @kbd{Ctrl-d} to exit.
834 @end itemize
835
836 @menu
837 * Invoking GDB:: How to start @value{GDBN}
838 * Quitting GDB:: How to quit @value{GDBN}
839 * Shell Commands:: How to use shell commands inside @value{GDBN}
840 * Logging Output:: How to log @value{GDBN}'s output to a file
841 @end menu
842
843 @node Invoking GDB
844 @section Invoking @value{GDBN}
845
846 Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
847 @value{GDBN} reads commands from the terminal until you tell it to exit.
848
849 You can also run @code{@value{GDBP}} with a variety of arguments and options,
850 to specify more of your debugging environment at the outset.
851
852 The command-line options described here are designed
853 to cover a variety of situations; in some environments, some of these
854 options may effectively be unavailable.
855
856 The most usual way to start @value{GDBN} is with one argument,
857 specifying an executable program:
858
859 @smallexample
860 @value{GDBP} @var{program}
861 @end smallexample
862
863 @noindent
864 You can also start with both an executable program and a core file
865 specified:
866
867 @smallexample
868 @value{GDBP} @var{program} @var{core}
869 @end smallexample
870
871 You can, instead, specify a process ID as a second argument, if you want
872 to debug a running process:
873
874 @smallexample
875 @value{GDBP} @var{program} 1234
876 @end smallexample
877
878 @noindent
879 would attach @value{GDBN} to process @code{1234} (unless you also have a file
880 named @file{1234}; @value{GDBN} does check for a core file first).
881
882 Taking advantage of the second command-line argument requires a fairly
883 complete operating system; when you use @value{GDBN} as a remote
884 debugger attached to a bare board, there may not be any notion of
885 ``process'', and there is often no way to get a core dump. @value{GDBN}
886 will warn you if it is unable to attach or to read core dumps.
887
888 You can optionally have @code{@value{GDBP}} pass any arguments after the
889 executable file to the inferior using @code{--args}. This option stops
890 option processing.
891 @smallexample
892 @value{GDBP} --args gcc -O2 -c foo.c
893 @end smallexample
894 This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
895 @code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
896
897 You can run @code{@value{GDBP}} without printing the front material, which describes
898 @value{GDBN}'s non-warranty, by specifying @code{--silent}
899 (or @code{-q}/@code{--quiet}):
900
901 @smallexample
902 @value{GDBP} --silent
903 @end smallexample
904
905 @noindent
906 You can further control how @value{GDBN} starts up by using command-line
907 options. @value{GDBN} itself can remind you of the options available.
908
909 @noindent
910 Type
911
912 @smallexample
913 @value{GDBP} -help
914 @end smallexample
915
916 @noindent
917 to display all available options and briefly describe their use
918 (@samp{@value{GDBP} -h} is a shorter equivalent).
919
920 All options and command line arguments you give are processed
921 in sequential order. The order makes a difference when the
922 @samp{-x} option is used.
923
924
925 @menu
926 * File Options:: Choosing files
927 * Mode Options:: Choosing modes
928 * Startup:: What @value{GDBN} does during startup
929 @end menu
930
931 @node File Options
932 @subsection Choosing Files
933
934 When @value{GDBN} starts, it reads any arguments other than options as
935 specifying an executable file and core file (or process ID). This is
936 the same as if the arguments were specified by the @samp{-se} and
937 @samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
938 first argument that does not have an associated option flag as
939 equivalent to the @samp{-se} option followed by that argument; and the
940 second argument that does not have an associated option flag, if any, as
941 equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
942 If the second argument begins with a decimal digit, @value{GDBN} will
943 first attempt to attach to it as a process, and if that fails, attempt
944 to open it as a corefile. If you have a corefile whose name begins with
945 a digit, you can prevent @value{GDBN} from treating it as a pid by
946 prefixing it with @file{./}, e.g.@: @file{./12345}.
947
948 If @value{GDBN} has not been configured to included core file support,
949 such as for most embedded targets, then it will complain about a second
950 argument and ignore it.
951
952 Many options have both long and short forms; both are shown in the
953 following list. @value{GDBN} also recognizes the long forms if you truncate
954 them, so long as enough of the option is present to be unambiguous.
955 (If you prefer, you can flag option arguments with @samp{--} rather
956 than @samp{-}, though we illustrate the more usual convention.)
957
958 @c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
959 @c way, both those who look for -foo and --foo in the index, will find
960 @c it.
961
962 @table @code
963 @item -symbols @var{file}
964 @itemx -s @var{file}
965 @cindex @code{--symbols}
966 @cindex @code{-s}
967 Read symbol table from file @var{file}.
968
969 @item -exec @var{file}
970 @itemx -e @var{file}
971 @cindex @code{--exec}
972 @cindex @code{-e}
973 Use file @var{file} as the executable file to execute when appropriate,
974 and for examining pure data in conjunction with a core dump.
975
976 @item -se @var{file}
977 @cindex @code{--se}
978 Read symbol table from file @var{file} and use it as the executable
979 file.
980
981 @item -core @var{file}
982 @itemx -c @var{file}
983 @cindex @code{--core}
984 @cindex @code{-c}
985 Use file @var{file} as a core dump to examine.
986
987 @item -pid @var{number}
988 @itemx -p @var{number}
989 @cindex @code{--pid}
990 @cindex @code{-p}
991 Connect to process ID @var{number}, as with the @code{attach} command.
992
993 @item -command @var{file}
994 @itemx -x @var{file}
995 @cindex @code{--command}
996 @cindex @code{-x}
997 Execute commands from file @var{file}. The contents of this file is
998 evaluated exactly as the @code{source} command would.
999 @xref{Command Files,, Command files}.
1000
1001 @item -eval-command @var{command}
1002 @itemx -ex @var{command}
1003 @cindex @code{--eval-command}
1004 @cindex @code{-ex}
1005 Execute a single @value{GDBN} command.
1006
1007 This option may be used multiple times to call multiple commands. It may
1008 also be interleaved with @samp{-command} as required.
1009
1010 @smallexample
1011 @value{GDBP} -ex 'target sim' -ex 'load' \
1012 -x setbreakpoints -ex 'run' a.out
1013 @end smallexample
1014
1015 @item -init-command @var{file}
1016 @itemx -ix @var{file}
1017 @cindex @code{--init-command}
1018 @cindex @code{-ix}
1019 Execute commands from file @var{file} before loading the inferior (but
1020 after loading gdbinit files).
1021 @xref{Startup}.
1022
1023 @item -init-eval-command @var{command}
1024 @itemx -iex @var{command}
1025 @cindex @code{--init-eval-command}
1026 @cindex @code{-iex}
1027 Execute a single @value{GDBN} command before loading the inferior (but
1028 after loading gdbinit files).
1029 @xref{Startup}.
1030
1031 @item -directory @var{directory}
1032 @itemx -d @var{directory}
1033 @cindex @code{--directory}
1034 @cindex @code{-d}
1035 Add @var{directory} to the path to search for source and script files.
1036
1037 @item -r
1038 @itemx -readnow
1039 @cindex @code{--readnow}
1040 @cindex @code{-r}
1041 Read each symbol file's entire symbol table immediately, rather than
1042 the default, which is to read it incrementally as it is needed.
1043 This makes startup slower, but makes future operations faster.
1044
1045 @item --readnever
1046 @anchor{--readnever}
1047 @cindex @code{--readnever}, command-line option
1048 Do not read each symbol file's symbolic debug information. This makes
1049 startup faster but at the expense of not being able to perform
1050 symbolic debugging. DWARF unwind information is also not read,
1051 meaning backtraces may become incomplete or inaccurate. One use of
1052 this is when a user simply wants to do the following sequence: attach,
1053 dump core, detach. Loading the debugging information in this case is
1054 an unnecessary cause of delay.
1055 @end table
1056
1057 @node Mode Options
1058 @subsection Choosing Modes
1059
1060 You can run @value{GDBN} in various alternative modes---for example, in
1061 batch mode or quiet mode.
1062
1063 @table @code
1064 @anchor{-nx}
1065 @item -nx
1066 @itemx -n
1067 @cindex @code{--nx}
1068 @cindex @code{-n}
1069 Do not execute commands found in any initialization file.
1070 There are three init files, loaded in the following order:
1071
1072 @table @code
1073 @item @file{system.gdbinit}
1074 This is the system-wide init file.
1075 Its location is specified with the @code{--with-system-gdbinit}
1076 configure option (@pxref{System-wide configuration}).
1077 It is loaded first when @value{GDBN} starts, before command line options
1078 have been processed.
1079 @item @file{~/.gdbinit}
1080 This is the init file in your home directory.
1081 It is loaded next, after @file{system.gdbinit}, and before
1082 command options have been processed.
1083 @item @file{./.gdbinit}
1084 This is the init file in the current directory.
1085 It is loaded last, after command line options other than @code{-x} and
1086 @code{-ex} have been processed. Command line options @code{-x} and
1087 @code{-ex} are processed last, after @file{./.gdbinit} has been loaded.
1088 @end table
1089
1090 For further documentation on startup processing, @xref{Startup}.
1091 For documentation on how to write command files,
1092 @xref{Command Files,,Command Files}.
1093
1094 @anchor{-nh}
1095 @item -nh
1096 @cindex @code{--nh}
1097 Do not execute commands found in @file{~/.gdbinit}, the init file
1098 in your home directory.
1099 @xref{Startup}.
1100
1101 @item -quiet
1102 @itemx -silent
1103 @itemx -q
1104 @cindex @code{--quiet}
1105 @cindex @code{--silent}
1106 @cindex @code{-q}
1107 ``Quiet''. Do not print the introductory and copyright messages. These
1108 messages are also suppressed in batch mode.
1109
1110 @item -batch
1111 @cindex @code{--batch}
1112 Run in batch mode. Exit with status @code{0} after processing all the
1113 command files specified with @samp{-x} (and all commands from
1114 initialization files, if not inhibited with @samp{-n}). Exit with
1115 nonzero status if an error occurs in executing the @value{GDBN} commands
1116 in the command files. Batch mode also disables pagination, sets unlimited
1117 terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
1118 off} were in effect (@pxref{Messages/Warnings}).
1119
1120 Batch mode may be useful for running @value{GDBN} as a filter, for
1121 example to download and run a program on another computer; in order to
1122 make this more useful, the message
1123
1124 @smallexample
1125 Program exited normally.
1126 @end smallexample
1127
1128 @noindent
1129 (which is ordinarily issued whenever a program running under
1130 @value{GDBN} control terminates) is not issued when running in batch
1131 mode.
1132
1133 @item -batch-silent
1134 @cindex @code{--batch-silent}
1135 Run in batch mode exactly like @samp{-batch}, but totally silently. All
1136 @value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1137 unaffected). This is much quieter than @samp{-silent} and would be useless
1138 for an interactive session.
1139
1140 This is particularly useful when using targets that give @samp{Loading section}
1141 messages, for example.
1142
1143 Note that targets that give their output via @value{GDBN}, as opposed to
1144 writing directly to @code{stdout}, will also be made silent.
1145
1146 @item -return-child-result
1147 @cindex @code{--return-child-result}
1148 The return code from @value{GDBN} will be the return code from the child
1149 process (the process being debugged), with the following exceptions:
1150
1151 @itemize @bullet
1152 @item
1153 @value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1154 internal error. In this case the exit code is the same as it would have been
1155 without @samp{-return-child-result}.
1156 @item
1157 The user quits with an explicit value. E.g., @samp{quit 1}.
1158 @item
1159 The child process never runs, or is not allowed to terminate, in which case
1160 the exit code will be -1.
1161 @end itemize
1162
1163 This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1164 when @value{GDBN} is being used as a remote program loader or simulator
1165 interface.
1166
1167 @item -nowindows
1168 @itemx -nw
1169 @cindex @code{--nowindows}
1170 @cindex @code{-nw}
1171 ``No windows''. If @value{GDBN} comes with a graphical user interface
1172 (GUI) built in, then this option tells @value{GDBN} to only use the command-line
1173 interface. If no GUI is available, this option has no effect.
1174
1175 @item -windows
1176 @itemx -w
1177 @cindex @code{--windows}
1178 @cindex @code{-w}
1179 If @value{GDBN} includes a GUI, then this option requires it to be
1180 used if possible.
1181
1182 @item -cd @var{directory}
1183 @cindex @code{--cd}
1184 Run @value{GDBN} using @var{directory} as its working directory,
1185 instead of the current directory.
1186
1187 @item -data-directory @var{directory}
1188 @itemx -D @var{directory}
1189 @cindex @code{--data-directory}
1190 @cindex @code{-D}
1191 Run @value{GDBN} using @var{directory} as its data directory.
1192 The data directory is where @value{GDBN} searches for its
1193 auxiliary files. @xref{Data Files}.
1194
1195 @item -fullname
1196 @itemx -f
1197 @cindex @code{--fullname}
1198 @cindex @code{-f}
1199 @sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1200 subprocess. It tells @value{GDBN} to output the full file name and line
1201 number in a standard, recognizable fashion each time a stack frame is
1202 displayed (which includes each time your program stops). This
1203 recognizable format looks like two @samp{\032} characters, followed by
1204 the file name, line number and character position separated by colons,
1205 and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1206 @samp{\032} characters as a signal to display the source code for the
1207 frame.
1208
1209 @item -annotate @var{level}
1210 @cindex @code{--annotate}
1211 This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1212 effect is identical to using @samp{set annotate @var{level}}
1213 (@pxref{Annotations}). The annotation @var{level} controls how much
1214 information @value{GDBN} prints together with its prompt, values of
1215 expressions, source lines, and other types of output. Level 0 is the
1216 normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1217 @sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1218 that control @value{GDBN}, and level 2 has been deprecated.
1219
1220 The annotation mechanism has largely been superseded by @sc{gdb/mi}
1221 (@pxref{GDB/MI}).
1222
1223 @item --args
1224 @cindex @code{--args}
1225 Change interpretation of command line so that arguments following the
1226 executable file are passed as command line arguments to the inferior.
1227 This option stops option processing.
1228
1229 @item -baud @var{bps}
1230 @itemx -b @var{bps}
1231 @cindex @code{--baud}
1232 @cindex @code{-b}
1233 Set the line speed (baud rate or bits per second) of any serial
1234 interface used by @value{GDBN} for remote debugging.
1235
1236 @item -l @var{timeout}
1237 @cindex @code{-l}
1238 Set the timeout (in seconds) of any communication used by @value{GDBN}
1239 for remote debugging.
1240
1241 @item -tty @var{device}
1242 @itemx -t @var{device}
1243 @cindex @code{--tty}
1244 @cindex @code{-t}
1245 Run using @var{device} for your program's standard input and output.
1246 @c FIXME: kingdon thinks there is more to -tty. Investigate.
1247
1248 @c resolve the situation of these eventually
1249 @item -tui
1250 @cindex @code{--tui}
1251 Activate the @dfn{Text User Interface} when starting. The Text User
1252 Interface manages several text windows on the terminal, showing
1253 source, assembly, registers and @value{GDBN} command outputs
1254 (@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this
1255 option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
1256 Using @value{GDBN} under @sc{gnu} Emacs}).
1257
1258 @item -interpreter @var{interp}
1259 @cindex @code{--interpreter}
1260 Use the interpreter @var{interp} for interface with the controlling
1261 program or device. This option is meant to be set by programs which
1262 communicate with @value{GDBN} using it as a back end.
1263 @xref{Interpreters, , Command Interpreters}.
1264
1265 @samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
1266 @value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
1267 The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
1268 previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1269 selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1270 @sc{gdb/mi} interfaces are no longer supported.
1271
1272 @item -write
1273 @cindex @code{--write}
1274 Open the executable and core files for both reading and writing. This
1275 is equivalent to the @samp{set write on} command inside @value{GDBN}
1276 (@pxref{Patching}).
1277
1278 @item -statistics
1279 @cindex @code{--statistics}
1280 This option causes @value{GDBN} to print statistics about time and
1281 memory usage after it completes each command and returns to the prompt.
1282
1283 @item -version
1284 @cindex @code{--version}
1285 This option causes @value{GDBN} to print its version number and
1286 no-warranty blurb, and exit.
1287
1288 @item -configuration
1289 @cindex @code{--configuration}
1290 This option causes @value{GDBN} to print details about its build-time
1291 configuration parameters, and then exit. These details can be
1292 important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}).
1293
1294 @end table
1295
1296 @node Startup
1297 @subsection What @value{GDBN} Does During Startup
1298 @cindex @value{GDBN} startup
1299
1300 Here's the description of what @value{GDBN} does during session startup:
1301
1302 @enumerate
1303 @item
1304 Sets up the command interpreter as specified by the command line
1305 (@pxref{Mode Options, interpreter}).
1306
1307 @item
1308 @cindex init file
1309 Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1310 used when building @value{GDBN}; @pxref{System-wide configuration,
1311 ,System-wide configuration and settings}) and executes all the commands in
1312 that file.
1313
1314 @anchor{Home Directory Init File}
1315 @item
1316 Reads the init file (if any) in your home directory@footnote{On
1317 DOS/Windows systems, the home directory is the one pointed to by the
1318 @code{HOME} environment variable.} and executes all the commands in
1319 that file.
1320
1321 @anchor{Option -init-eval-command}
1322 @item
1323 Executes commands and command files specified by the @samp{-iex} and
1324 @samp{-ix} options in their specified order. Usually you should use the
1325 @samp{-ex} and @samp{-x} options instead, but this way you can apply
1326 settings before @value{GDBN} init files get executed and before inferior
1327 gets loaded.
1328
1329 @item
1330 Processes command line options and operands.
1331
1332 @anchor{Init File in the Current Directory during Startup}
1333 @item
1334 Reads and executes the commands from init file (if any) in the current
1335 working directory as long as @samp{set auto-load local-gdbinit} is set to
1336 @samp{on} (@pxref{Init File in the Current Directory}).
1337 This is only done if the current directory is
1338 different from your home directory. Thus, you can have more than one
1339 init file, one generic in your home directory, and another, specific
1340 to the program you are debugging, in the directory where you invoke
1341 @value{GDBN}.
1342
1343 @item
1344 If the command line specified a program to debug, or a process to
1345 attach to, or a core file, @value{GDBN} loads any auto-loaded
1346 scripts provided for the program or for its loaded shared libraries.
1347 @xref{Auto-loading}.
1348
1349 If you wish to disable the auto-loading during startup,
1350 you must do something like the following:
1351
1352 @smallexample
1353 $ gdb -iex "set auto-load python-scripts off" myprogram
1354 @end smallexample
1355
1356 Option @samp{-ex} does not work because the auto-loading is then turned
1357 off too late.
1358
1359 @item
1360 Executes commands and command files specified by the @samp{-ex} and
1361 @samp{-x} options in their specified order. @xref{Command Files}, for
1362 more details about @value{GDBN} command files.
1363
1364 @item
1365 Reads the command history recorded in the @dfn{history file}.
1366 @xref{Command History}, for more details about the command history and the
1367 files where @value{GDBN} records it.
1368 @end enumerate
1369
1370 Init files use the same syntax as @dfn{command files} (@pxref{Command
1371 Files}) and are processed by @value{GDBN} in the same way. The init
1372 file in your home directory can set options (such as @samp{set
1373 complaints}) that affect subsequent processing of command line options
1374 and operands. Init files are not executed if you use the @samp{-nx}
1375 option (@pxref{Mode Options, ,Choosing Modes}).
1376
1377 To display the list of init files loaded by gdb at startup, you
1378 can use @kbd{gdb --help}.
1379
1380 @cindex init file name
1381 @cindex @file{.gdbinit}
1382 @cindex @file{gdb.ini}
1383 The @value{GDBN} init files are normally called @file{.gdbinit}.
1384 The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1385 the limitations of file names imposed by DOS filesystems. The Windows
1386 port of @value{GDBN} uses the standard name, but if it finds a
1387 @file{gdb.ini} file in your home directory, it warns you about that
1388 and suggests to rename the file to the standard name.
1389
1390
1391 @node Quitting GDB
1392 @section Quitting @value{GDBN}
1393 @cindex exiting @value{GDBN}
1394 @cindex leaving @value{GDBN}
1395
1396 @table @code
1397 @kindex quit @r{[}@var{expression}@r{]}
1398 @kindex q @r{(@code{quit})}
1399 @item quit @r{[}@var{expression}@r{]}
1400 @itemx q
1401 To exit @value{GDBN}, use the @code{quit} command (abbreviated
1402 @code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
1403 do not supply @var{expression}, @value{GDBN} will terminate normally;
1404 otherwise it will terminate using the result of @var{expression} as the
1405 error code.
1406 @end table
1407
1408 @cindex interrupt
1409 An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
1410 terminates the action of any @value{GDBN} command that is in progress and
1411 returns to @value{GDBN} command level. It is safe to type the interrupt
1412 character at any time because @value{GDBN} does not allow it to take effect
1413 until a time when it is safe.
1414
1415 If you have been using @value{GDBN} to control an attached process or
1416 device, you can release it with the @code{detach} command
1417 (@pxref{Attach, ,Debugging an Already-running Process}).
1418
1419 @node Shell Commands
1420 @section Shell Commands
1421
1422 If you need to execute occasional shell commands during your
1423 debugging session, there is no need to leave or suspend @value{GDBN}; you can
1424 just use the @code{shell} command.
1425
1426 @table @code
1427 @kindex shell
1428 @kindex !
1429 @cindex shell escape
1430 @item shell @var{command-string}
1431 @itemx !@var{command-string}
1432 Invoke a standard shell to execute @var{command-string}.
1433 Note that no space is needed between @code{!} and @var{command-string}.
1434 If it exists, the environment variable @code{SHELL} determines which
1435 shell to run. Otherwise @value{GDBN} uses the default shell
1436 (@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
1437 @end table
1438
1439 The utility @code{make} is often needed in development environments.
1440 You do not have to use the @code{shell} command for this purpose in
1441 @value{GDBN}:
1442
1443 @table @code
1444 @kindex make
1445 @cindex calling make
1446 @item make @var{make-args}
1447 Execute the @code{make} program with the specified
1448 arguments. This is equivalent to @samp{shell make @var{make-args}}.
1449 @end table
1450
1451 @node Logging Output
1452 @section Logging Output
1453 @cindex logging @value{GDBN} output
1454 @cindex save @value{GDBN} output to a file
1455
1456 You may want to save the output of @value{GDBN} commands to a file.
1457 There are several commands to control @value{GDBN}'s logging.
1458
1459 @table @code
1460 @kindex set logging
1461 @item set logging on
1462 Enable logging.
1463 @item set logging off
1464 Disable logging.
1465 @cindex logging file name
1466 @item set logging file @var{file}
1467 Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1468 @item set logging overwrite [on|off]
1469 By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1470 you want @code{set logging on} to overwrite the logfile instead.
1471 @item set logging redirect [on|off]
1472 By default, @value{GDBN} output will go to both the terminal and the logfile.
1473 Set @code{redirect} if you want output to go only to the log file.
1474 @kindex show logging
1475 @item show logging
1476 Show the current values of the logging settings.
1477 @end table
1478
1479 @node Commands
1480 @chapter @value{GDBN} Commands
1481
1482 You can abbreviate a @value{GDBN} command to the first few letters of the command
1483 name, if that abbreviation is unambiguous; and you can repeat certain
1484 @value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1485 key to get @value{GDBN} to fill out the rest of a word in a command (or to
1486 show you the alternatives available, if there is more than one possibility).
1487
1488 @menu
1489 * Command Syntax:: How to give commands to @value{GDBN}
1490 * Completion:: Command completion
1491 * Help:: How to ask @value{GDBN} for help
1492 @end menu
1493
1494 @node Command Syntax
1495 @section Command Syntax
1496
1497 A @value{GDBN} command is a single line of input. There is no limit on
1498 how long it can be. It starts with a command name, which is followed by
1499 arguments whose meaning depends on the command name. For example, the
1500 command @code{step} accepts an argument which is the number of times to
1501 step, as in @samp{step 5}. You can also use the @code{step} command
1502 with no arguments. Some commands do not allow any arguments.
1503
1504 @cindex abbreviation
1505 @value{GDBN} command names may always be truncated if that abbreviation is
1506 unambiguous. Other possible command abbreviations are listed in the
1507 documentation for individual commands. In some cases, even ambiguous
1508 abbreviations are allowed; for example, @code{s} is specially defined as
1509 equivalent to @code{step} even though there are other commands whose
1510 names start with @code{s}. You can test abbreviations by using them as
1511 arguments to the @code{help} command.
1512
1513 @cindex repeating commands
1514 @kindex RET @r{(repeat last command)}
1515 A blank line as input to @value{GDBN} (typing just @key{RET}) means to
1516 repeat the previous command. Certain commands (for example, @code{run})
1517 will not repeat this way; these are commands whose unintentional
1518 repetition might cause trouble and which you are unlikely to want to
1519 repeat. User-defined commands can disable this feature; see
1520 @ref{Define, dont-repeat}.
1521
1522 The @code{list} and @code{x} commands, when you repeat them with
1523 @key{RET}, construct new arguments rather than repeating
1524 exactly as typed. This permits easy scanning of source or memory.
1525
1526 @value{GDBN} can also use @key{RET} in another way: to partition lengthy
1527 output, in a way similar to the common utility @code{more}
1528 (@pxref{Screen Size,,Screen Size}). Since it is easy to press one
1529 @key{RET} too many in this situation, @value{GDBN} disables command
1530 repetition after any command that generates this sort of display.
1531
1532 @kindex # @r{(a comment)}
1533 @cindex comment
1534 Any text from a @kbd{#} to the end of the line is a comment; it does
1535 nothing. This is useful mainly in command files (@pxref{Command
1536 Files,,Command Files}).
1537
1538 @cindex repeating command sequences
1539 @kindex Ctrl-o @r{(operate-and-get-next)}
1540 The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
1541 commands. This command accepts the current line, like @key{RET}, and
1542 then fetches the next line relative to the current line from the history
1543 for editing.
1544
1545 @node Completion
1546 @section Command Completion
1547
1548 @cindex completion
1549 @cindex word completion
1550 @value{GDBN} can fill in the rest of a word in a command for you, if there is
1551 only one possibility; it can also show you what the valid possibilities
1552 are for the next word in a command, at any time. This works for @value{GDBN}
1553 commands, @value{GDBN} subcommands, and the names of symbols in your program.
1554
1555 Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1556 of a word. If there is only one possibility, @value{GDBN} fills in the
1557 word, and waits for you to finish the command (or press @key{RET} to
1558 enter it). For example, if you type
1559
1560 @c FIXME "@key" does not distinguish its argument sufficiently to permit
1561 @c complete accuracy in these examples; space introduced for clarity.
1562 @c If texinfo enhancements make it unnecessary, it would be nice to
1563 @c replace " @key" by "@key" in the following...
1564 @smallexample
1565 (@value{GDBP}) info bre @key{TAB}
1566 @end smallexample
1567
1568 @noindent
1569 @value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1570 the only @code{info} subcommand beginning with @samp{bre}:
1571
1572 @smallexample
1573 (@value{GDBP}) info breakpoints
1574 @end smallexample
1575
1576 @noindent
1577 You can either press @key{RET} at this point, to run the @code{info
1578 breakpoints} command, or backspace and enter something else, if
1579 @samp{breakpoints} does not look like the command you expected. (If you
1580 were sure you wanted @code{info breakpoints} in the first place, you
1581 might as well just type @key{RET} immediately after @samp{info bre},
1582 to exploit command abbreviations rather than command completion).
1583
1584 If there is more than one possibility for the next word when you press
1585 @key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1586 characters and try again, or just press @key{TAB} a second time;
1587 @value{GDBN} displays all the possible completions for that word. For
1588 example, you might want to set a breakpoint on a subroutine whose name
1589 begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1590 just sounds the bell. Typing @key{TAB} again displays all the
1591 function names in your program that begin with those characters, for
1592 example:
1593
1594 @smallexample
1595 (@value{GDBP}) b make_ @key{TAB}
1596 @exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
1597 make_a_section_from_file make_environ
1598 make_abs_section make_function_type
1599 make_blockvector make_pointer_type
1600 make_cleanup make_reference_type
1601 make_command make_symbol_completion_list
1602 (@value{GDBP}) b make_
1603 @end smallexample
1604
1605 @noindent
1606 After displaying the available possibilities, @value{GDBN} copies your
1607 partial input (@samp{b make_} in the example) so you can finish the
1608 command.
1609
1610 If you just want to see the list of alternatives in the first place, you
1611 can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
1612 means @kbd{@key{META} ?}. You can type this either by holding down a
1613 key designated as the @key{META} shift on your keyboard (if there is
1614 one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
1615
1616 If the number of possible completions is large, @value{GDBN} will
1617 print as much of the list as it has collected, as well as a message
1618 indicating that the list may be truncated.
1619
1620 @smallexample
1621 (@value{GDBP}) b m@key{TAB}@key{TAB}
1622 main
1623 <... the rest of the possible completions ...>
1624 *** List may be truncated, max-completions reached. ***
1625 (@value{GDBP}) b m
1626 @end smallexample
1627
1628 @noindent
1629 This behavior can be controlled with the following commands:
1630
1631 @table @code
1632 @kindex set max-completions
1633 @item set max-completions @var{limit}
1634 @itemx set max-completions unlimited
1635 Set the maximum number of completion candidates. @value{GDBN} will
1636 stop looking for more completions once it collects this many candidates.
1637 This is useful when completing on things like function names as collecting
1638 all the possible candidates can be time consuming.
1639 The default value is 200. A value of zero disables tab-completion.
1640 Note that setting either no limit or a very large limit can make
1641 completion slow.
1642 @kindex show max-completions
1643 @item show max-completions
1644 Show the maximum number of candidates that @value{GDBN} will collect and show
1645 during completion.
1646 @end table
1647
1648 @cindex quotes in commands
1649 @cindex completion of quoted strings
1650 Sometimes the string you need, while logically a ``word'', may contain
1651 parentheses or other characters that @value{GDBN} normally excludes from
1652 its notion of a word. To permit word completion to work in this
1653 situation, you may enclose words in @code{'} (single quote marks) in
1654 @value{GDBN} commands.
1655
1656 A likely situation where you might need this is in typing an
1657 expression that involves a C@t{++} symbol name with template
1658 parameters. This is because when completing expressions, GDB treats
1659 the @samp{<} character as word delimiter, assuming that it's the
1660 less-than comparison operator (@pxref{C Operators, , C and C@t{++}
1661 Operators}).
1662
1663 For example, when you want to call a C@t{++} template function
1664 interactively using the @code{print} or @code{call} commands, you may
1665 need to distinguish whether you mean the version of @code{name} that
1666 was specialized for @code{int}, @code{name<int>()}, or the version
1667 that was specialized for @code{float}, @code{name<float>()}. To use
1668 the word-completion facilities in this situation, type a single quote
1669 @code{'} at the beginning of the function name. This alerts
1670 @value{GDBN} that it may need to consider more information than usual
1671 when you press @key{TAB} or @kbd{M-?} to request word completion:
1672
1673 @smallexample
1674 (@value{GDBP}) p 'func< @kbd{M-?}
1675 func<int>() func<float>()
1676 (@value{GDBP}) p 'func<
1677 @end smallexample
1678
1679 When setting breakpoints however (@pxref{Specify Location}), you don't
1680 usually need to type a quote before the function name, because
1681 @value{GDBN} understands that you want to set a breakpoint on a
1682 function:
1683
1684 @smallexample
1685 (@value{GDBP}) b func< @kbd{M-?}
1686 func<int>() func<float>()
1687 (@value{GDBP}) b func<
1688 @end smallexample
1689
1690 This is true even in the case of typing the name of C@t{++} overloaded
1691 functions (multiple definitions of the same function, distinguished by
1692 argument type). For example, when you want to set a breakpoint you
1693 don't need to distinguish whether you mean the version of @code{name}
1694 that takes an @code{int} parameter, @code{name(int)}, or the version
1695 that takes a @code{float} parameter, @code{name(float)}.
1696
1697 @smallexample
1698 (@value{GDBP}) b bubble( @kbd{M-?}
1699 bubble(int) bubble(double)
1700 (@value{GDBP}) b bubble(dou @kbd{M-?}
1701 bubble(double)
1702 @end smallexample
1703
1704 See @ref{quoting names} for a description of other scenarios that
1705 require quoting.
1706
1707 For more information about overloaded functions, see @ref{C Plus Plus
1708 Expressions, ,C@t{++} Expressions}. You can use the command @code{set
1709 overload-resolution off} to disable overload resolution;
1710 see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
1711
1712 @cindex completion of structure field names
1713 @cindex structure field name completion
1714 @cindex completion of union field names
1715 @cindex union field name completion
1716 When completing in an expression which looks up a field in a
1717 structure, @value{GDBN} also tries@footnote{The completer can be
1718 confused by certain kinds of invalid expressions. Also, it only
1719 examines the static type of the expression, not the dynamic type.} to
1720 limit completions to the field names available in the type of the
1721 left-hand-side:
1722
1723 @smallexample
1724 (@value{GDBP}) p gdb_stdout.@kbd{M-?}
1725 magic to_fputs to_rewind
1726 to_data to_isatty to_write
1727 to_delete to_put to_write_async_safe
1728 to_flush to_read
1729 @end smallexample
1730
1731 @noindent
1732 This is because the @code{gdb_stdout} is a variable of the type
1733 @code{struct ui_file} that is defined in @value{GDBN} sources as
1734 follows:
1735
1736 @smallexample
1737 struct ui_file
1738 @{
1739 int *magic;
1740 ui_file_flush_ftype *to_flush;
1741 ui_file_write_ftype *to_write;
1742 ui_file_write_async_safe_ftype *to_write_async_safe;
1743 ui_file_fputs_ftype *to_fputs;
1744 ui_file_read_ftype *to_read;
1745 ui_file_delete_ftype *to_delete;
1746 ui_file_isatty_ftype *to_isatty;
1747 ui_file_rewind_ftype *to_rewind;
1748 ui_file_put_ftype *to_put;
1749 void *to_data;
1750 @}
1751 @end smallexample
1752
1753
1754 @node Help
1755 @section Getting Help
1756 @cindex online documentation
1757 @kindex help
1758
1759 You can always ask @value{GDBN} itself for information on its commands,
1760 using the command @code{help}.
1761
1762 @table @code
1763 @kindex h @r{(@code{help})}
1764 @item help
1765 @itemx h
1766 You can use @code{help} (abbreviated @code{h}) with no arguments to
1767 display a short list of named classes of commands:
1768
1769 @smallexample
1770 (@value{GDBP}) help
1771 List of classes of commands:
1772
1773 aliases -- Aliases of other commands
1774 breakpoints -- Making program stop at certain points
1775 data -- Examining data
1776 files -- Specifying and examining files
1777 internals -- Maintenance commands
1778 obscure -- Obscure features
1779 running -- Running the program
1780 stack -- Examining the stack
1781 status -- Status inquiries
1782 support -- Support facilities
1783 tracepoints -- Tracing of program execution without
1784 stopping the program
1785 user-defined -- User-defined commands
1786
1787 Type "help" followed by a class name for a list of
1788 commands in that class.
1789 Type "help" followed by command name for full
1790 documentation.
1791 Command name abbreviations are allowed if unambiguous.
1792 (@value{GDBP})
1793 @end smallexample
1794 @c the above line break eliminates huge line overfull...
1795
1796 @item help @var{class}
1797 Using one of the general help classes as an argument, you can get a
1798 list of the individual commands in that class. For example, here is the
1799 help display for the class @code{status}:
1800
1801 @smallexample
1802 (@value{GDBP}) help status
1803 Status inquiries.
1804
1805 List of commands:
1806
1807 @c Line break in "show" line falsifies real output, but needed
1808 @c to fit in smallbook page size.
1809 info -- Generic command for showing things
1810 about the program being debugged
1811 show -- Generic command for showing things
1812 about the debugger
1813
1814 Type "help" followed by command name for full
1815 documentation.
1816 Command name abbreviations are allowed if unambiguous.
1817 (@value{GDBP})
1818 @end smallexample
1819
1820 @item help @var{command}
1821 With a command name as @code{help} argument, @value{GDBN} displays a
1822 short paragraph on how to use that command.
1823
1824 @kindex apropos
1825 @item apropos @var{args}
1826 The @code{apropos} command searches through all of the @value{GDBN}
1827 commands, and their documentation, for the regular expression specified in
1828 @var{args}. It prints out all matches found. For example:
1829
1830 @smallexample
1831 apropos alias
1832 @end smallexample
1833
1834 @noindent
1835 results in:
1836
1837 @smallexample
1838 @c @group
1839 alias -- Define a new command that is an alias of an existing command
1840 aliases -- Aliases of other commands
1841 d -- Delete some breakpoints or auto-display expressions
1842 del -- Delete some breakpoints or auto-display expressions
1843 delete -- Delete some breakpoints or auto-display expressions
1844 @c @end group
1845 @end smallexample
1846
1847 @kindex complete
1848 @item complete @var{args}
1849 The @code{complete @var{args}} command lists all the possible completions
1850 for the beginning of a command. Use @var{args} to specify the beginning of the
1851 command you want completed. For example:
1852
1853 @smallexample
1854 complete i
1855 @end smallexample
1856
1857 @noindent results in:
1858
1859 @smallexample
1860 @group
1861 if
1862 ignore
1863 info
1864 inspect
1865 @end group
1866 @end smallexample
1867
1868 @noindent This is intended for use by @sc{gnu} Emacs.
1869 @end table
1870
1871 In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1872 and @code{show} to inquire about the state of your program, or the state
1873 of @value{GDBN} itself. Each command supports many topics of inquiry; this
1874 manual introduces each of them in the appropriate context. The listings
1875 under @code{info} and under @code{show} in the Command, Variable, and
1876 Function Index point to all the sub-commands. @xref{Command and Variable
1877 Index}.
1878
1879 @c @group
1880 @table @code
1881 @kindex info
1882 @kindex i @r{(@code{info})}
1883 @item info
1884 This command (abbreviated @code{i}) is for describing the state of your
1885 program. For example, you can show the arguments passed to a function
1886 with @code{info args}, list the registers currently in use with @code{info
1887 registers}, or list the breakpoints you have set with @code{info breakpoints}.
1888 You can get a complete list of the @code{info} sub-commands with
1889 @w{@code{help info}}.
1890
1891 @kindex set
1892 @item set
1893 You can assign the result of an expression to an environment variable with
1894 @code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1895 @code{set prompt $}.
1896
1897 @kindex show
1898 @item show
1899 In contrast to @code{info}, @code{show} is for describing the state of
1900 @value{GDBN} itself.
1901 You can change most of the things you can @code{show}, by using the
1902 related command @code{set}; for example, you can control what number
1903 system is used for displays with @code{set radix}, or simply inquire
1904 which is currently in use with @code{show radix}.
1905
1906 @kindex info set
1907 To display all the settable parameters and their current
1908 values, you can use @code{show} with no arguments; you may also use
1909 @code{info set}. Both commands produce the same display.
1910 @c FIXME: "info set" violates the rule that "info" is for state of
1911 @c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1912 @c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1913 @end table
1914 @c @end group
1915
1916 Here are several miscellaneous @code{show} subcommands, all of which are
1917 exceptional in lacking corresponding @code{set} commands:
1918
1919 @table @code
1920 @kindex show version
1921 @cindex @value{GDBN} version number
1922 @item show version
1923 Show what version of @value{GDBN} is running. You should include this
1924 information in @value{GDBN} bug-reports. If multiple versions of
1925 @value{GDBN} are in use at your site, you may need to determine which
1926 version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1927 commands are introduced, and old ones may wither away. Also, many
1928 system vendors ship variant versions of @value{GDBN}, and there are
1929 variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
1930 The version number is the same as the one announced when you start
1931 @value{GDBN}.
1932
1933 @kindex show copying
1934 @kindex info copying
1935 @cindex display @value{GDBN} copyright
1936 @item show copying
1937 @itemx info copying
1938 Display information about permission for copying @value{GDBN}.
1939
1940 @kindex show warranty
1941 @kindex info warranty
1942 @item show warranty
1943 @itemx info warranty
1944 Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
1945 if your version of @value{GDBN} comes with one.
1946
1947 @kindex show configuration
1948 @item show configuration
1949 Display detailed information about the way @value{GDBN} was configured
1950 when it was built. This displays the optional arguments passed to the
1951 @file{configure} script and also configuration parameters detected
1952 automatically by @command{configure}. When reporting a @value{GDBN}
1953 bug (@pxref{GDB Bugs}), it is important to include this information in
1954 your report.
1955
1956 @end table
1957
1958 @node Running
1959 @chapter Running Programs Under @value{GDBN}
1960
1961 When you run a program under @value{GDBN}, you must first generate
1962 debugging information when you compile it.
1963
1964 You may start @value{GDBN} with its arguments, if any, in an environment
1965 of your choice. If you are doing native debugging, you may redirect
1966 your program's input and output, debug an already running process, or
1967 kill a child process.
1968
1969 @menu
1970 * Compilation:: Compiling for debugging
1971 * Starting:: Starting your program
1972 * Arguments:: Your program's arguments
1973 * Environment:: Your program's environment
1974
1975 * Working Directory:: Your program's working directory
1976 * Input/Output:: Your program's input and output
1977 * Attach:: Debugging an already-running process
1978 * Kill Process:: Killing the child process
1979
1980 * Inferiors and Programs:: Debugging multiple inferiors and programs
1981 * Threads:: Debugging programs with multiple threads
1982 * Forks:: Debugging forks
1983 * Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
1984 @end menu
1985
1986 @node Compilation
1987 @section Compiling for Debugging
1988
1989 In order to debug a program effectively, you need to generate
1990 debugging information when you compile it. This debugging information
1991 is stored in the object file; it describes the data type of each
1992 variable or function and the correspondence between source line numbers
1993 and addresses in the executable code.
1994
1995 To request debugging information, specify the @samp{-g} option when you run
1996 the compiler.
1997
1998 Programs that are to be shipped to your customers are compiled with
1999 optimizations, using the @samp{-O} compiler option. However, some
2000 compilers are unable to handle the @samp{-g} and @samp{-O} options
2001 together. Using those compilers, you cannot generate optimized
2002 executables containing debugging information.
2003
2004 @value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
2005 without @samp{-O}, making it possible to debug optimized code. We
2006 recommend that you @emph{always} use @samp{-g} whenever you compile a
2007 program. You may think your program is correct, but there is no sense
2008 in pushing your luck. For more information, see @ref{Optimized Code}.
2009
2010 Older versions of the @sc{gnu} C compiler permitted a variant option
2011 @w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
2012 format; if your @sc{gnu} C compiler has this option, do not use it.
2013
2014 @value{GDBN} knows about preprocessor macros and can show you their
2015 expansion (@pxref{Macros}). Most compilers do not include information
2016 about preprocessor macros in the debugging information if you specify
2017 the @option{-g} flag alone. Version 3.1 and later of @value{NGCC},
2018 the @sc{gnu} C compiler, provides macro information if you are using
2019 the DWARF debugging format, and specify the option @option{-g3}.
2020
2021 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
2022 gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more
2023 information on @value{NGCC} options affecting debug information.
2024
2025 You will have the best debugging experience if you use the latest
2026 version of the DWARF debugging format that your compiler supports.
2027 DWARF is currently the most expressive and best supported debugging
2028 format in @value{GDBN}.
2029
2030 @need 2000
2031 @node Starting
2032 @section Starting your Program
2033 @cindex starting
2034 @cindex running
2035
2036 @table @code
2037 @kindex run
2038 @kindex r @r{(@code{run})}
2039 @item run
2040 @itemx r
2041 Use the @code{run} command to start your program under @value{GDBN}.
2042 You must first specify the program name with an argument to
2043 @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
2044 @value{GDBN}}), or by using the @code{file} or @code{exec-file}
2045 command (@pxref{Files, ,Commands to Specify Files}).
2046
2047 @end table
2048
2049 If you are running your program in an execution environment that
2050 supports processes, @code{run} creates an inferior process and makes
2051 that process run your program. In some environments without processes,
2052 @code{run} jumps to the start of your program. Other targets,
2053 like @samp{remote}, are always running. If you get an error
2054 message like this one:
2055
2056 @smallexample
2057 The "remote" target does not support "run".
2058 Try "help target" or "continue".
2059 @end smallexample
2060
2061 @noindent
2062 then use @code{continue} to run your program. You may need @code{load}
2063 first (@pxref{load}).
2064
2065 The execution of a program is affected by certain information it
2066 receives from its superior. @value{GDBN} provides ways to specify this
2067 information, which you must do @emph{before} starting your program. (You
2068 can change it after starting your program, but such changes only affect
2069 your program the next time you start it.) This information may be
2070 divided into four categories:
2071
2072 @table @asis
2073 @item The @emph{arguments.}
2074 Specify the arguments to give your program as the arguments of the
2075 @code{run} command. If a shell is available on your target, the shell
2076 is used to pass the arguments, so that you may use normal conventions
2077 (such as wildcard expansion or variable substitution) in describing
2078 the arguments.
2079 In Unix systems, you can control which shell is used with the
2080 @code{SHELL} environment variable. If you do not define @code{SHELL},
2081 @value{GDBN} uses the default shell (@file{/bin/sh}). You can disable
2082 use of any shell with the @code{set startup-with-shell} command (see
2083 below for details).
2084
2085 @item The @emph{environment.}
2086 Your program normally inherits its environment from @value{GDBN}, but you can
2087 use the @value{GDBN} commands @code{set environment} and @code{unset
2088 environment} to change parts of the environment that affect
2089 your program. @xref{Environment, ,Your Program's Environment}.
2090
2091 @item The @emph{working directory.}
2092 You can set your program's working directory with the command
2093 @kbd{set cwd}. If you do not set any working directory with this
2094 command, your program will inherit @value{GDBN}'s working directory if
2095 native debugging, or the remote server's working directory if remote
2096 debugging. @xref{Working Directory, ,Your Program's Working
2097 Directory}.
2098
2099 @item The @emph{standard input and output.}
2100 Your program normally uses the same device for standard input and
2101 standard output as @value{GDBN} is using. You can redirect input and output
2102 in the @code{run} command line, or you can use the @code{tty} command to
2103 set a different device for your program.
2104 @xref{Input/Output, ,Your Program's Input and Output}.
2105
2106 @cindex pipes
2107 @emph{Warning:} While input and output redirection work, you cannot use
2108 pipes to pass the output of the program you are debugging to another
2109 program; if you attempt this, @value{GDBN} is likely to wind up debugging the
2110 wrong program.
2111 @end table
2112
2113 When you issue the @code{run} command, your program begins to execute
2114 immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
2115 of how to arrange for your program to stop. Once your program has
2116 stopped, you may call functions in your program, using the @code{print}
2117 or @code{call} commands. @xref{Data, ,Examining Data}.
2118
2119 If the modification time of your symbol file has changed since the last
2120 time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
2121 table, and reads it again. When it does this, @value{GDBN} tries to retain
2122 your current breakpoints.
2123
2124 @table @code
2125 @kindex start
2126 @item start
2127 @cindex run to main procedure
2128 The name of the main procedure can vary from language to language.
2129 With C or C@t{++}, the main procedure name is always @code{main}, but
2130 other languages such as Ada do not require a specific name for their
2131 main procedure. The debugger provides a convenient way to start the
2132 execution of the program and to stop at the beginning of the main
2133 procedure, depending on the language used.
2134
2135 The @samp{start} command does the equivalent of setting a temporary
2136 breakpoint at the beginning of the main procedure and then invoking
2137 the @samp{run} command.
2138
2139 @cindex elaboration phase
2140 Some programs contain an @dfn{elaboration} phase where some startup code is
2141 executed before the main procedure is called. This depends on the
2142 languages used to write your program. In C@t{++}, for instance,
2143 constructors for static and global objects are executed before
2144 @code{main} is called. It is therefore possible that the debugger stops
2145 before reaching the main procedure. However, the temporary breakpoint
2146 will remain to halt execution.
2147
2148 Specify the arguments to give to your program as arguments to the
2149 @samp{start} command. These arguments will be given verbatim to the
2150 underlying @samp{run} command. Note that the same arguments will be
2151 reused if no argument is provided during subsequent calls to
2152 @samp{start} or @samp{run}.
2153
2154 It is sometimes necessary to debug the program during elaboration. In
2155 these cases, using the @code{start} command would stop the execution
2156 of your program too late, as the program would have already completed
2157 the elaboration phase. Under these circumstances, either insert
2158 breakpoints in your elaboration code before running your program or
2159 use the @code{starti} command.
2160
2161 @kindex starti
2162 @item starti
2163 @cindex run to first instruction
2164 The @samp{starti} command does the equivalent of setting a temporary
2165 breakpoint at the first instruction of a program's execution and then
2166 invoking the @samp{run} command. For programs containing an
2167 elaboration phase, the @code{starti} command will stop execution at
2168 the start of the elaboration phase.
2169
2170 @anchor{set exec-wrapper}
2171 @kindex set exec-wrapper
2172 @item set exec-wrapper @var{wrapper}
2173 @itemx show exec-wrapper
2174 @itemx unset exec-wrapper
2175 When @samp{exec-wrapper} is set, the specified wrapper is used to
2176 launch programs for debugging. @value{GDBN} starts your program
2177 with a shell command of the form @kbd{exec @var{wrapper}
2178 @var{program}}. Quoting is added to @var{program} and its
2179 arguments, but not to @var{wrapper}, so you should add quotes if
2180 appropriate for your shell. The wrapper runs until it executes
2181 your program, and then @value{GDBN} takes control.
2182
2183 You can use any program that eventually calls @code{execve} with
2184 its arguments as a wrapper. Several standard Unix utilities do
2185 this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
2186 with @code{exec "$@@"} will also work.
2187
2188 For example, you can use @code{env} to pass an environment variable to
2189 the debugged program, without setting the variable in your shell's
2190 environment:
2191
2192 @smallexample
2193 (@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
2194 (@value{GDBP}) run
2195 @end smallexample
2196
2197 This command is available when debugging locally on most targets, excluding
2198 @sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2199
2200 @kindex set startup-with-shell
2201 @anchor{set startup-with-shell}
2202 @item set startup-with-shell
2203 @itemx set startup-with-shell on
2204 @itemx set startup-with-shell off
2205 @itemx show startup-with-shell
2206 On Unix systems, by default, if a shell is available on your target,
2207 @value{GDBN}) uses it to start your program. Arguments of the
2208 @code{run} command are passed to the shell, which does variable
2209 substitution, expands wildcard characters and performs redirection of
2210 I/O. In some circumstances, it may be useful to disable such use of a
2211 shell, for example, when debugging the shell itself or diagnosing
2212 startup failures such as:
2213
2214 @smallexample
2215 (@value{GDBP}) run
2216 Starting program: ./a.out
2217 During startup program terminated with signal SIGSEGV, Segmentation fault.
2218 @end smallexample
2219
2220 @noindent
2221 which indicates the shell or the wrapper specified with
2222 @samp{exec-wrapper} crashed, not your program. Most often, this is
2223 caused by something odd in your shell's non-interactive mode
2224 initialization file---such as @file{.cshrc} for C-shell,
2225 $@file{.zshenv} for the Z shell, or the file specified in the
2226 @samp{BASH_ENV} environment variable for BASH.
2227
2228 @anchor{set auto-connect-native-target}
2229 @kindex set auto-connect-native-target
2230 @item set auto-connect-native-target
2231 @itemx set auto-connect-native-target on
2232 @itemx set auto-connect-native-target off
2233 @itemx show auto-connect-native-target
2234
2235 By default, if not connected to any target yet (e.g., with
2236 @code{target remote}), the @code{run} command starts your program as a
2237 native process under @value{GDBN}, on your local machine. If you're
2238 sure you don't want to debug programs on your local machine, you can
2239 tell @value{GDBN} to not connect to the native target automatically
2240 with the @code{set auto-connect-native-target off} command.
2241
2242 If @code{on}, which is the default, and if @value{GDBN} is not
2243 connected to a target already, the @code{run} command automaticaly
2244 connects to the native target, if one is available.
2245
2246 If @code{off}, and if @value{GDBN} is not connected to a target
2247 already, the @code{run} command fails with an error:
2248
2249 @smallexample
2250 (@value{GDBP}) run
2251 Don't know how to run. Try "help target".
2252 @end smallexample
2253
2254 If @value{GDBN} is already connected to a target, @value{GDBN} always
2255 uses it with the @code{run} command.
2256
2257 In any case, you can explicitly connect to the native target with the
2258 @code{target native} command. For example,
2259
2260 @smallexample
2261 (@value{GDBP}) set auto-connect-native-target off
2262 (@value{GDBP}) run
2263 Don't know how to run. Try "help target".
2264 (@value{GDBP}) target native
2265 (@value{GDBP}) run
2266 Starting program: ./a.out
2267 [Inferior 1 (process 10421) exited normally]
2268 @end smallexample
2269
2270 In case you connected explicitly to the @code{native} target,
2271 @value{GDBN} remains connected even if all inferiors exit, ready for
2272 the next @code{run} command. Use the @code{disconnect} command to
2273 disconnect.
2274
2275 Examples of other commands that likewise respect the
2276 @code{auto-connect-native-target} setting: @code{attach}, @code{info
2277 proc}, @code{info os}.
2278
2279 @kindex set disable-randomization
2280 @item set disable-randomization
2281 @itemx set disable-randomization on
2282 This option (enabled by default in @value{GDBN}) will turn off the native
2283 randomization of the virtual address space of the started program. This option
2284 is useful for multiple debugging sessions to make the execution better
2285 reproducible and memory addresses reusable across debugging sessions.
2286
2287 This feature is implemented only on certain targets, including @sc{gnu}/Linux.
2288 On @sc{gnu}/Linux you can get the same behavior using
2289
2290 @smallexample
2291 (@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2292 @end smallexample
2293
2294 @item set disable-randomization off
2295 Leave the behavior of the started executable unchanged. Some bugs rear their
2296 ugly heads only when the program is loaded at certain addresses. If your bug
2297 disappears when you run the program under @value{GDBN}, that might be because
2298 @value{GDBN} by default disables the address randomization on platforms, such
2299 as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2300 disable-randomization off} to try to reproduce such elusive bugs.
2301
2302 On targets where it is available, virtual address space randomization
2303 protects the programs against certain kinds of security attacks. In these
2304 cases the attacker needs to know the exact location of a concrete executable
2305 code. Randomizing its location makes it impossible to inject jumps misusing
2306 a code at its expected addresses.
2307
2308 Prelinking shared libraries provides a startup performance advantage but it
2309 makes addresses in these libraries predictable for privileged processes by
2310 having just unprivileged access at the target system. Reading the shared
2311 library binary gives enough information for assembling the malicious code
2312 misusing it. Still even a prelinked shared library can get loaded at a new
2313 random address just requiring the regular relocation process during the
2314 startup. Shared libraries not already prelinked are always loaded at
2315 a randomly chosen address.
2316
2317 Position independent executables (PIE) contain position independent code
2318 similar to the shared libraries and therefore such executables get loaded at
2319 a randomly chosen address upon startup. PIE executables always load even
2320 already prelinked shared libraries at a random address. You can build such
2321 executable using @command{gcc -fPIE -pie}.
2322
2323 Heap (malloc storage), stack and custom mmap areas are always placed randomly
2324 (as long as the randomization is enabled).
2325
2326 @item show disable-randomization
2327 Show the current setting of the explicit disable of the native randomization of
2328 the virtual address space of the started program.
2329
2330 @end table
2331
2332 @node Arguments
2333 @section Your Program's Arguments
2334
2335 @cindex arguments (to your program)
2336 The arguments to your program can be specified by the arguments of the
2337 @code{run} command.
2338 They are passed to a shell, which expands wildcard characters and
2339 performs redirection of I/O, and thence to your program. Your
2340 @code{SHELL} environment variable (if it exists) specifies what shell
2341 @value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
2342 the default shell (@file{/bin/sh} on Unix).
2343
2344 On non-Unix systems, the program is usually invoked directly by
2345 @value{GDBN}, which emulates I/O redirection via the appropriate system
2346 calls, and the wildcard characters are expanded by the startup code of
2347 the program, not by the shell.
2348
2349 @code{run} with no arguments uses the same arguments used by the previous
2350 @code{run}, or those set by the @code{set args} command.
2351
2352 @table @code
2353 @kindex set args
2354 @item set args
2355 Specify the arguments to be used the next time your program is run. If
2356 @code{set args} has no arguments, @code{run} executes your program
2357 with no arguments. Once you have run your program with arguments,
2358 using @code{set args} before the next @code{run} is the only way to run
2359 it again without arguments.
2360
2361 @kindex show args
2362 @item show args
2363 Show the arguments to give your program when it is started.
2364 @end table
2365
2366 @node Environment
2367 @section Your Program's Environment
2368
2369 @cindex environment (of your program)
2370 The @dfn{environment} consists of a set of environment variables and
2371 their values. Environment variables conventionally record such things as
2372 your user name, your home directory, your terminal type, and your search
2373 path for programs to run. Usually you set up environment variables with
2374 the shell and they are inherited by all the other programs you run. When
2375 debugging, it can be useful to try running your program with a modified
2376 environment without having to start @value{GDBN} over again.
2377
2378 @table @code
2379 @kindex path
2380 @item path @var{directory}
2381 Add @var{directory} to the front of the @code{PATH} environment variable
2382 (the search path for executables) that will be passed to your program.
2383 The value of @code{PATH} used by @value{GDBN} does not change.
2384 You may specify several directory names, separated by whitespace or by a
2385 system-dependent separator character (@samp{:} on Unix, @samp{;} on
2386 MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2387 is moved to the front, so it is searched sooner.
2388
2389 You can use the string @samp{$cwd} to refer to whatever is the current
2390 working directory at the time @value{GDBN} searches the path. If you
2391 use @samp{.} instead, it refers to the directory where you executed the
2392 @code{path} command. @value{GDBN} replaces @samp{.} in the
2393 @var{directory} argument (with the current path) before adding
2394 @var{directory} to the search path.
2395 @c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2396 @c document that, since repeating it would be a no-op.
2397
2398 @kindex show paths
2399 @item show paths
2400 Display the list of search paths for executables (the @code{PATH}
2401 environment variable).
2402
2403 @kindex show environment
2404 @item show environment @r{[}@var{varname}@r{]}
2405 Print the value of environment variable @var{varname} to be given to
2406 your program when it starts. If you do not supply @var{varname},
2407 print the names and values of all environment variables to be given to
2408 your program. You can abbreviate @code{environment} as @code{env}.
2409
2410 @kindex set environment
2411 @anchor{set environment}
2412 @item set environment @var{varname} @r{[}=@var{value}@r{]}
2413 Set environment variable @var{varname} to @var{value}. The value
2414 changes for your program (and the shell @value{GDBN} uses to launch
2415 it), not for @value{GDBN} itself. The @var{value} may be any string; the
2416 values of environment variables are just strings, and any
2417 interpretation is supplied by your program itself. The @var{value}
2418 parameter is optional; if it is eliminated, the variable is set to a
2419 null value.
2420 @c "any string" here does not include leading, trailing
2421 @c blanks. Gnu asks: does anyone care?
2422
2423 For example, this command:
2424
2425 @smallexample
2426 set env USER = foo
2427 @end smallexample
2428
2429 @noindent
2430 tells the debugged program, when subsequently run, that its user is named
2431 @samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2432 are not actually required.)
2433
2434 Note that on Unix systems, @value{GDBN} runs your program via a shell,
2435 which also inherits the environment set with @code{set environment}.
2436 If necessary, you can avoid that by using the @samp{env} program as a
2437 wrapper instead of using @code{set environment}. @xref{set
2438 exec-wrapper}, for an example doing just that.
2439
2440 Environment variables that are set by the user are also transmitted to
2441 @command{gdbserver} to be used when starting the remote inferior.
2442 @pxref{QEnvironmentHexEncoded}.
2443
2444 @kindex unset environment
2445 @anchor{unset environment}
2446 @item unset environment @var{varname}
2447 Remove variable @var{varname} from the environment to be passed to your
2448 program. This is different from @samp{set env @var{varname} =};
2449 @code{unset environment} removes the variable from the environment,
2450 rather than assigning it an empty value.
2451
2452 Environment variables that are unset by the user are also unset on
2453 @command{gdbserver} when starting the remote inferior.
2454 @pxref{QEnvironmentUnset}.
2455 @end table
2456
2457 @emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2458 the shell indicated by your @code{SHELL} environment variable if it
2459 exists (or @code{/bin/sh} if not). If your @code{SHELL} variable
2460 names a shell that runs an initialization file when started
2461 non-interactively---such as @file{.cshrc} for C-shell, $@file{.zshenv}
2462 for the Z shell, or the file specified in the @samp{BASH_ENV}
2463 environment variable for BASH---any variables you set in that file
2464 affect your program. You may wish to move setting of environment
2465 variables to files that are only run when you sign on, such as
2466 @file{.login} or @file{.profile}.
2467
2468 @node Working Directory
2469 @section Your Program's Working Directory
2470
2471 @cindex working directory (of your program)
2472 Each time you start your program with @code{run}, the inferior will be
2473 initialized with the current working directory specified by the
2474 @kbd{set cwd} command. If no directory has been specified by this
2475 command, then the inferior will inherit @value{GDBN}'s current working
2476 directory as its working directory if native debugging, or it will
2477 inherit the remote server's current working directory if remote
2478 debugging.
2479
2480 @table @code
2481 @kindex set cwd
2482 @cindex change inferior's working directory
2483 @anchor{set cwd command}
2484 @item set cwd @r{[}@var{directory}@r{]}
2485 Set the inferior's working directory to @var{directory}, which will be
2486 @code{glob}-expanded in order to resolve tildes (@file{~}). If no
2487 argument has been specified, the command clears the setting and resets
2488 it to an empty state. This setting has no effect on @value{GDBN}'s
2489 working directory, and it only takes effect the next time you start
2490 the inferior. The @file{~} in @var{directory} is a short for the
2491 @dfn{home directory}, usually pointed to by the @env{HOME} environment
2492 variable. On MS-Windows, if @env{HOME} is not defined, @value{GDBN}
2493 uses the concatenation of @env{HOMEDRIVE} and @env{HOMEPATH} as
2494 fallback.
2495
2496 You can also change @value{GDBN}'s current working directory by using
2497 the @code{cd} command.
2498 @xref{cd command}.
2499
2500 @kindex show cwd
2501 @cindex show inferior's working directory
2502 @item show cwd
2503 Show the inferior's working directory. If no directory has been
2504 specified by @kbd{set cwd}, then the default inferior's working
2505 directory is the same as @value{GDBN}'s working directory.
2506
2507 @kindex cd
2508 @cindex change @value{GDBN}'s working directory
2509 @anchor{cd command}
2510 @item cd @r{[}@var{directory}@r{]}
2511 Set the @value{GDBN} working directory to @var{directory}. If not
2512 given, @var{directory} uses @file{'~'}.
2513
2514 The @value{GDBN} working directory serves as a default for the
2515 commands that specify files for @value{GDBN} to operate on.
2516 @xref{Files, ,Commands to Specify Files}.
2517 @xref{set cwd command}.
2518
2519 @kindex pwd
2520 @item pwd
2521 Print the @value{GDBN} working directory.
2522 @end table
2523
2524 It is generally impossible to find the current working directory of
2525 the process being debugged (since a program can change its directory
2526 during its run). If you work on a system where @value{GDBN} supports
2527 the @code{info proc} command (@pxref{Process Information}), you can
2528 use the @code{info proc} command to find out the
2529 current working directory of the debuggee.
2530
2531 @node Input/Output
2532 @section Your Program's Input and Output
2533
2534 @cindex redirection
2535 @cindex i/o
2536 @cindex terminal
2537 By default, the program you run under @value{GDBN} does input and output to
2538 the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
2539 to its own terminal modes to interact with you, but it records the terminal
2540 modes your program was using and switches back to them when you continue
2541 running your program.
2542
2543 @table @code
2544 @kindex info terminal
2545 @item info terminal
2546 Displays information recorded by @value{GDBN} about the terminal modes your
2547 program is using.
2548 @end table
2549
2550 You can redirect your program's input and/or output using shell
2551 redirection with the @code{run} command. For example,
2552
2553 @smallexample
2554 run > outfile
2555 @end smallexample
2556
2557 @noindent
2558 starts your program, diverting its output to the file @file{outfile}.
2559
2560 @kindex tty
2561 @cindex controlling terminal
2562 Another way to specify where your program should do input and output is
2563 with the @code{tty} command. This command accepts a file name as
2564 argument, and causes this file to be the default for future @code{run}
2565 commands. It also resets the controlling terminal for the child
2566 process, for future @code{run} commands. For example,
2567
2568 @smallexample
2569 tty /dev/ttyb
2570 @end smallexample
2571
2572 @noindent
2573 directs that processes started with subsequent @code{run} commands
2574 default to do input and output on the terminal @file{/dev/ttyb} and have
2575 that as their controlling terminal.
2576
2577 An explicit redirection in @code{run} overrides the @code{tty} command's
2578 effect on the input/output device, but not its effect on the controlling
2579 terminal.
2580
2581 When you use the @code{tty} command or redirect input in the @code{run}
2582 command, only the input @emph{for your program} is affected. The input
2583 for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2584 for @code{set inferior-tty}.
2585
2586 @cindex inferior tty
2587 @cindex set inferior controlling terminal
2588 You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2589 display the name of the terminal that will be used for future runs of your
2590 program.
2591
2592 @table @code
2593 @item set inferior-tty [ @var{tty} ]
2594 @kindex set inferior-tty
2595 Set the tty for the program being debugged to @var{tty}. Omitting @var{tty}
2596 restores the default behavior, which is to use the same terminal as
2597 @value{GDBN}.
2598
2599 @item show inferior-tty
2600 @kindex show inferior-tty
2601 Show the current tty for the program being debugged.
2602 @end table
2603
2604 @node Attach
2605 @section Debugging an Already-running Process
2606 @kindex attach
2607 @cindex attach
2608
2609 @table @code
2610 @item attach @var{process-id}
2611 This command attaches to a running process---one that was started
2612 outside @value{GDBN}. (@code{info files} shows your active
2613 targets.) The command takes as argument a process ID. The usual way to
2614 find out the @var{process-id} of a Unix process is with the @code{ps} utility,
2615 or with the @samp{jobs -l} shell command.
2616
2617 @code{attach} does not repeat if you press @key{RET} a second time after
2618 executing the command.
2619 @end table
2620
2621 To use @code{attach}, your program must be running in an environment
2622 which supports processes; for example, @code{attach} does not work for
2623 programs on bare-board targets that lack an operating system. You must
2624 also have permission to send the process a signal.
2625
2626 When you use @code{attach}, the debugger finds the program running in
2627 the process first by looking in the current working directory, then (if
2628 the program is not found) by using the source file search path
2629 (@pxref{Source Path, ,Specifying Source Directories}). You can also use
2630 the @code{file} command to load the program. @xref{Files, ,Commands to
2631 Specify Files}.
2632
2633 The first thing @value{GDBN} does after arranging to debug the specified
2634 process is to stop it. You can examine and modify an attached process
2635 with all the @value{GDBN} commands that are ordinarily available when
2636 you start processes with @code{run}. You can insert breakpoints; you
2637 can step and continue; you can modify storage. If you would rather the
2638 process continue running, you may use the @code{continue} command after
2639 attaching @value{GDBN} to the process.
2640
2641 @table @code
2642 @kindex detach
2643 @item detach
2644 When you have finished debugging the attached process, you can use the
2645 @code{detach} command to release it from @value{GDBN} control. Detaching
2646 the process continues its execution. After the @code{detach} command,
2647 that process and @value{GDBN} become completely independent once more, and you
2648 are ready to @code{attach} another process or start one with @code{run}.
2649 @code{detach} does not repeat if you press @key{RET} again after
2650 executing the command.
2651 @end table
2652
2653 If you exit @value{GDBN} while you have an attached process, you detach
2654 that process. If you use the @code{run} command, you kill that process.
2655 By default, @value{GDBN} asks for confirmation if you try to do either of these
2656 things; you can control whether or not you need to confirm by using the
2657 @code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
2658 Messages}).
2659
2660 @node Kill Process
2661 @section Killing the Child Process
2662
2663 @table @code
2664 @kindex kill
2665 @item kill
2666 Kill the child process in which your program is running under @value{GDBN}.
2667 @end table
2668
2669 This command is useful if you wish to debug a core dump instead of a
2670 running process. @value{GDBN} ignores any core dump file while your program
2671 is running.
2672
2673 On some operating systems, a program cannot be executed outside @value{GDBN}
2674 while you have breakpoints set on it inside @value{GDBN}. You can use the
2675 @code{kill} command in this situation to permit running your program
2676 outside the debugger.
2677
2678 The @code{kill} command is also useful if you wish to recompile and
2679 relink your program, since on many systems it is impossible to modify an
2680 executable file while it is running in a process. In this case, when you
2681 next type @code{run}, @value{GDBN} notices that the file has changed, and
2682 reads the symbol table again (while trying to preserve your current
2683 breakpoint settings).
2684
2685 @node Inferiors and Programs
2686 @section Debugging Multiple Inferiors and Programs
2687
2688 @value{GDBN} lets you run and debug multiple programs in a single
2689 session. In addition, @value{GDBN} on some systems may let you run
2690 several programs simultaneously (otherwise you have to exit from one
2691 before starting another). In the most general case, you can have
2692 multiple threads of execution in each of multiple processes, launched
2693 from multiple executables.
2694
2695 @cindex inferior
2696 @value{GDBN} represents the state of each program execution with an
2697 object called an @dfn{inferior}. An inferior typically corresponds to
2698 a process, but is more general and applies also to targets that do not
2699 have processes. Inferiors may be created before a process runs, and
2700 may be retained after a process exits. Inferiors have unique
2701 identifiers that are different from process ids. Usually each
2702 inferior will also have its own distinct address space, although some
2703 embedded targets may have several inferiors running in different parts
2704 of a single address space. Each inferior may in turn have multiple
2705 threads running in it.
2706
2707 To find out what inferiors exist at any moment, use @w{@code{info
2708 inferiors}}:
2709
2710 @table @code
2711 @kindex info inferiors
2712 @item info inferiors
2713 Print a list of all inferiors currently being managed by @value{GDBN}.
2714
2715 @value{GDBN} displays for each inferior (in this order):
2716
2717 @enumerate
2718 @item
2719 the inferior number assigned by @value{GDBN}
2720
2721 @item
2722 the target system's inferior identifier
2723
2724 @item
2725 the name of the executable the inferior is running.
2726
2727 @end enumerate
2728
2729 @noindent
2730 An asterisk @samp{*} preceding the @value{GDBN} inferior number
2731 indicates the current inferior.
2732
2733 For example,
2734 @end table
2735 @c end table here to get a little more width for example
2736
2737 @smallexample
2738 (@value{GDBP}) info inferiors
2739 Num Description Executable
2740 2 process 2307 hello
2741 * 1 process 3401 goodbye
2742 @end smallexample
2743
2744 To switch focus between inferiors, use the @code{inferior} command:
2745
2746 @table @code
2747 @kindex inferior @var{infno}
2748 @item inferior @var{infno}
2749 Make inferior number @var{infno} the current inferior. The argument
2750 @var{infno} is the inferior number assigned by @value{GDBN}, as shown
2751 in the first field of the @samp{info inferiors} display.
2752 @end table
2753
2754 @vindex $_inferior@r{, convenience variable}
2755 The debugger convenience variable @samp{$_inferior} contains the
2756 number of the current inferior. You may find this useful in writing
2757 breakpoint conditional expressions, command scripts, and so forth.
2758 @xref{Convenience Vars,, Convenience Variables}, for general
2759 information on convenience variables.
2760
2761 You can get multiple executables into a debugging session via the
2762 @code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2763 systems @value{GDBN} can add inferiors to the debug session
2764 automatically by following calls to @code{fork} and @code{exec}. To
2765 remove inferiors from the debugging session use the
2766 @w{@code{remove-inferiors}} command.
2767
2768 @table @code
2769 @kindex add-inferior
2770 @item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2771 Adds @var{n} inferiors to be run using @var{executable} as the
2772 executable; @var{n} defaults to 1. If no executable is specified,
2773 the inferiors begins empty, with no program. You can still assign or
2774 change the program assigned to the inferior at any time by using the
2775 @code{file} command with the executable name as its argument.
2776
2777 @kindex clone-inferior
2778 @item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2779 Adds @var{n} inferiors ready to execute the same program as inferior
2780 @var{infno}; @var{n} defaults to 1, and @var{infno} defaults to the
2781 number of the current inferior. This is a convenient command when you
2782 want to run another instance of the inferior you are debugging.
2783
2784 @smallexample
2785 (@value{GDBP}) info inferiors
2786 Num Description Executable
2787 * 1 process 29964 helloworld
2788 (@value{GDBP}) clone-inferior
2789 Added inferior 2.
2790 1 inferiors added.
2791 (@value{GDBP}) info inferiors
2792 Num Description Executable
2793 2 <null> helloworld
2794 * 1 process 29964 helloworld
2795 @end smallexample
2796
2797 You can now simply switch focus to inferior 2 and run it.
2798
2799 @kindex remove-inferiors
2800 @item remove-inferiors @var{infno}@dots{}
2801 Removes the inferior or inferiors @var{infno}@dots{}. It is not
2802 possible to remove an inferior that is running with this command. For
2803 those, use the @code{kill} or @code{detach} command first.
2804
2805 @end table
2806
2807 To quit debugging one of the running inferiors that is not the current
2808 inferior, you can either detach from it by using the @w{@code{detach
2809 inferior}} command (allowing it to run independently), or kill it
2810 using the @w{@code{kill inferiors}} command:
2811
2812 @table @code
2813 @kindex detach inferiors @var{infno}@dots{}
2814 @item detach inferior @var{infno}@dots{}
2815 Detach from the inferior or inferiors identified by @value{GDBN}
2816 inferior number(s) @var{infno}@dots{}. Note that the inferior's entry
2817 still stays on the list of inferiors shown by @code{info inferiors},
2818 but its Description will show @samp{<null>}.
2819
2820 @kindex kill inferiors @var{infno}@dots{}
2821 @item kill inferiors @var{infno}@dots{}
2822 Kill the inferior or inferiors identified by @value{GDBN} inferior
2823 number(s) @var{infno}@dots{}. Note that the inferior's entry still
2824 stays on the list of inferiors shown by @code{info inferiors}, but its
2825 Description will show @samp{<null>}.
2826 @end table
2827
2828 After the successful completion of a command such as @code{detach},
2829 @code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after
2830 a normal process exit, the inferior is still valid and listed with
2831 @code{info inferiors}, ready to be restarted.
2832
2833
2834 To be notified when inferiors are started or exit under @value{GDBN}'s
2835 control use @w{@code{set print inferior-events}}:
2836
2837 @table @code
2838 @kindex set print inferior-events
2839 @cindex print messages on inferior start and exit
2840 @item set print inferior-events
2841 @itemx set print inferior-events on
2842 @itemx set print inferior-events off
2843 The @code{set print inferior-events} command allows you to enable or
2844 disable printing of messages when @value{GDBN} notices that new
2845 inferiors have started or that inferiors have exited or have been
2846 detached. By default, these messages will not be printed.
2847
2848 @kindex show print inferior-events
2849 @item show print inferior-events
2850 Show whether messages will be printed when @value{GDBN} detects that
2851 inferiors have started, exited or have been detached.
2852 @end table
2853
2854 Many commands will work the same with multiple programs as with a
2855 single program: e.g., @code{print myglobal} will simply display the
2856 value of @code{myglobal} in the current inferior.
2857
2858
2859 Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2860 get more info about the relationship of inferiors, programs, address
2861 spaces in a debug session. You can do that with the @w{@code{maint
2862 info program-spaces}} command.
2863
2864 @table @code
2865 @kindex maint info program-spaces
2866 @item maint info program-spaces
2867 Print a list of all program spaces currently being managed by
2868 @value{GDBN}.
2869
2870 @value{GDBN} displays for each program space (in this order):
2871
2872 @enumerate
2873 @item
2874 the program space number assigned by @value{GDBN}
2875
2876 @item
2877 the name of the executable loaded into the program space, with e.g.,
2878 the @code{file} command.
2879
2880 @end enumerate
2881
2882 @noindent
2883 An asterisk @samp{*} preceding the @value{GDBN} program space number
2884 indicates the current program space.
2885
2886 In addition, below each program space line, @value{GDBN} prints extra
2887 information that isn't suitable to display in tabular form. For
2888 example, the list of inferiors bound to the program space.
2889
2890 @smallexample
2891 (@value{GDBP}) maint info program-spaces
2892 Id Executable
2893 * 1 hello
2894 2 goodbye
2895 Bound inferiors: ID 1 (process 21561)
2896 @end smallexample
2897
2898 Here we can see that no inferior is running the program @code{hello},
2899 while @code{process 21561} is running the program @code{goodbye}. On
2900 some targets, it is possible that multiple inferiors are bound to the
2901 same program space. The most common example is that of debugging both
2902 the parent and child processes of a @code{vfork} call. For example,
2903
2904 @smallexample
2905 (@value{GDBP}) maint info program-spaces
2906 Id Executable
2907 * 1 vfork-test
2908 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2909 @end smallexample
2910
2911 Here, both inferior 2 and inferior 1 are running in the same program
2912 space as a result of inferior 1 having executed a @code{vfork} call.
2913 @end table
2914
2915 @node Threads
2916 @section Debugging Programs with Multiple Threads
2917
2918 @cindex threads of execution
2919 @cindex multiple threads
2920 @cindex switching threads
2921 In some operating systems, such as GNU/Linux and Solaris, a single program
2922 may have more than one @dfn{thread} of execution. The precise semantics
2923 of threads differ from one operating system to another, but in general
2924 the threads of a single program are akin to multiple processes---except
2925 that they share one address space (that is, they can all examine and
2926 modify the same variables). On the other hand, each thread has its own
2927 registers and execution stack, and perhaps private memory.
2928
2929 @value{GDBN} provides these facilities for debugging multi-thread
2930 programs:
2931
2932 @itemize @bullet
2933 @item automatic notification of new threads
2934 @item @samp{thread @var{thread-id}}, a command to switch among threads
2935 @item @samp{info threads}, a command to inquire about existing threads
2936 @item @samp{thread apply [@var{thread-id-list}] [@var{all}] @var{args}},
2937 a command to apply a command to a list of threads
2938 @item thread-specific breakpoints
2939 @item @samp{set print thread-events}, which controls printing of
2940 messages on thread start and exit.
2941 @item @samp{set libthread-db-search-path @var{path}}, which lets
2942 the user specify which @code{libthread_db} to use if the default choice
2943 isn't compatible with the program.
2944 @end itemize
2945
2946 @cindex focus of debugging
2947 @cindex current thread
2948 The @value{GDBN} thread debugging facility allows you to observe all
2949 threads while your program runs---but whenever @value{GDBN} takes
2950 control, one thread in particular is always the focus of debugging.
2951 This thread is called the @dfn{current thread}. Debugging commands show
2952 program information from the perspective of the current thread.
2953
2954 @cindex @code{New} @var{systag} message
2955 @cindex thread identifier (system)
2956 @c FIXME-implementors!! It would be more helpful if the [New...] message
2957 @c included GDB's numeric thread handle, so you could just go to that
2958 @c thread without first checking `info threads'.
2959 Whenever @value{GDBN} detects a new thread in your program, it displays
2960 the target system's identification for the thread with a message in the
2961 form @samp{[New @var{systag}]}, where @var{systag} is a thread identifier
2962 whose form varies depending on the particular system. For example, on
2963 @sc{gnu}/Linux, you might see
2964
2965 @smallexample
2966 [New Thread 0x41e02940 (LWP 25582)]
2967 @end smallexample
2968
2969 @noindent
2970 when @value{GDBN} notices a new thread. In contrast, on other systems,
2971 the @var{systag} is simply something like @samp{process 368}, with no
2972 further qualifier.
2973
2974 @c FIXME!! (1) Does the [New...] message appear even for the very first
2975 @c thread of a program, or does it only appear for the
2976 @c second---i.e.@: when it becomes obvious we have a multithread
2977 @c program?
2978 @c (2) *Is* there necessarily a first thread always? Or do some
2979 @c multithread systems permit starting a program with multiple
2980 @c threads ab initio?
2981
2982 @anchor{thread numbers}
2983 @cindex thread number, per inferior
2984 @cindex thread identifier (GDB)
2985 For debugging purposes, @value{GDBN} associates its own thread number
2986 ---always a single integer---with each thread of an inferior. This
2987 number is unique between all threads of an inferior, but not unique
2988 between threads of different inferiors.
2989
2990 @cindex qualified thread ID
2991 You can refer to a given thread in an inferior using the qualified
2992 @var{inferior-num}.@var{thread-num} syntax, also known as
2993 @dfn{qualified thread ID}, with @var{inferior-num} being the inferior
2994 number and @var{thread-num} being the thread number of the given
2995 inferior. For example, thread @code{2.3} refers to thread number 3 of
2996 inferior 2. If you omit @var{inferior-num} (e.g., @code{thread 3}),
2997 then @value{GDBN} infers you're referring to a thread of the current
2998 inferior.
2999
3000 Until you create a second inferior, @value{GDBN} does not show the
3001 @var{inferior-num} part of thread IDs, even though you can always use
3002 the full @var{inferior-num}.@var{thread-num} form to refer to threads
3003 of inferior 1, the initial inferior.
3004
3005 @anchor{thread ID lists}
3006 @cindex thread ID lists
3007 Some commands accept a space-separated @dfn{thread ID list} as
3008 argument. A list element can be:
3009
3010 @enumerate
3011 @item
3012 A thread ID as shown in the first field of the @samp{info threads}
3013 display, with or without an inferior qualifier. E.g., @samp{2.1} or
3014 @samp{1}.
3015
3016 @item
3017 A range of thread numbers, again with or without an inferior
3018 qualifier, as in @var{inf}.@var{thr1}-@var{thr2} or
3019 @var{thr1}-@var{thr2}. E.g., @samp{1.2-4} or @samp{2-4}.
3020
3021 @item
3022 All threads of an inferior, specified with a star wildcard, with or
3023 without an inferior qualifier, as in @var{inf}.@code{*} (e.g.,
3024 @samp{1.*}) or @code{*}. The former refers to all threads of the
3025 given inferior, and the latter form without an inferior qualifier
3026 refers to all threads of the current inferior.
3027
3028 @end enumerate
3029
3030 For example, if the current inferior is 1, and inferior 7 has one
3031 thread with ID 7.1, the thread list @samp{1 2-3 4.5 6.7-9 7.*}
3032 includes threads 1 to 3 of inferior 1, thread 5 of inferior 4, threads
3033 7 to 9 of inferior 6 and all threads of inferior 7. That is, in
3034 expanded qualified form, the same as @samp{1.1 1.2 1.3 4.5 6.7 6.8 6.9
3035 7.1}.
3036
3037
3038 @anchor{global thread numbers}
3039 @cindex global thread number
3040 @cindex global thread identifier (GDB)
3041 In addition to a @emph{per-inferior} number, each thread is also
3042 assigned a unique @emph{global} number, also known as @dfn{global
3043 thread ID}, a single integer. Unlike the thread number component of
3044 the thread ID, no two threads have the same global ID, even when
3045 you're debugging multiple inferiors.
3046
3047 From @value{GDBN}'s perspective, a process always has at least one
3048 thread. In other words, @value{GDBN} assigns a thread number to the
3049 program's ``main thread'' even if the program is not multi-threaded.
3050
3051 @vindex $_thread@r{, convenience variable}
3052 @vindex $_gthread@r{, convenience variable}
3053 The debugger convenience variables @samp{$_thread} and
3054 @samp{$_gthread} contain, respectively, the per-inferior thread number
3055 and the global thread number of the current thread. You may find this
3056 useful in writing breakpoint conditional expressions, command scripts,
3057 and so forth. @xref{Convenience Vars,, Convenience Variables}, for
3058 general information on convenience variables.
3059
3060 If @value{GDBN} detects the program is multi-threaded, it augments the
3061 usual message about stopping at a breakpoint with the ID and name of
3062 the thread that hit the breakpoint.
3063
3064 @smallexample
3065 Thread 2 "client" hit Breakpoint 1, send_message () at client.c:68
3066 @end smallexample
3067
3068 Likewise when the program receives a signal:
3069
3070 @smallexample
3071 Thread 1 "main" received signal SIGINT, Interrupt.
3072 @end smallexample
3073
3074 @table @code
3075 @kindex info threads
3076 @item info threads @r{[}@var{thread-id-list}@r{]}
3077
3078 Display information about one or more threads. With no arguments
3079 displays information about all threads. You can specify the list of
3080 threads that you want to display using the thread ID list syntax
3081 (@pxref{thread ID lists}).
3082
3083 @value{GDBN} displays for each thread (in this order):
3084
3085 @enumerate
3086 @item
3087 the per-inferior thread number assigned by @value{GDBN}
3088
3089 @item
3090 the global thread number assigned by @value{GDBN}, if the @samp{-gid}
3091 option was specified
3092
3093 @item
3094 the target system's thread identifier (@var{systag})
3095
3096 @item
3097 the thread's name, if one is known. A thread can either be named by
3098 the user (see @code{thread name}, below), or, in some cases, by the
3099 program itself.
3100
3101 @item
3102 the current stack frame summary for that thread
3103 @end enumerate
3104
3105 @noindent
3106 An asterisk @samp{*} to the left of the @value{GDBN} thread number
3107 indicates the current thread.
3108
3109 For example,
3110 @end table
3111 @c end table here to get a little more width for example
3112
3113 @smallexample
3114 (@value{GDBP}) info threads
3115 Id Target Id Frame
3116 * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
3117 2 process 35 thread 23 0x34e5 in sigpause ()
3118 3 process 35 thread 27 0x34e5 in sigpause ()
3119 at threadtest.c:68
3120 @end smallexample
3121
3122 If you're debugging multiple inferiors, @value{GDBN} displays thread
3123 IDs using the qualified @var{inferior-num}.@var{thread-num} format.
3124 Otherwise, only @var{thread-num} is shown.
3125
3126 If you specify the @samp{-gid} option, @value{GDBN} displays a column
3127 indicating each thread's global thread ID:
3128
3129 @smallexample
3130 (@value{GDBP}) info threads
3131 Id GId Target Id Frame
3132 1.1 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
3133 1.2 3 process 35 thread 23 0x34e5 in sigpause ()
3134 1.3 4 process 35 thread 27 0x34e5 in sigpause ()
3135 * 2.1 2 process 65 thread 1 main (argc=1, argv=0x7ffffff8)
3136 @end smallexample
3137
3138 On Solaris, you can display more information about user threads with a
3139 Solaris-specific command:
3140
3141 @table @code
3142 @item maint info sol-threads
3143 @kindex maint info sol-threads
3144 @cindex thread info (Solaris)
3145 Display info on Solaris user threads.
3146 @end table
3147
3148 @table @code
3149 @kindex thread @var{thread-id}
3150 @item thread @var{thread-id}
3151 Make thread ID @var{thread-id} the current thread. The command
3152 argument @var{thread-id} is the @value{GDBN} thread ID, as shown in
3153 the first field of the @samp{info threads} display, with or without an
3154 inferior qualifier (e.g., @samp{2.1} or @samp{1}).
3155
3156 @value{GDBN} responds by displaying the system identifier of the
3157 thread you selected, and its current stack frame summary:
3158
3159 @smallexample
3160 (@value{GDBP}) thread 2
3161 [Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))]
3162 #0 some_function (ignore=0x0) at example.c:8
3163 8 printf ("hello\n");
3164 @end smallexample
3165
3166 @noindent
3167 As with the @samp{[New @dots{}]} message, the form of the text after
3168 @samp{Switching to} depends on your system's conventions for identifying
3169 threads.
3170
3171 @kindex thread apply
3172 @cindex apply command to several threads
3173 @item thread apply [@var{thread-id-list} | all [-ascending]] @var{command}
3174 The @code{thread apply} command allows you to apply the named
3175 @var{command} to one or more threads. Specify the threads that you
3176 want affected using the thread ID list syntax (@pxref{thread ID
3177 lists}), or specify @code{all} to apply to all threads. To apply a
3178 command to all threads in descending order, type @kbd{thread apply all
3179 @var{command}}. To apply a command to all threads in ascending order,
3180 type @kbd{thread apply all -ascending @var{command}}.
3181
3182
3183 @kindex thread name
3184 @cindex name a thread
3185 @item thread name [@var{name}]
3186 This command assigns a name to the current thread. If no argument is
3187 given, any existing user-specified name is removed. The thread name
3188 appears in the @samp{info threads} display.
3189
3190 On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to
3191 determine the name of the thread as given by the OS. On these
3192 systems, a name specified with @samp{thread name} will override the
3193 system-give name, and removing the user-specified name will cause
3194 @value{GDBN} to once again display the system-specified name.
3195
3196 @kindex thread find
3197 @cindex search for a thread
3198 @item thread find [@var{regexp}]
3199 Search for and display thread ids whose name or @var{systag}
3200 matches the supplied regular expression.
3201
3202 As well as being the complement to the @samp{thread name} command,
3203 this command also allows you to identify a thread by its target
3204 @var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag}
3205 is the LWP id.
3206
3207 @smallexample
3208 (@value{GDBN}) thread find 26688
3209 Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)'
3210 (@value{GDBN}) info thread 4
3211 Id Target Id Frame
3212 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select ()
3213 @end smallexample
3214
3215 @kindex set print thread-events
3216 @cindex print messages on thread start and exit
3217 @item set print thread-events
3218 @itemx set print thread-events on
3219 @itemx set print thread-events off
3220 The @code{set print thread-events} command allows you to enable or
3221 disable printing of messages when @value{GDBN} notices that new threads have
3222 started or that threads have exited. By default, these messages will
3223 be printed if detection of these events is supported by the target.
3224 Note that these messages cannot be disabled on all targets.
3225
3226 @kindex show print thread-events
3227 @item show print thread-events
3228 Show whether messages will be printed when @value{GDBN} detects that threads
3229 have started and exited.
3230 @end table
3231
3232 @xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
3233 more information about how @value{GDBN} behaves when you stop and start
3234 programs with multiple threads.
3235
3236 @xref{Set Watchpoints,,Setting Watchpoints}, for information about
3237 watchpoints in programs with multiple threads.
3238
3239 @anchor{set libthread-db-search-path}
3240 @table @code
3241 @kindex set libthread-db-search-path
3242 @cindex search path for @code{libthread_db}
3243 @item set libthread-db-search-path @r{[}@var{path}@r{]}
3244 If this variable is set, @var{path} is a colon-separated list of
3245 directories @value{GDBN} will use to search for @code{libthread_db}.
3246 If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
3247 its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems).
3248 Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH}
3249 macro.
3250
3251 On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
3252 @code{libthread_db} library to obtain information about threads in the
3253 inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
3254 to find @code{libthread_db}. @value{GDBN} also consults first if inferior
3255 specific thread debugging library loading is enabled
3256 by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}).
3257
3258 A special entry @samp{$sdir} for @samp{libthread-db-search-path}
3259 refers to the default system directories that are
3260 normally searched for loading shared libraries. The @samp{$sdir} entry
3261 is the only kind not needing to be enabled by @samp{set auto-load libthread-db}
3262 (@pxref{libthread_db.so.1 file}).
3263
3264 A special entry @samp{$pdir} for @samp{libthread-db-search-path}
3265 refers to the directory from which @code{libpthread}
3266 was loaded in the inferior process.
3267
3268 For any @code{libthread_db} library @value{GDBN} finds in above directories,
3269 @value{GDBN} attempts to initialize it with the current inferior process.
3270 If this initialization fails (which could happen because of a version
3271 mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
3272 will unload @code{libthread_db}, and continue with the next directory.
3273 If none of @code{libthread_db} libraries initialize successfully,
3274 @value{GDBN} will issue a warning and thread debugging will be disabled.
3275
3276 Setting @code{libthread-db-search-path} is currently implemented
3277 only on some platforms.
3278
3279 @kindex show libthread-db-search-path
3280 @item show libthread-db-search-path
3281 Display current libthread_db search path.
3282
3283 @kindex set debug libthread-db
3284 @kindex show debug libthread-db
3285 @cindex debugging @code{libthread_db}
3286 @item set debug libthread-db
3287 @itemx show debug libthread-db
3288 Turns on or off display of @code{libthread_db}-related events.
3289 Use @code{1} to enable, @code{0} to disable.
3290 @end table
3291
3292 @node Forks
3293 @section Debugging Forks
3294
3295 @cindex fork, debugging programs which call
3296 @cindex multiple processes
3297 @cindex processes, multiple
3298 On most systems, @value{GDBN} has no special support for debugging
3299 programs which create additional processes using the @code{fork}
3300 function. When a program forks, @value{GDBN} will continue to debug the
3301 parent process and the child process will run unimpeded. If you have
3302 set a breakpoint in any code which the child then executes, the child
3303 will get a @code{SIGTRAP} signal which (unless it catches the signal)
3304 will cause it to terminate.
3305
3306 However, if you want to debug the child process there is a workaround
3307 which isn't too painful. Put a call to @code{sleep} in the code which
3308 the child process executes after the fork. It may be useful to sleep
3309 only if a certain environment variable is set, or a certain file exists,
3310 so that the delay need not occur when you don't want to run @value{GDBN}
3311 on the child. While the child is sleeping, use the @code{ps} program to
3312 get its process ID. Then tell @value{GDBN} (a new invocation of
3313 @value{GDBN} if you are also debugging the parent process) to attach to
3314 the child process (@pxref{Attach}). From that point on you can debug
3315 the child process just like any other process which you attached to.
3316
3317 On some systems, @value{GDBN} provides support for debugging programs
3318 that create additional processes using the @code{fork} or @code{vfork}
3319 functions. On @sc{gnu}/Linux platforms, this feature is supported
3320 with kernel version 2.5.46 and later.
3321
3322 The fork debugging commands are supported in native mode and when
3323 connected to @code{gdbserver} in either @code{target remote} mode or
3324 @code{target extended-remote} mode.
3325
3326 By default, when a program forks, @value{GDBN} will continue to debug
3327 the parent process and the child process will run unimpeded.
3328
3329 If you want to follow the child process instead of the parent process,
3330 use the command @w{@code{set follow-fork-mode}}.
3331
3332 @table @code
3333 @kindex set follow-fork-mode
3334 @item set follow-fork-mode @var{mode}
3335 Set the debugger response to a program call of @code{fork} or
3336 @code{vfork}. A call to @code{fork} or @code{vfork} creates a new
3337 process. The @var{mode} argument can be:
3338
3339 @table @code
3340 @item parent
3341 The original process is debugged after a fork. The child process runs
3342 unimpeded. This is the default.
3343
3344 @item child
3345 The new process is debugged after a fork. The parent process runs
3346 unimpeded.
3347
3348 @end table
3349
3350 @kindex show follow-fork-mode
3351 @item show follow-fork-mode
3352 Display the current debugger response to a @code{fork} or @code{vfork} call.
3353 @end table
3354
3355 @cindex debugging multiple processes
3356 On Linux, if you want to debug both the parent and child processes, use the
3357 command @w{@code{set detach-on-fork}}.
3358
3359 @table @code
3360 @kindex set detach-on-fork
3361 @item set detach-on-fork @var{mode}
3362 Tells gdb whether to detach one of the processes after a fork, or
3363 retain debugger control over them both.
3364
3365 @table @code
3366 @item on
3367 The child process (or parent process, depending on the value of
3368 @code{follow-fork-mode}) will be detached and allowed to run
3369 independently. This is the default.
3370
3371 @item off
3372 Both processes will be held under the control of @value{GDBN}.
3373 One process (child or parent, depending on the value of
3374 @code{follow-fork-mode}) is debugged as usual, while the other
3375 is held suspended.
3376
3377 @end table
3378
3379 @kindex show detach-on-fork
3380 @item show detach-on-fork
3381 Show whether detach-on-fork mode is on/off.
3382 @end table
3383
3384 If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
3385 will retain control of all forked processes (including nested forks).
3386 You can list the forked processes under the control of @value{GDBN} by
3387 using the @w{@code{info inferiors}} command, and switch from one fork
3388 to another by using the @code{inferior} command (@pxref{Inferiors and
3389 Programs, ,Debugging Multiple Inferiors and Programs}).
3390
3391 To quit debugging one of the forked processes, you can either detach
3392 from it by using the @w{@code{detach inferiors}} command (allowing it
3393 to run independently), or kill it using the @w{@code{kill inferiors}}
3394 command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
3395 and Programs}.
3396
3397 If you ask to debug a child process and a @code{vfork} is followed by an
3398 @code{exec}, @value{GDBN} executes the new target up to the first
3399 breakpoint in the new target. If you have a breakpoint set on
3400 @code{main} in your original program, the breakpoint will also be set on
3401 the child process's @code{main}.
3402
3403 On some systems, when a child process is spawned by @code{vfork}, you
3404 cannot debug the child or parent until an @code{exec} call completes.
3405
3406 If you issue a @code{run} command to @value{GDBN} after an @code{exec}
3407 call executes, the new target restarts. To restart the parent
3408 process, use the @code{file} command with the parent executable name
3409 as its argument. By default, after an @code{exec} call executes,
3410 @value{GDBN} discards the symbols of the previous executable image.
3411 You can change this behaviour with the @w{@code{set follow-exec-mode}}
3412 command.
3413
3414 @table @code
3415 @kindex set follow-exec-mode
3416 @item set follow-exec-mode @var{mode}
3417
3418 Set debugger response to a program call of @code{exec}. An
3419 @code{exec} call replaces the program image of a process.
3420
3421 @code{follow-exec-mode} can be:
3422
3423 @table @code
3424 @item new
3425 @value{GDBN} creates a new inferior and rebinds the process to this
3426 new inferior. The program the process was running before the
3427 @code{exec} call can be restarted afterwards by restarting the
3428 original inferior.
3429
3430 For example:
3431
3432 @smallexample
3433 (@value{GDBP}) info inferiors
3434 (gdb) info inferior
3435 Id Description Executable
3436 * 1 <null> prog1
3437 (@value{GDBP}) run
3438 process 12020 is executing new program: prog2
3439 Program exited normally.
3440 (@value{GDBP}) info inferiors
3441 Id Description Executable
3442 1 <null> prog1
3443 * 2 <null> prog2
3444 @end smallexample
3445
3446 @item same
3447 @value{GDBN} keeps the process bound to the same inferior. The new
3448 executable image replaces the previous executable loaded in the
3449 inferior. Restarting the inferior after the @code{exec} call, with
3450 e.g., the @code{run} command, restarts the executable the process was
3451 running after the @code{exec} call. This is the default mode.
3452
3453 For example:
3454
3455 @smallexample
3456 (@value{GDBP}) info inferiors
3457 Id Description Executable
3458 * 1 <null> prog1
3459 (@value{GDBP}) run
3460 process 12020 is executing new program: prog2
3461 Program exited normally.
3462 (@value{GDBP}) info inferiors
3463 Id Description Executable
3464 * 1 <null> prog2
3465 @end smallexample
3466
3467 @end table
3468 @end table
3469
3470 @code{follow-exec-mode} is supported in native mode and
3471 @code{target extended-remote} mode.
3472
3473 You can use the @code{catch} command to make @value{GDBN} stop whenever
3474 a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
3475 Catchpoints, ,Setting Catchpoints}.
3476
3477 @node Checkpoint/Restart
3478 @section Setting a @emph{Bookmark} to Return to Later
3479
3480 @cindex checkpoint
3481 @cindex restart
3482 @cindex bookmark
3483 @cindex snapshot of a process
3484 @cindex rewind program state
3485
3486 On certain operating systems@footnote{Currently, only
3487 @sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3488 program's state, called a @dfn{checkpoint}, and come back to it
3489 later.
3490
3491 Returning to a checkpoint effectively undoes everything that has
3492 happened in the program since the @code{checkpoint} was saved. This
3493 includes changes in memory, registers, and even (within some limits)
3494 system state. Effectively, it is like going back in time to the
3495 moment when the checkpoint was saved.
3496
3497 Thus, if you're stepping thru a program and you think you're
3498 getting close to the point where things go wrong, you can save
3499 a checkpoint. Then, if you accidentally go too far and miss
3500 the critical statement, instead of having to restart your program
3501 from the beginning, you can just go back to the checkpoint and
3502 start again from there.
3503
3504 This can be especially useful if it takes a lot of time or
3505 steps to reach the point where you think the bug occurs.
3506
3507 To use the @code{checkpoint}/@code{restart} method of debugging:
3508
3509 @table @code
3510 @kindex checkpoint
3511 @item checkpoint
3512 Save a snapshot of the debugged program's current execution state.
3513 The @code{checkpoint} command takes no arguments, but each checkpoint
3514 is assigned a small integer id, similar to a breakpoint id.
3515
3516 @kindex info checkpoints
3517 @item info checkpoints
3518 List the checkpoints that have been saved in the current debugging
3519 session. For each checkpoint, the following information will be
3520 listed:
3521
3522 @table @code
3523 @item Checkpoint ID
3524 @item Process ID
3525 @item Code Address
3526 @item Source line, or label
3527 @end table
3528
3529 @kindex restart @var{checkpoint-id}
3530 @item restart @var{checkpoint-id}
3531 Restore the program state that was saved as checkpoint number
3532 @var{checkpoint-id}. All program variables, registers, stack frames
3533 etc.@: will be returned to the values that they had when the checkpoint
3534 was saved. In essence, gdb will ``wind back the clock'' to the point
3535 in time when the checkpoint was saved.
3536
3537 Note that breakpoints, @value{GDBN} variables, command history etc.
3538 are not affected by restoring a checkpoint. In general, a checkpoint
3539 only restores things that reside in the program being debugged, not in
3540 the debugger.
3541
3542 @kindex delete checkpoint @var{checkpoint-id}
3543 @item delete checkpoint @var{checkpoint-id}
3544 Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3545
3546 @end table
3547
3548 Returning to a previously saved checkpoint will restore the user state
3549 of the program being debugged, plus a significant subset of the system
3550 (OS) state, including file pointers. It won't ``un-write'' data from
3551 a file, but it will rewind the file pointer to the previous location,
3552 so that the previously written data can be overwritten. For files
3553 opened in read mode, the pointer will also be restored so that the
3554 previously read data can be read again.
3555
3556 Of course, characters that have been sent to a printer (or other
3557 external device) cannot be ``snatched back'', and characters received
3558 from eg.@: a serial device can be removed from internal program buffers,
3559 but they cannot be ``pushed back'' into the serial pipeline, ready to
3560 be received again. Similarly, the actual contents of files that have
3561 been changed cannot be restored (at this time).
3562
3563 However, within those constraints, you actually can ``rewind'' your
3564 program to a previously saved point in time, and begin debugging it
3565 again --- and you can change the course of events so as to debug a
3566 different execution path this time.
3567
3568 @cindex checkpoints and process id
3569 Finally, there is one bit of internal program state that will be
3570 different when you return to a checkpoint --- the program's process
3571 id. Each checkpoint will have a unique process id (or @var{pid}),
3572 and each will be different from the program's original @var{pid}.
3573 If your program has saved a local copy of its process id, this could
3574 potentially pose a problem.
3575
3576 @subsection A Non-obvious Benefit of Using Checkpoints
3577
3578 On some systems such as @sc{gnu}/Linux, address space randomization
3579 is performed on new processes for security reasons. This makes it
3580 difficult or impossible to set a breakpoint, or watchpoint, on an
3581 absolute address if you have to restart the program, since the
3582 absolute location of a symbol will change from one execution to the
3583 next.
3584
3585 A checkpoint, however, is an @emph{identical} copy of a process.
3586 Therefore if you create a checkpoint at (eg.@:) the start of main,
3587 and simply return to that checkpoint instead of restarting the
3588 process, you can avoid the effects of address randomization and
3589 your symbols will all stay in the same place.
3590
3591 @node Stopping
3592 @chapter Stopping and Continuing
3593
3594 The principal purposes of using a debugger are so that you can stop your
3595 program before it terminates; or so that, if your program runs into
3596 trouble, you can investigate and find out why.
3597
3598 Inside @value{GDBN}, your program may stop for any of several reasons,
3599 such as a signal, a breakpoint, or reaching a new line after a
3600 @value{GDBN} command such as @code{step}. You may then examine and
3601 change variables, set new breakpoints or remove old ones, and then
3602 continue execution. Usually, the messages shown by @value{GDBN} provide
3603 ample explanation of the status of your program---but you can also
3604 explicitly request this information at any time.
3605
3606 @table @code
3607 @kindex info program
3608 @item info program
3609 Display information about the status of your program: whether it is
3610 running or not, what process it is, and why it stopped.
3611 @end table
3612
3613 @menu
3614 * Breakpoints:: Breakpoints, watchpoints, and catchpoints
3615 * Continuing and Stepping:: Resuming execution
3616 * Skipping Over Functions and Files::
3617 Skipping over functions and files
3618 * Signals:: Signals
3619 * Thread Stops:: Stopping and starting multi-thread programs
3620 @end menu
3621
3622 @node Breakpoints
3623 @section Breakpoints, Watchpoints, and Catchpoints
3624
3625 @cindex breakpoints
3626 A @dfn{breakpoint} makes your program stop whenever a certain point in
3627 the program is reached. For each breakpoint, you can add conditions to
3628 control in finer detail whether your program stops. You can set
3629 breakpoints with the @code{break} command and its variants (@pxref{Set
3630 Breaks, ,Setting Breakpoints}), to specify the place where your program
3631 should stop by line number, function name or exact address in the
3632 program.
3633
3634 On some systems, you can set breakpoints in shared libraries before
3635 the executable is run.
3636
3637 @cindex watchpoints
3638 @cindex data breakpoints
3639 @cindex memory tracing
3640 @cindex breakpoint on memory address
3641 @cindex breakpoint on variable modification
3642 A @dfn{watchpoint} is a special breakpoint that stops your program
3643 when the value of an expression changes. The expression may be a value
3644 of a variable, or it could involve values of one or more variables
3645 combined by operators, such as @samp{a + b}. This is sometimes called
3646 @dfn{data breakpoints}. You must use a different command to set
3647 watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
3648 from that, you can manage a watchpoint like any other breakpoint: you
3649 enable, disable, and delete both breakpoints and watchpoints using the
3650 same commands.
3651
3652 You can arrange to have values from your program displayed automatically
3653 whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
3654 Automatic Display}.
3655
3656 @cindex catchpoints
3657 @cindex breakpoint on events
3658 A @dfn{catchpoint} is another special breakpoint that stops your program
3659 when a certain kind of event occurs, such as the throwing of a C@t{++}
3660 exception or the loading of a library. As with watchpoints, you use a
3661 different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
3662 Catchpoints}), but aside from that, you can manage a catchpoint like any
3663 other breakpoint. (To stop when your program receives a signal, use the
3664 @code{handle} command; see @ref{Signals, ,Signals}.)
3665
3666 @cindex breakpoint numbers
3667 @cindex numbers for breakpoints
3668 @value{GDBN} assigns a number to each breakpoint, watchpoint, or
3669 catchpoint when you create it; these numbers are successive integers
3670 starting with one. In many of the commands for controlling various
3671 features of breakpoints you use the breakpoint number to say which
3672 breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3673 @dfn{disabled}; if disabled, it has no effect on your program until you
3674 enable it again.
3675
3676 @cindex breakpoint ranges
3677 @cindex breakpoint lists
3678 @cindex ranges of breakpoints
3679 @cindex lists of breakpoints
3680 Some @value{GDBN} commands accept a space-separated list of breakpoints
3681 on which to operate. A list element can be either a single breakpoint number,
3682 like @samp{5}, or a range of such numbers, like @samp{5-7}.
3683 When a breakpoint list is given to a command, all breakpoints in that list
3684 are operated on.
3685
3686 @menu
3687 * Set Breaks:: Setting breakpoints
3688 * Set Watchpoints:: Setting watchpoints
3689 * Set Catchpoints:: Setting catchpoints
3690 * Delete Breaks:: Deleting breakpoints
3691 * Disabling:: Disabling breakpoints
3692 * Conditions:: Break conditions
3693 * Break Commands:: Breakpoint command lists
3694 * Dynamic Printf:: Dynamic printf
3695 * Save Breakpoints:: How to save breakpoints in a file
3696 * Static Probe Points:: Listing static probe points
3697 * Error in Breakpoints:: ``Cannot insert breakpoints''
3698 * Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
3699 @end menu
3700
3701 @node Set Breaks
3702 @subsection Setting Breakpoints
3703
3704 @c FIXME LMB what does GDB do if no code on line of breakpt?
3705 @c consider in particular declaration with/without initialization.
3706 @c
3707 @c FIXME 2 is there stuff on this already? break at fun start, already init?
3708
3709 @kindex break
3710 @kindex b @r{(@code{break})}
3711 @vindex $bpnum@r{, convenience variable}
3712 @cindex latest breakpoint
3713 Breakpoints are set with the @code{break} command (abbreviated
3714 @code{b}). The debugger convenience variable @samp{$bpnum} records the
3715 number of the breakpoint you've set most recently; see @ref{Convenience
3716 Vars,, Convenience Variables}, for a discussion of what you can do with
3717 convenience variables.
3718
3719 @table @code
3720 @item break @var{location}
3721 Set a breakpoint at the given @var{location}, which can specify a
3722 function name, a line number, or an address of an instruction.
3723 (@xref{Specify Location}, for a list of all the possible ways to
3724 specify a @var{location}.) The breakpoint will stop your program just
3725 before it executes any of the code in the specified @var{location}.
3726
3727 When using source languages that permit overloading of symbols, such as
3728 C@t{++}, a function name may refer to more than one possible place to break.
3729 @xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3730 that situation.
3731
3732 It is also possible to insert a breakpoint that will stop the program
3733 only if a specific thread (@pxref{Thread-Specific Breakpoints})
3734 or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
3735
3736 @item break
3737 When called without any arguments, @code{break} sets a breakpoint at
3738 the next instruction to be executed in the selected stack frame
3739 (@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3740 innermost, this makes your program stop as soon as control
3741 returns to that frame. This is similar to the effect of a
3742 @code{finish} command in the frame inside the selected frame---except
3743 that @code{finish} does not leave an active breakpoint. If you use
3744 @code{break} without an argument in the innermost frame, @value{GDBN} stops
3745 the next time it reaches the current location; this may be useful
3746 inside loops.
3747
3748 @value{GDBN} normally ignores breakpoints when it resumes execution, until at
3749 least one instruction has been executed. If it did not do this, you
3750 would be unable to proceed past a breakpoint without first disabling the
3751 breakpoint. This rule applies whether or not the breakpoint already
3752 existed when your program stopped.
3753
3754 @item break @dots{} if @var{cond}
3755 Set a breakpoint with condition @var{cond}; evaluate the expression
3756 @var{cond} each time the breakpoint is reached, and stop only if the
3757 value is nonzero---that is, if @var{cond} evaluates as true.
3758 @samp{@dots{}} stands for one of the possible arguments described
3759 above (or no argument) specifying where to break. @xref{Conditions,
3760 ,Break Conditions}, for more information on breakpoint conditions.
3761
3762 @kindex tbreak
3763 @item tbreak @var{args}
3764 Set a breakpoint enabled only for one stop. The @var{args} are the
3765 same as for the @code{break} command, and the breakpoint is set in the same
3766 way, but the breakpoint is automatically deleted after the first time your
3767 program stops there. @xref{Disabling, ,Disabling Breakpoints}.
3768
3769 @kindex hbreak
3770 @cindex hardware breakpoints
3771 @item hbreak @var{args}
3772 Set a hardware-assisted breakpoint. The @var{args} are the same as for the
3773 @code{break} command and the breakpoint is set in the same way, but the
3774 breakpoint requires hardware support and some target hardware may not
3775 have this support. The main purpose of this is EPROM/ROM code
3776 debugging, so you can set a breakpoint at an instruction without
3777 changing the instruction. This can be used with the new trap-generation
3778 provided by SPARClite DSU and most x86-based targets. These targets
3779 will generate traps when a program accesses some data or instruction
3780 address that is assigned to the debug registers. However the hardware
3781 breakpoint registers can take a limited number of breakpoints. For
3782 example, on the DSU, only two data breakpoints can be set at a time, and
3783 @value{GDBN} will reject this command if more than two are used. Delete
3784 or disable unused hardware breakpoints before setting new ones
3785 (@pxref{Disabling, ,Disabling Breakpoints}).
3786 @xref{Conditions, ,Break Conditions}.
3787 For remote targets, you can restrict the number of hardware
3788 breakpoints @value{GDBN} will use, see @ref{set remote
3789 hardware-breakpoint-limit}.
3790
3791 @kindex thbreak
3792 @item thbreak @var{args}
3793 Set a hardware-assisted breakpoint enabled only for one stop. The @var{args}
3794 are the same as for the @code{hbreak} command and the breakpoint is set in
3795 the same way. However, like the @code{tbreak} command,
3796 the breakpoint is automatically deleted after the
3797 first time your program stops there. Also, like the @code{hbreak}
3798 command, the breakpoint requires hardware support and some target hardware
3799 may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3800 See also @ref{Conditions, ,Break Conditions}.
3801
3802 @kindex rbreak
3803 @cindex regular expression
3804 @cindex breakpoints at functions matching a regexp
3805 @cindex set breakpoints in many functions
3806 @item rbreak @var{regex}
3807 Set breakpoints on all functions matching the regular expression
3808 @var{regex}. This command sets an unconditional breakpoint on all
3809 matches, printing a list of all breakpoints it set. Once these
3810 breakpoints are set, they are treated just like the breakpoints set with
3811 the @code{break} command. You can delete them, disable them, or make
3812 them conditional the same way as any other breakpoint.
3813
3814 The syntax of the regular expression is the standard one used with tools
3815 like @file{grep}. Note that this is different from the syntax used by
3816 shells, so for instance @code{foo*} matches all functions that include
3817 an @code{fo} followed by zero or more @code{o}s. There is an implicit
3818 @code{.*} leading and trailing the regular expression you supply, so to
3819 match only functions that begin with @code{foo}, use @code{^foo}.
3820
3821 @cindex non-member C@t{++} functions, set breakpoint in
3822 When debugging C@t{++} programs, @code{rbreak} is useful for setting
3823 breakpoints on overloaded functions that are not members of any special
3824 classes.
3825
3826 @cindex set breakpoints on all functions
3827 The @code{rbreak} command can be used to set breakpoints in
3828 @strong{all} the functions in a program, like this:
3829
3830 @smallexample
3831 (@value{GDBP}) rbreak .
3832 @end smallexample
3833
3834 @item rbreak @var{file}:@var{regex}
3835 If @code{rbreak} is called with a filename qualification, it limits
3836 the search for functions matching the given regular expression to the
3837 specified @var{file}. This can be used, for example, to set breakpoints on
3838 every function in a given file:
3839
3840 @smallexample
3841 (@value{GDBP}) rbreak file.c:.
3842 @end smallexample
3843
3844 The colon separating the filename qualifier from the regex may
3845 optionally be surrounded by spaces.
3846
3847 @kindex info breakpoints
3848 @cindex @code{$_} and @code{info breakpoints}
3849 @item info breakpoints @r{[}@var{list}@dots{}@r{]}
3850 @itemx info break @r{[}@var{list}@dots{}@r{]}
3851 Print a table of all breakpoints, watchpoints, and catchpoints set and
3852 not deleted. Optional argument @var{n} means print information only
3853 about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
3854 For each breakpoint, following columns are printed:
3855
3856 @table @emph
3857 @item Breakpoint Numbers
3858 @item Type
3859 Breakpoint, watchpoint, or catchpoint.
3860 @item Disposition
3861 Whether the breakpoint is marked to be disabled or deleted when hit.
3862 @item Enabled or Disabled
3863 Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
3864 that are not enabled.
3865 @item Address
3866 Where the breakpoint is in your program, as a memory address. For a
3867 pending breakpoint whose address is not yet known, this field will
3868 contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3869 library that has the symbol or line referred by breakpoint is loaded.
3870 See below for details. A breakpoint with several locations will
3871 have @samp{<MULTIPLE>} in this field---see below for details.
3872 @item What
3873 Where the breakpoint is in the source for your program, as a file and
3874 line number. For a pending breakpoint, the original string passed to
3875 the breakpoint command will be listed as it cannot be resolved until
3876 the appropriate shared library is loaded in the future.
3877 @end table
3878
3879 @noindent
3880 If a breakpoint is conditional, there are two evaluation modes: ``host'' and
3881 ``target''. If mode is ``host'', breakpoint condition evaluation is done by
3882 @value{GDBN} on the host's side. If it is ``target'', then the condition
3883 is evaluated by the target. The @code{info break} command shows
3884 the condition on the line following the affected breakpoint, together with
3885 its condition evaluation mode in between parentheses.
3886
3887 Breakpoint commands, if any, are listed after that. A pending breakpoint is
3888 allowed to have a condition specified for it. The condition is not parsed for
3889 validity until a shared library is loaded that allows the pending
3890 breakpoint to resolve to a valid location.
3891
3892 @noindent
3893 @code{info break} with a breakpoint
3894 number @var{n} as argument lists only that breakpoint. The
3895 convenience variable @code{$_} and the default examining-address for
3896 the @code{x} command are set to the address of the last breakpoint
3897 listed (@pxref{Memory, ,Examining Memory}).
3898
3899 @noindent
3900 @code{info break} displays a count of the number of times the breakpoint
3901 has been hit. This is especially useful in conjunction with the
3902 @code{ignore} command. You can ignore a large number of breakpoint
3903 hits, look at the breakpoint info to see how many times the breakpoint
3904 was hit, and then run again, ignoring one less than that number. This
3905 will get you quickly to the last hit of that breakpoint.
3906
3907 @noindent
3908 For a breakpoints with an enable count (xref) greater than 1,
3909 @code{info break} also displays that count.
3910
3911 @end table
3912
3913 @value{GDBN} allows you to set any number of breakpoints at the same place in
3914 your program. There is nothing silly or meaningless about this. When
3915 the breakpoints are conditional, this is even useful
3916 (@pxref{Conditions, ,Break Conditions}).
3917
3918 @cindex multiple locations, breakpoints
3919 @cindex breakpoints, multiple locations
3920 It is possible that a breakpoint corresponds to several locations
3921 in your program. Examples of this situation are:
3922
3923 @itemize @bullet
3924 @item
3925 Multiple functions in the program may have the same name.
3926
3927 @item
3928 For a C@t{++} constructor, the @value{NGCC} compiler generates several
3929 instances of the function body, used in different cases.
3930
3931 @item
3932 For a C@t{++} template function, a given line in the function can
3933 correspond to any number of instantiations.
3934
3935 @item
3936 For an inlined function, a given source line can correspond to
3937 several places where that function is inlined.
3938 @end itemize
3939
3940 In all those cases, @value{GDBN} will insert a breakpoint at all
3941 the relevant locations.
3942
3943 A breakpoint with multiple locations is displayed in the breakpoint
3944 table using several rows---one header row, followed by one row for
3945 each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3946 address column. The rows for individual locations contain the actual
3947 addresses for locations, and show the functions to which those
3948 locations belong. The number column for a location is of the form
3949 @var{breakpoint-number}.@var{location-number}.
3950
3951 For example:
3952
3953 @smallexample
3954 Num Type Disp Enb Address What
3955 1 breakpoint keep y <MULTIPLE>
3956 stop only if i==1
3957 breakpoint already hit 1 time
3958 1.1 y 0x080486a2 in void foo<int>() at t.cc:8
3959 1.2 y 0x080486ca in void foo<double>() at t.cc:8
3960 @end smallexample
3961
3962 You cannot delete the individual locations from a breakpoint. However,
3963 each location can be individually enabled or disabled by passing
3964 @var{breakpoint-number}.@var{location-number} as argument to the
3965 @code{enable} and @code{disable} commands. It's also possible to
3966 @code{enable} and @code{disable} a range of @var{location-number}
3967 locations using a @var{breakpoint-number} and two @var{location-number}s,
3968 in increasing order, separated by a hyphen, like
3969 @kbd{@var{breakpoint-number}.@var{location-number1}-@var{location-number2}},
3970 in which case @value{GDBN} acts on all the locations in the range (inclusive).
3971 Disabling or enabling the parent breakpoint (@pxref{Disabling}) affects
3972 all of the locations that belong to that breakpoint.
3973
3974 @cindex pending breakpoints
3975 It's quite common to have a breakpoint inside a shared library.
3976 Shared libraries can be loaded and unloaded explicitly,
3977 and possibly repeatedly, as the program is executed. To support
3978 this use case, @value{GDBN} updates breakpoint locations whenever
3979 any shared library is loaded or unloaded. Typically, you would
3980 set a breakpoint in a shared library at the beginning of your
3981 debugging session, when the library is not loaded, and when the
3982 symbols from the library are not available. When you try to set
3983 breakpoint, @value{GDBN} will ask you if you want to set
3984 a so called @dfn{pending breakpoint}---breakpoint whose address
3985 is not yet resolved.
3986
3987 After the program is run, whenever a new shared library is loaded,
3988 @value{GDBN} reevaluates all the breakpoints. When a newly loaded
3989 shared library contains the symbol or line referred to by some
3990 pending breakpoint, that breakpoint is resolved and becomes an
3991 ordinary breakpoint. When a library is unloaded, all breakpoints
3992 that refer to its symbols or source lines become pending again.
3993
3994 This logic works for breakpoints with multiple locations, too. For
3995 example, if you have a breakpoint in a C@t{++} template function, and
3996 a newly loaded shared library has an instantiation of that template,
3997 a new location is added to the list of locations for the breakpoint.
3998
3999 Except for having unresolved address, pending breakpoints do not
4000 differ from regular breakpoints. You can set conditions or commands,
4001 enable and disable them and perform other breakpoint operations.
4002
4003 @value{GDBN} provides some additional commands for controlling what
4004 happens when the @samp{break} command cannot resolve breakpoint
4005 address specification to an address:
4006
4007 @kindex set breakpoint pending
4008 @kindex show breakpoint pending
4009 @table @code
4010 @item set breakpoint pending auto
4011 This is the default behavior. When @value{GDBN} cannot find the breakpoint
4012 location, it queries you whether a pending breakpoint should be created.
4013
4014 @item set breakpoint pending on
4015 This indicates that an unrecognized breakpoint location should automatically
4016 result in a pending breakpoint being created.
4017
4018 @item set breakpoint pending off
4019 This indicates that pending breakpoints are not to be created. Any
4020 unrecognized breakpoint location results in an error. This setting does
4021 not affect any pending breakpoints previously created.
4022
4023 @item show breakpoint pending
4024 Show the current behavior setting for creating pending breakpoints.
4025 @end table
4026
4027 The settings above only affect the @code{break} command and its
4028 variants. Once breakpoint is set, it will be automatically updated
4029 as shared libraries are loaded and unloaded.
4030
4031 @cindex automatic hardware breakpoints
4032 For some targets, @value{GDBN} can automatically decide if hardware or
4033 software breakpoints should be used, depending on whether the
4034 breakpoint address is read-only or read-write. This applies to
4035 breakpoints set with the @code{break} command as well as to internal
4036 breakpoints set by commands like @code{next} and @code{finish}. For
4037 breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
4038 breakpoints.
4039
4040 You can control this automatic behaviour with the following commands:
4041
4042 @kindex set breakpoint auto-hw
4043 @kindex show breakpoint auto-hw
4044 @table @code
4045 @item set breakpoint auto-hw on
4046 This is the default behavior. When @value{GDBN} sets a breakpoint, it
4047 will try to use the target memory map to decide if software or hardware
4048 breakpoint must be used.
4049
4050 @item set breakpoint auto-hw off
4051 This indicates @value{GDBN} should not automatically select breakpoint
4052 type. If the target provides a memory map, @value{GDBN} will warn when
4053 trying to set software breakpoint at a read-only address.
4054 @end table
4055
4056 @value{GDBN} normally implements breakpoints by replacing the program code
4057 at the breakpoint address with a special instruction, which, when
4058 executed, given control to the debugger. By default, the program
4059 code is so modified only when the program is resumed. As soon as
4060 the program stops, @value{GDBN} restores the original instructions. This
4061 behaviour guards against leaving breakpoints inserted in the
4062 target should gdb abrubptly disconnect. However, with slow remote
4063 targets, inserting and removing breakpoint can reduce the performance.
4064 This behavior can be controlled with the following commands::
4065
4066 @kindex set breakpoint always-inserted
4067 @kindex show breakpoint always-inserted
4068 @table @code
4069 @item set breakpoint always-inserted off
4070 All breakpoints, including newly added by the user, are inserted in
4071 the target only when the target is resumed. All breakpoints are
4072 removed from the target when it stops. This is the default mode.
4073
4074 @item set breakpoint always-inserted on
4075 Causes all breakpoints to be inserted in the target at all times. If
4076 the user adds a new breakpoint, or changes an existing breakpoint, the
4077 breakpoints in the target are updated immediately. A breakpoint is
4078 removed from the target only when breakpoint itself is deleted.
4079 @end table
4080
4081 @value{GDBN} handles conditional breakpoints by evaluating these conditions
4082 when a breakpoint breaks. If the condition is true, then the process being
4083 debugged stops, otherwise the process is resumed.
4084
4085 If the target supports evaluating conditions on its end, @value{GDBN} may
4086 download the breakpoint, together with its conditions, to it.
4087
4088 This feature can be controlled via the following commands:
4089
4090 @kindex set breakpoint condition-evaluation
4091 @kindex show breakpoint condition-evaluation
4092 @table @code
4093 @item set breakpoint condition-evaluation host
4094 This option commands @value{GDBN} to evaluate the breakpoint
4095 conditions on the host's side. Unconditional breakpoints are sent to
4096 the target which in turn receives the triggers and reports them back to GDB
4097 for condition evaluation. This is the standard evaluation mode.
4098
4099 @item set breakpoint condition-evaluation target
4100 This option commands @value{GDBN} to download breakpoint conditions
4101 to the target at the moment of their insertion. The target
4102 is responsible for evaluating the conditional expression and reporting
4103 breakpoint stop events back to @value{GDBN} whenever the condition
4104 is true. Due to limitations of target-side evaluation, some conditions
4105 cannot be evaluated there, e.g., conditions that depend on local data
4106 that is only known to the host. Examples include
4107 conditional expressions involving convenience variables, complex types
4108 that cannot be handled by the agent expression parser and expressions
4109 that are too long to be sent over to the target, specially when the
4110 target is a remote system. In these cases, the conditions will be
4111 evaluated by @value{GDBN}.
4112
4113 @item set breakpoint condition-evaluation auto
4114 This is the default mode. If the target supports evaluating breakpoint
4115 conditions on its end, @value{GDBN} will download breakpoint conditions to
4116 the target (limitations mentioned previously apply). If the target does
4117 not support breakpoint condition evaluation, then @value{GDBN} will fallback
4118 to evaluating all these conditions on the host's side.
4119 @end table
4120
4121
4122 @cindex negative breakpoint numbers
4123 @cindex internal @value{GDBN} breakpoints
4124 @value{GDBN} itself sometimes sets breakpoints in your program for
4125 special purposes, such as proper handling of @code{longjmp} (in C
4126 programs). These internal breakpoints are assigned negative numbers,
4127 starting with @code{-1}; @samp{info breakpoints} does not display them.
4128 You can see these breakpoints with the @value{GDBN} maintenance command
4129 @samp{maint info breakpoints} (@pxref{maint info breakpoints}).
4130
4131
4132 @node Set Watchpoints
4133 @subsection Setting Watchpoints
4134
4135 @cindex setting watchpoints
4136 You can use a watchpoint to stop execution whenever the value of an
4137 expression changes, without having to predict a particular place where
4138 this may happen. (This is sometimes called a @dfn{data breakpoint}.)
4139 The expression may be as simple as the value of a single variable, or
4140 as complex as many variables combined by operators. Examples include:
4141
4142 @itemize @bullet
4143 @item
4144 A reference to the value of a single variable.
4145
4146 @item
4147 An address cast to an appropriate data type. For example,
4148 @samp{*(int *)0x12345678} will watch a 4-byte region at the specified
4149 address (assuming an @code{int} occupies 4 bytes).
4150
4151 @item
4152 An arbitrarily complex expression, such as @samp{a*b + c/d}. The
4153 expression can use any operators valid in the program's native
4154 language (@pxref{Languages}).
4155 @end itemize
4156
4157 You can set a watchpoint on an expression even if the expression can
4158 not be evaluated yet. For instance, you can set a watchpoint on
4159 @samp{*global_ptr} before @samp{global_ptr} is initialized.
4160 @value{GDBN} will stop when your program sets @samp{global_ptr} and
4161 the expression produces a valid value. If the expression becomes
4162 valid in some other way than changing a variable (e.g.@: if the memory
4163 pointed to by @samp{*global_ptr} becomes readable as the result of a
4164 @code{malloc} call), @value{GDBN} may not stop until the next time
4165 the expression changes.
4166
4167 @cindex software watchpoints
4168 @cindex hardware watchpoints
4169 Depending on your system, watchpoints may be implemented in software or
4170 hardware. @value{GDBN} does software watchpointing by single-stepping your
4171 program and testing the variable's value each time, which is hundreds of
4172 times slower than normal execution. (But this may still be worth it, to
4173 catch errors where you have no clue what part of your program is the
4174 culprit.)
4175
4176 On some systems, such as most PowerPC or x86-based targets,
4177 @value{GDBN} includes support for hardware watchpoints, which do not
4178 slow down the running of your program.
4179
4180 @table @code
4181 @kindex watch
4182 @item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]}
4183 Set a watchpoint for an expression. @value{GDBN} will break when the
4184 expression @var{expr} is written into by the program and its value
4185 changes. The simplest (and the most popular) use of this command is
4186 to watch the value of a single variable:
4187
4188 @smallexample
4189 (@value{GDBP}) watch foo
4190 @end smallexample
4191
4192 If the command includes a @code{@r{[}thread @var{thread-id}@r{]}}
4193 argument, @value{GDBN} breaks only when the thread identified by
4194 @var{thread-id} changes the value of @var{expr}. If any other threads
4195 change the value of @var{expr}, @value{GDBN} will not break. Note
4196 that watchpoints restricted to a single thread in this way only work
4197 with Hardware Watchpoints.
4198
4199 Ordinarily a watchpoint respects the scope of variables in @var{expr}
4200 (see below). The @code{-location} argument tells @value{GDBN} to
4201 instead watch the memory referred to by @var{expr}. In this case,
4202 @value{GDBN} will evaluate @var{expr}, take the address of the result,
4203 and watch the memory at that address. The type of the result is used
4204 to determine the size of the watched memory. If the expression's
4205 result does not have an address, then @value{GDBN} will print an
4206 error.
4207
4208 The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation
4209 of masked watchpoints, if the current architecture supports this
4210 feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC
4211 Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition
4212 to an address to watch. The mask specifies that some bits of an address
4213 (the bits which are reset in the mask) should be ignored when matching
4214 the address accessed by the inferior against the watchpoint address.
4215 Thus, a masked watchpoint watches many addresses simultaneously---those
4216 addresses whose unmasked bits are identical to the unmasked bits in the
4217 watchpoint address. The @code{mask} argument implies @code{-location}.
4218 Examples:
4219
4220 @smallexample
4221 (@value{GDBP}) watch foo mask 0xffff00ff
4222 (@value{GDBP}) watch *0xdeadbeef mask 0xffffff00
4223 @end smallexample
4224
4225 @kindex rwatch
4226 @item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]}
4227 Set a watchpoint that will break when the value of @var{expr} is read
4228 by the program.
4229
4230 @kindex awatch
4231 @item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]}
4232 Set a watchpoint that will break when @var{expr} is either read from
4233 or written into by the program.
4234
4235 @kindex info watchpoints @r{[}@var{list}@dots{}@r{]}
4236 @item info watchpoints @r{[}@var{list}@dots{}@r{]}
4237 This command prints a list of watchpoints, using the same format as
4238 @code{info break} (@pxref{Set Breaks}).
4239 @end table
4240
4241 If you watch for a change in a numerically entered address you need to
4242 dereference it, as the address itself is just a constant number which will
4243 never change. @value{GDBN} refuses to create a watchpoint that watches
4244 a never-changing value:
4245
4246 @smallexample
4247 (@value{GDBP}) watch 0x600850
4248 Cannot watch constant value 0x600850.
4249 (@value{GDBP}) watch *(int *) 0x600850
4250 Watchpoint 1: *(int *) 6293584
4251 @end smallexample
4252
4253 @value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
4254 watchpoints execute very quickly, and the debugger reports a change in
4255 value at the exact instruction where the change occurs. If @value{GDBN}
4256 cannot set a hardware watchpoint, it sets a software watchpoint, which
4257 executes more slowly and reports the change in value at the next
4258 @emph{statement}, not the instruction, after the change occurs.
4259
4260 @cindex use only software watchpoints
4261 You can force @value{GDBN} to use only software watchpoints with the
4262 @kbd{set can-use-hw-watchpoints 0} command. With this variable set to
4263 zero, @value{GDBN} will never try to use hardware watchpoints, even if
4264 the underlying system supports them. (Note that hardware-assisted
4265 watchpoints that were set @emph{before} setting
4266 @code{can-use-hw-watchpoints} to zero will still use the hardware
4267 mechanism of watching expression values.)
4268
4269 @table @code
4270 @item set can-use-hw-watchpoints
4271 @kindex set can-use-hw-watchpoints
4272 Set whether or not to use hardware watchpoints.
4273
4274 @item show can-use-hw-watchpoints
4275 @kindex show can-use-hw-watchpoints
4276 Show the current mode of using hardware watchpoints.
4277 @end table
4278
4279 For remote targets, you can restrict the number of hardware
4280 watchpoints @value{GDBN} will use, see @ref{set remote
4281 hardware-breakpoint-limit}.
4282
4283 When you issue the @code{watch} command, @value{GDBN} reports
4284
4285 @smallexample
4286 Hardware watchpoint @var{num}: @var{expr}
4287 @end smallexample
4288
4289 @noindent
4290 if it was able to set a hardware watchpoint.
4291
4292 Currently, the @code{awatch} and @code{rwatch} commands can only set
4293 hardware watchpoints, because accesses to data that don't change the
4294 value of the watched expression cannot be detected without examining
4295 every instruction as it is being executed, and @value{GDBN} does not do
4296 that currently. If @value{GDBN} finds that it is unable to set a
4297 hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
4298 will print a message like this:
4299
4300 @smallexample
4301 Expression cannot be implemented with read/access watchpoint.
4302 @end smallexample
4303
4304 Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
4305 data type of the watched expression is wider than what a hardware
4306 watchpoint on the target machine can handle. For example, some systems
4307 can only watch regions that are up to 4 bytes wide; on such systems you
4308 cannot set hardware watchpoints for an expression that yields a
4309 double-precision floating-point number (which is typically 8 bytes
4310 wide). As a work-around, it might be possible to break the large region
4311 into a series of smaller ones and watch them with separate watchpoints.
4312
4313 If you set too many hardware watchpoints, @value{GDBN} might be unable
4314 to insert all of them when you resume the execution of your program.
4315 Since the precise number of active watchpoints is unknown until such
4316 time as the program is about to be resumed, @value{GDBN} might not be
4317 able to warn you about this when you set the watchpoints, and the
4318 warning will be printed only when the program is resumed:
4319
4320 @smallexample
4321 Hardware watchpoint @var{num}: Could not insert watchpoint
4322 @end smallexample
4323
4324 @noindent
4325 If this happens, delete or disable some of the watchpoints.
4326
4327 Watching complex expressions that reference many variables can also
4328 exhaust the resources available for hardware-assisted watchpoints.
4329 That's because @value{GDBN} needs to watch every variable in the
4330 expression with separately allocated resources.
4331
4332 If you call a function interactively using @code{print} or @code{call},
4333 any watchpoints you have set will be inactive until @value{GDBN} reaches another
4334 kind of breakpoint or the call completes.
4335
4336 @value{GDBN} automatically deletes watchpoints that watch local
4337 (automatic) variables, or expressions that involve such variables, when
4338 they go out of scope, that is, when the execution leaves the block in
4339 which these variables were defined. In particular, when the program
4340 being debugged terminates, @emph{all} local variables go out of scope,
4341 and so only watchpoints that watch global variables remain set. If you
4342 rerun the program, you will need to set all such watchpoints again. One
4343 way of doing that would be to set a code breakpoint at the entry to the
4344 @code{main} function and when it breaks, set all the watchpoints.
4345
4346 @cindex watchpoints and threads
4347 @cindex threads and watchpoints
4348 In multi-threaded programs, watchpoints will detect changes to the
4349 watched expression from every thread.
4350
4351 @quotation
4352 @emph{Warning:} In multi-threaded programs, software watchpoints
4353 have only limited usefulness. If @value{GDBN} creates a software
4354 watchpoint, it can only watch the value of an expression @emph{in a
4355 single thread}. If you are confident that the expression can only
4356 change due to the current thread's activity (and if you are also
4357 confident that no other thread can become current), then you can use
4358 software watchpoints as usual. However, @value{GDBN} may not notice
4359 when a non-current thread's activity changes the expression. (Hardware
4360 watchpoints, in contrast, watch an expression in all threads.)
4361 @end quotation
4362
4363 @xref{set remote hardware-watchpoint-limit}.
4364
4365 @node Set Catchpoints
4366 @subsection Setting Catchpoints
4367 @cindex catchpoints, setting
4368 @cindex exception handlers
4369 @cindex event handling
4370
4371 You can use @dfn{catchpoints} to cause the debugger to stop for certain
4372 kinds of program events, such as C@t{++} exceptions or the loading of a
4373 shared library. Use the @code{catch} command to set a catchpoint.
4374
4375 @table @code
4376 @kindex catch
4377 @item catch @var{event}
4378 Stop when @var{event} occurs. The @var{event} can be any of the following:
4379
4380 @table @code
4381 @item throw @r{[}@var{regexp}@r{]}
4382 @itemx rethrow @r{[}@var{regexp}@r{]}
4383 @itemx catch @r{[}@var{regexp}@r{]}
4384 @kindex catch throw
4385 @kindex catch rethrow
4386 @kindex catch catch
4387 @cindex stop on C@t{++} exceptions
4388 The throwing, re-throwing, or catching of a C@t{++} exception.
4389
4390 If @var{regexp} is given, then only exceptions whose type matches the
4391 regular expression will be caught.
4392
4393 @vindex $_exception@r{, convenience variable}
4394 The convenience variable @code{$_exception} is available at an
4395 exception-related catchpoint, on some systems. This holds the
4396 exception being thrown.
4397
4398 There are currently some limitations to C@t{++} exception handling in
4399 @value{GDBN}:
4400
4401 @itemize @bullet
4402 @item
4403 The support for these commands is system-dependent. Currently, only
4404 systems using the @samp{gnu-v3} C@t{++} ABI (@pxref{ABI}) are
4405 supported.
4406
4407 @item
4408 The regular expression feature and the @code{$_exception} convenience
4409 variable rely on the presence of some SDT probes in @code{libstdc++}.
4410 If these probes are not present, then these features cannot be used.
4411 These probes were first available in the GCC 4.8 release, but whether
4412 or not they are available in your GCC also depends on how it was
4413 built.
4414
4415 @item
4416 The @code{$_exception} convenience variable is only valid at the
4417 instruction at which an exception-related catchpoint is set.
4418
4419 @item
4420 When an exception-related catchpoint is hit, @value{GDBN} stops at a
4421 location in the system library which implements runtime exception
4422 support for C@t{++}, usually @code{libstdc++}. You can use @code{up}
4423 (@pxref{Selection}) to get to your code.
4424
4425 @item
4426 If you call a function interactively, @value{GDBN} normally returns
4427 control to you when the function has finished executing. If the call
4428 raises an exception, however, the call may bypass the mechanism that
4429 returns control to you and cause your program either to abort or to
4430 simply continue running until it hits a breakpoint, catches a signal
4431 that @value{GDBN} is listening for, or exits. This is the case even if
4432 you set a catchpoint for the exception; catchpoints on exceptions are
4433 disabled within interactive calls. @xref{Calling}, for information on
4434 controlling this with @code{set unwind-on-terminating-exception}.
4435
4436 @item
4437 You cannot raise an exception interactively.
4438
4439 @item
4440 You cannot install an exception handler interactively.
4441 @end itemize
4442
4443 @item exception
4444 @kindex catch exception
4445 @cindex Ada exception catching
4446 @cindex catch Ada exceptions
4447 An Ada exception being raised. If an exception name is specified
4448 at the end of the command (eg @code{catch exception Program_Error}),
4449 the debugger will stop only when this specific exception is raised.
4450 Otherwise, the debugger stops execution when any Ada exception is raised.
4451
4452 When inserting an exception catchpoint on a user-defined exception whose
4453 name is identical to one of the exceptions defined by the language, the
4454 fully qualified name must be used as the exception name. Otherwise,
4455 @value{GDBN} will assume that it should stop on the pre-defined exception
4456 rather than the user-defined one. For instance, assuming an exception
4457 called @code{Constraint_Error} is defined in package @code{Pck}, then
4458 the command to use to catch such exceptions is @kbd{catch exception
4459 Pck.Constraint_Error}.
4460
4461 @item handlers
4462 @kindex catch handlers
4463 @cindex Ada exception handlers catching
4464 @cindex catch Ada exceptions when handled
4465 An Ada exception being handled. If an exception name is
4466 specified at the end of the command
4467 (eg @kbd{catch handlers Program_Error}), the debugger will stop
4468 only when this specific exception is handled.
4469 Otherwise, the debugger stops execution when any Ada exception is handled.
4470
4471 When inserting a handlers catchpoint on a user-defined
4472 exception whose name is identical to one of the exceptions
4473 defined by the language, the fully qualified name must be used
4474 as the exception name. Otherwise, @value{GDBN} will assume that it
4475 should stop on the pre-defined exception rather than the
4476 user-defined one. For instance, assuming an exception called
4477 @code{Constraint_Error} is defined in package @code{Pck}, then the
4478 command to use to catch such exceptions handling is
4479 @kbd{catch handlers Pck.Constraint_Error}.
4480
4481 @item exception unhandled
4482 @kindex catch exception unhandled
4483 An exception that was raised but is not handled by the program.
4484
4485 @item assert
4486 @kindex catch assert
4487 A failed Ada assertion.
4488
4489 @item exec
4490 @kindex catch exec
4491 @cindex break on fork/exec
4492 A call to @code{exec}.
4493
4494 @item syscall
4495 @itemx syscall @r{[}@var{name} @r{|} @var{number} @r{|} @r{group:}@var{groupname} @r{|} @r{g:}@var{groupname}@r{]} @dots{}
4496 @kindex catch syscall
4497 @cindex break on a system call.
4498 A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
4499 syscall is a mechanism for application programs to request a service
4500 from the operating system (OS) or one of the OS system services.
4501 @value{GDBN} can catch some or all of the syscalls issued by the
4502 debuggee, and show the related information for each syscall. If no
4503 argument is specified, calls to and returns from all system calls
4504 will be caught.
4505
4506 @var{name} can be any system call name that is valid for the
4507 underlying OS. Just what syscalls are valid depends on the OS. On
4508 GNU and Unix systems, you can find the full list of valid syscall
4509 names on @file{/usr/include/asm/unistd.h}.
4510
4511 @c For MS-Windows, the syscall names and the corresponding numbers
4512 @c can be found, e.g., on this URL:
4513 @c http://www.metasploit.com/users/opcode/syscalls.html
4514 @c but we don't support Windows syscalls yet.
4515
4516 Normally, @value{GDBN} knows in advance which syscalls are valid for
4517 each OS, so you can use the @value{GDBN} command-line completion
4518 facilities (@pxref{Completion,, command completion}) to list the
4519 available choices.
4520
4521 You may also specify the system call numerically. A syscall's
4522 number is the value passed to the OS's syscall dispatcher to
4523 identify the requested service. When you specify the syscall by its
4524 name, @value{GDBN} uses its database of syscalls to convert the name
4525 into the corresponding numeric code, but using the number directly
4526 may be useful if @value{GDBN}'s database does not have the complete
4527 list of syscalls on your system (e.g., because @value{GDBN} lags
4528 behind the OS upgrades).
4529
4530 You may specify a group of related syscalls to be caught at once using
4531 the @code{group:} syntax (@code{g:} is a shorter equivalent). For
4532 instance, on some platforms @value{GDBN} allows you to catch all
4533 network related syscalls, by passing the argument @code{group:network}
4534 to @code{catch syscall}. Note that not all syscall groups are
4535 available in every system. You can use the command completion
4536 facilities (@pxref{Completion,, command completion}) to list the
4537 syscall groups available on your environment.
4538
4539 The example below illustrates how this command works if you don't provide
4540 arguments to it:
4541
4542 @smallexample
4543 (@value{GDBP}) catch syscall
4544 Catchpoint 1 (syscall)
4545 (@value{GDBP}) r
4546 Starting program: /tmp/catch-syscall
4547
4548 Catchpoint 1 (call to syscall 'close'), \
4549 0xffffe424 in __kernel_vsyscall ()
4550 (@value{GDBP}) c
4551 Continuing.
4552
4553 Catchpoint 1 (returned from syscall 'close'), \
4554 0xffffe424 in __kernel_vsyscall ()
4555 (@value{GDBP})
4556 @end smallexample
4557
4558 Here is an example of catching a system call by name:
4559
4560 @smallexample
4561 (@value{GDBP}) catch syscall chroot
4562 Catchpoint 1 (syscall 'chroot' [61])
4563 (@value{GDBP}) r
4564 Starting program: /tmp/catch-syscall
4565
4566 Catchpoint 1 (call to syscall 'chroot'), \
4567 0xffffe424 in __kernel_vsyscall ()
4568 (@value{GDBP}) c
4569 Continuing.
4570
4571 Catchpoint 1 (returned from syscall 'chroot'), \
4572 0xffffe424 in __kernel_vsyscall ()
4573 (@value{GDBP})
4574 @end smallexample
4575
4576 An example of specifying a system call numerically. In the case
4577 below, the syscall number has a corresponding entry in the XML
4578 file, so @value{GDBN} finds its name and prints it:
4579
4580 @smallexample
4581 (@value{GDBP}) catch syscall 252
4582 Catchpoint 1 (syscall(s) 'exit_group')
4583 (@value{GDBP}) r
4584 Starting program: /tmp/catch-syscall
4585
4586 Catchpoint 1 (call to syscall 'exit_group'), \
4587 0xffffe424 in __kernel_vsyscall ()
4588 (@value{GDBP}) c
4589 Continuing.
4590
4591 Program exited normally.
4592 (@value{GDBP})
4593 @end smallexample
4594
4595 Here is an example of catching a syscall group:
4596
4597 @smallexample
4598 (@value{GDBP}) catch syscall group:process
4599 Catchpoint 1 (syscalls 'exit' [1] 'fork' [2] 'waitpid' [7]
4600 'execve' [11] 'wait4' [114] 'clone' [120] 'vfork' [190]
4601 'exit_group' [252] 'waitid' [284] 'unshare' [310])
4602 (@value{GDBP}) r
4603 Starting program: /tmp/catch-syscall
4604
4605 Catchpoint 1 (call to syscall fork), 0x00007ffff7df4e27 in open64 ()
4606 from /lib64/ld-linux-x86-64.so.2
4607
4608 (@value{GDBP}) c
4609 Continuing.
4610 @end smallexample
4611
4612 However, there can be situations when there is no corresponding name
4613 in XML file for that syscall number. In this case, @value{GDBN} prints
4614 a warning message saying that it was not able to find the syscall name,
4615 but the catchpoint will be set anyway. See the example below:
4616
4617 @smallexample
4618 (@value{GDBP}) catch syscall 764
4619 warning: The number '764' does not represent a known syscall.
4620 Catchpoint 2 (syscall 764)
4621 (@value{GDBP})
4622 @end smallexample
4623
4624 If you configure @value{GDBN} using the @samp{--without-expat} option,
4625 it will not be able to display syscall names. Also, if your
4626 architecture does not have an XML file describing its system calls,
4627 you will not be able to see the syscall names. It is important to
4628 notice that these two features are used for accessing the syscall
4629 name database. In either case, you will see a warning like this:
4630
4631 @smallexample
4632 (@value{GDBP}) catch syscall
4633 warning: Could not open "syscalls/i386-linux.xml"
4634 warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
4635 GDB will not be able to display syscall names.
4636 Catchpoint 1 (syscall)
4637 (@value{GDBP})
4638 @end smallexample
4639
4640 Of course, the file name will change depending on your architecture and system.
4641
4642 Still using the example above, you can also try to catch a syscall by its
4643 number. In this case, you would see something like:
4644
4645 @smallexample
4646 (@value{GDBP}) catch syscall 252
4647 Catchpoint 1 (syscall(s) 252)
4648 @end smallexample
4649
4650 Again, in this case @value{GDBN} would not be able to display syscall's names.
4651
4652 @item fork
4653 @kindex catch fork
4654 A call to @code{fork}.
4655
4656 @item vfork
4657 @kindex catch vfork
4658 A call to @code{vfork}.
4659
4660 @item load @r{[}regexp@r{]}
4661 @itemx unload @r{[}regexp@r{]}
4662 @kindex catch load
4663 @kindex catch unload
4664 The loading or unloading of a shared library. If @var{regexp} is
4665 given, then the catchpoint will stop only if the regular expression
4666 matches one of the affected libraries.
4667
4668 @item signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]}
4669 @kindex catch signal
4670 The delivery of a signal.
4671
4672 With no arguments, this catchpoint will catch any signal that is not
4673 used internally by @value{GDBN}, specifically, all signals except
4674 @samp{SIGTRAP} and @samp{SIGINT}.
4675
4676 With the argument @samp{all}, all signals, including those used by
4677 @value{GDBN}, will be caught. This argument cannot be used with other
4678 signal names.
4679
4680 Otherwise, the arguments are a list of signal names as given to
4681 @code{handle} (@pxref{Signals}). Only signals specified in this list
4682 will be caught.
4683
4684 One reason that @code{catch signal} can be more useful than
4685 @code{handle} is that you can attach commands and conditions to the
4686 catchpoint.
4687
4688 When a signal is caught by a catchpoint, the signal's @code{stop} and
4689 @code{print} settings, as specified by @code{handle}, are ignored.
4690 However, whether the signal is still delivered to the inferior depends
4691 on the @code{pass} setting; this can be changed in the catchpoint's
4692 commands.
4693
4694 @end table
4695
4696 @item tcatch @var{event}
4697 @kindex tcatch
4698 Set a catchpoint that is enabled only for one stop. The catchpoint is
4699 automatically deleted after the first time the event is caught.
4700
4701 @end table
4702
4703 Use the @code{info break} command to list the current catchpoints.
4704
4705
4706 @node Delete Breaks
4707 @subsection Deleting Breakpoints
4708
4709 @cindex clearing breakpoints, watchpoints, catchpoints
4710 @cindex deleting breakpoints, watchpoints, catchpoints
4711 It is often necessary to eliminate a breakpoint, watchpoint, or
4712 catchpoint once it has done its job and you no longer want your program
4713 to stop there. This is called @dfn{deleting} the breakpoint. A
4714 breakpoint that has been deleted no longer exists; it is forgotten.
4715
4716 With the @code{clear} command you can delete breakpoints according to
4717 where they are in your program. With the @code{delete} command you can
4718 delete individual breakpoints, watchpoints, or catchpoints by specifying
4719 their breakpoint numbers.
4720
4721 It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4722 automatically ignores breakpoints on the first instruction to be executed
4723 when you continue execution without changing the execution address.
4724
4725 @table @code
4726 @kindex clear
4727 @item clear
4728 Delete any breakpoints at the next instruction to be executed in the
4729 selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
4730 the innermost frame is selected, this is a good way to delete a
4731 breakpoint where your program just stopped.
4732
4733 @item clear @var{location}
4734 Delete any breakpoints set at the specified @var{location}.
4735 @xref{Specify Location}, for the various forms of @var{location}; the
4736 most useful ones are listed below:
4737
4738 @table @code
4739 @item clear @var{function}
4740 @itemx clear @var{filename}:@var{function}
4741 Delete any breakpoints set at entry to the named @var{function}.
4742
4743 @item clear @var{linenum}
4744 @itemx clear @var{filename}:@var{linenum}
4745 Delete any breakpoints set at or within the code of the specified
4746 @var{linenum} of the specified @var{filename}.
4747 @end table
4748
4749 @cindex delete breakpoints
4750 @kindex delete
4751 @kindex d @r{(@code{delete})}
4752 @item delete @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]}
4753 Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4754 list specified as argument. If no argument is specified, delete all
4755 breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4756 confirm off}). You can abbreviate this command as @code{d}.
4757 @end table
4758
4759 @node Disabling
4760 @subsection Disabling Breakpoints
4761
4762 @cindex enable/disable a breakpoint
4763 Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4764 prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4765 it had been deleted, but remembers the information on the breakpoint so
4766 that you can @dfn{enable} it again later.
4767
4768 You disable and enable breakpoints, watchpoints, and catchpoints with
4769 the @code{enable} and @code{disable} commands, optionally specifying
4770 one or more breakpoint numbers as arguments. Use @code{info break} to
4771 print a list of all breakpoints, watchpoints, and catchpoints if you
4772 do not know which numbers to use.
4773
4774 Disabling and enabling a breakpoint that has multiple locations
4775 affects all of its locations.
4776
4777 A breakpoint, watchpoint, or catchpoint can have any of several
4778 different states of enablement:
4779
4780 @itemize @bullet
4781 @item
4782 Enabled. The breakpoint stops your program. A breakpoint set
4783 with the @code{break} command starts out in this state.
4784 @item
4785 Disabled. The breakpoint has no effect on your program.
4786 @item
4787 Enabled once. The breakpoint stops your program, but then becomes
4788 disabled.
4789 @item
4790 Enabled for a count. The breakpoint stops your program for the next
4791 N times, then becomes disabled.
4792 @item
4793 Enabled for deletion. The breakpoint stops your program, but
4794 immediately after it does so it is deleted permanently. A breakpoint
4795 set with the @code{tbreak} command starts out in this state.
4796 @end itemize
4797
4798 You can use the following commands to enable or disable breakpoints,
4799 watchpoints, and catchpoints:
4800
4801 @table @code
4802 @kindex disable
4803 @kindex dis @r{(@code{disable})}
4804 @item disable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]}
4805 Disable the specified breakpoints---or all breakpoints, if none are
4806 listed. A disabled breakpoint has no effect but is not forgotten. All
4807 options such as ignore-counts, conditions and commands are remembered in
4808 case the breakpoint is enabled again later. You may abbreviate
4809 @code{disable} as @code{dis}.
4810
4811 @kindex enable
4812 @item enable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]}
4813 Enable the specified breakpoints (or all defined breakpoints). They
4814 become effective once again in stopping your program.
4815
4816 @item enable @r{[}breakpoints@r{]} once @var{list}@dots{}
4817 Enable the specified breakpoints temporarily. @value{GDBN} disables any
4818 of these breakpoints immediately after stopping your program.
4819
4820 @item enable @r{[}breakpoints@r{]} count @var{count} @var{list}@dots{}
4821 Enable the specified breakpoints temporarily. @value{GDBN} records
4822 @var{count} with each of the specified breakpoints, and decrements a
4823 breakpoint's count when it is hit. When any count reaches 0,
4824 @value{GDBN} disables that breakpoint. If a breakpoint has an ignore
4825 count (@pxref{Conditions, ,Break Conditions}), that will be
4826 decremented to 0 before @var{count} is affected.
4827
4828 @item enable @r{[}breakpoints@r{]} delete @var{list}@dots{}
4829 Enable the specified breakpoints to work once, then die. @value{GDBN}
4830 deletes any of these breakpoints as soon as your program stops there.
4831 Breakpoints set by the @code{tbreak} command start out in this state.
4832 @end table
4833
4834 @c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4835 @c confusing: tbreak is also initially enabled.
4836 Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
4837 ,Setting Breakpoints}), breakpoints that you set are initially enabled;
4838 subsequently, they become disabled or enabled only when you use one of
4839 the commands above. (The command @code{until} can set and delete a
4840 breakpoint of its own, but it does not change the state of your other
4841 breakpoints; see @ref{Continuing and Stepping, ,Continuing and
4842 Stepping}.)
4843
4844 @node Conditions
4845 @subsection Break Conditions
4846 @cindex conditional breakpoints
4847 @cindex breakpoint conditions
4848
4849 @c FIXME what is scope of break condition expr? Context where wanted?
4850 @c in particular for a watchpoint?
4851 The simplest sort of breakpoint breaks every time your program reaches a
4852 specified place. You can also specify a @dfn{condition} for a
4853 breakpoint. A condition is just a Boolean expression in your
4854 programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4855 a condition evaluates the expression each time your program reaches it,
4856 and your program stops only if the condition is @emph{true}.
4857
4858 This is the converse of using assertions for program validation; in that
4859 situation, you want to stop when the assertion is violated---that is,
4860 when the condition is false. In C, if you want to test an assertion expressed
4861 by the condition @var{assert}, you should set the condition
4862 @samp{! @var{assert}} on the appropriate breakpoint.
4863
4864 Conditions are also accepted for watchpoints; you may not need them,
4865 since a watchpoint is inspecting the value of an expression anyhow---but
4866 it might be simpler, say, to just set a watchpoint on a variable name,
4867 and specify a condition that tests whether the new value is an interesting
4868 one.
4869
4870 Break conditions can have side effects, and may even call functions in
4871 your program. This can be useful, for example, to activate functions
4872 that log program progress, or to use your own print functions to
4873 format special data structures. The effects are completely predictable
4874 unless there is another enabled breakpoint at the same address. (In
4875 that case, @value{GDBN} might see the other breakpoint first and stop your
4876 program without checking the condition of this one.) Note that
4877 breakpoint commands are usually more convenient and flexible than break
4878 conditions for the
4879 purpose of performing side effects when a breakpoint is reached
4880 (@pxref{Break Commands, ,Breakpoint Command Lists}).
4881
4882 Breakpoint conditions can also be evaluated on the target's side if
4883 the target supports it. Instead of evaluating the conditions locally,
4884 @value{GDBN} encodes the expression into an agent expression
4885 (@pxref{Agent Expressions}) suitable for execution on the target,
4886 independently of @value{GDBN}. Global variables become raw memory
4887 locations, locals become stack accesses, and so forth.
4888
4889 In this case, @value{GDBN} will only be notified of a breakpoint trigger
4890 when its condition evaluates to true. This mechanism may provide faster
4891 response times depending on the performance characteristics of the target
4892 since it does not need to keep @value{GDBN} informed about
4893 every breakpoint trigger, even those with false conditions.
4894
4895 Break conditions can be specified when a breakpoint is set, by using
4896 @samp{if} in the arguments to the @code{break} command. @xref{Set
4897 Breaks, ,Setting Breakpoints}. They can also be changed at any time
4898 with the @code{condition} command.
4899
4900 You can also use the @code{if} keyword with the @code{watch} command.
4901 The @code{catch} command does not recognize the @code{if} keyword;
4902 @code{condition} is the only way to impose a further condition on a
4903 catchpoint.
4904
4905 @table @code
4906 @kindex condition
4907 @item condition @var{bnum} @var{expression}
4908 Specify @var{expression} as the break condition for breakpoint,
4909 watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4910 breakpoint @var{bnum} stops your program only if the value of
4911 @var{expression} is true (nonzero, in C). When you use
4912 @code{condition}, @value{GDBN} checks @var{expression} immediately for
4913 syntactic correctness, and to determine whether symbols in it have
4914 referents in the context of your breakpoint. If @var{expression} uses
4915 symbols not referenced in the context of the breakpoint, @value{GDBN}
4916 prints an error message:
4917
4918 @smallexample
4919 No symbol "foo" in current context.
4920 @end smallexample
4921
4922 @noindent
4923 @value{GDBN} does
4924 not actually evaluate @var{expression} at the time the @code{condition}
4925 command (or a command that sets a breakpoint with a condition, like
4926 @code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
4927
4928 @item condition @var{bnum}
4929 Remove the condition from breakpoint number @var{bnum}. It becomes
4930 an ordinary unconditional breakpoint.
4931 @end table
4932
4933 @cindex ignore count (of breakpoint)
4934 A special case of a breakpoint condition is to stop only when the
4935 breakpoint has been reached a certain number of times. This is so
4936 useful that there is a special way to do it, using the @dfn{ignore
4937 count} of the breakpoint. Every breakpoint has an ignore count, which
4938 is an integer. Most of the time, the ignore count is zero, and
4939 therefore has no effect. But if your program reaches a breakpoint whose
4940 ignore count is positive, then instead of stopping, it just decrements
4941 the ignore count by one and continues. As a result, if the ignore count
4942 value is @var{n}, the breakpoint does not stop the next @var{n} times
4943 your program reaches it.
4944
4945 @table @code
4946 @kindex ignore
4947 @item ignore @var{bnum} @var{count}
4948 Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4949 The next @var{count} times the breakpoint is reached, your program's
4950 execution does not stop; other than to decrement the ignore count, @value{GDBN}
4951 takes no action.
4952
4953 To make the breakpoint stop the next time it is reached, specify
4954 a count of zero.
4955
4956 When you use @code{continue} to resume execution of your program from a
4957 breakpoint, you can specify an ignore count directly as an argument to
4958 @code{continue}, rather than using @code{ignore}. @xref{Continuing and
4959 Stepping,,Continuing and Stepping}.
4960
4961 If a breakpoint has a positive ignore count and a condition, the
4962 condition is not checked. Once the ignore count reaches zero,
4963 @value{GDBN} resumes checking the condition.
4964
4965 You could achieve the effect of the ignore count with a condition such
4966 as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4967 is decremented each time. @xref{Convenience Vars, ,Convenience
4968 Variables}.
4969 @end table
4970
4971 Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4972
4973
4974 @node Break Commands
4975 @subsection Breakpoint Command Lists
4976
4977 @cindex breakpoint commands
4978 You can give any breakpoint (or watchpoint or catchpoint) a series of
4979 commands to execute when your program stops due to that breakpoint. For
4980 example, you might want to print the values of certain expressions, or
4981 enable other breakpoints.
4982
4983 @table @code
4984 @kindex commands
4985 @kindex end@r{ (breakpoint commands)}
4986 @item commands @r{[}@var{list}@dots{}@r{]}
4987 @itemx @dots{} @var{command-list} @dots{}
4988 @itemx end
4989 Specify a list of commands for the given breakpoints. The commands
4990 themselves appear on the following lines. Type a line containing just
4991 @code{end} to terminate the commands.
4992
4993 To remove all commands from a breakpoint, type @code{commands} and
4994 follow it immediately with @code{end}; that is, give no commands.
4995
4996 With no argument, @code{commands} refers to the last breakpoint,
4997 watchpoint, or catchpoint set (not to the breakpoint most recently
4998 encountered). If the most recent breakpoints were set with a single
4999 command, then the @code{commands} will apply to all the breakpoints
5000 set by that command. This applies to breakpoints set by
5001 @code{rbreak}, and also applies when a single @code{break} command
5002 creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous
5003 Expressions}).
5004 @end table
5005
5006 Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
5007 disabled within a @var{command-list}.
5008
5009 You can use breakpoint commands to start your program up again. Simply
5010 use the @code{continue} command, or @code{step}, or any other command
5011 that resumes execution.
5012
5013 Any other commands in the command list, after a command that resumes
5014 execution, are ignored. This is because any time you resume execution
5015 (even with a simple @code{next} or @code{step}), you may encounter
5016 another breakpoint---which could have its own command list, leading to
5017 ambiguities about which list to execute.
5018
5019 @kindex silent
5020 If the first command you specify in a command list is @code{silent}, the
5021 usual message about stopping at a breakpoint is not printed. This may
5022 be desirable for breakpoints that are to print a specific message and
5023 then continue. If none of the remaining commands print anything, you
5024 see no sign that the breakpoint was reached. @code{silent} is
5025 meaningful only at the beginning of a breakpoint command list.
5026
5027 The commands @code{echo}, @code{output}, and @code{printf} allow you to
5028 print precisely controlled output, and are often useful in silent
5029 breakpoints. @xref{Output, ,Commands for Controlled Output}.
5030
5031 For example, here is how you could use breakpoint commands to print the
5032 value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
5033
5034 @smallexample
5035 break foo if x>0
5036 commands
5037 silent
5038 printf "x is %d\n",x
5039 cont
5040 end
5041 @end smallexample
5042
5043 One application for breakpoint commands is to compensate for one bug so
5044 you can test for another. Put a breakpoint just after the erroneous line
5045 of code, give it a condition to detect the case in which something
5046 erroneous has been done, and give it commands to assign correct values
5047 to any variables that need them. End with the @code{continue} command
5048 so that your program does not stop, and start with the @code{silent}
5049 command so that no output is produced. Here is an example:
5050
5051 @smallexample
5052 break 403
5053 commands
5054 silent
5055 set x = y + 4
5056 cont
5057 end
5058 @end smallexample
5059
5060 @node Dynamic Printf
5061 @subsection Dynamic Printf
5062
5063 @cindex dynamic printf
5064 @cindex dprintf
5065 The dynamic printf command @code{dprintf} combines a breakpoint with
5066 formatted printing of your program's data to give you the effect of
5067 inserting @code{printf} calls into your program on-the-fly, without
5068 having to recompile it.
5069
5070 In its most basic form, the output goes to the GDB console. However,
5071 you can set the variable @code{dprintf-style} for alternate handling.
5072 For instance, you can ask to format the output by calling your
5073 program's @code{printf} function. This has the advantage that the
5074 characters go to the program's output device, so they can recorded in
5075 redirects to files and so forth.
5076
5077 If you are doing remote debugging with a stub or agent, you can also
5078 ask to have the printf handled by the remote agent. In addition to
5079 ensuring that the output goes to the remote program's device along
5080 with any other output the program might produce, you can also ask that
5081 the dprintf remain active even after disconnecting from the remote
5082 target. Using the stub/agent is also more efficient, as it can do
5083 everything without needing to communicate with @value{GDBN}.
5084
5085 @table @code
5086 @kindex dprintf
5087 @item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}]
5088 Whenever execution reaches @var{location}, print the values of one or
5089 more @var{expressions} under the control of the string @var{template}.
5090 To print several values, separate them with commas.
5091
5092 @item set dprintf-style @var{style}
5093 Set the dprintf output to be handled in one of several different
5094 styles enumerated below. A change of style affects all existing
5095 dynamic printfs immediately. (If you need individual control over the
5096 print commands, simply define normal breakpoints with
5097 explicitly-supplied command lists.)
5098
5099 @table @code
5100 @item gdb
5101 @kindex dprintf-style gdb
5102 Handle the output using the @value{GDBN} @code{printf} command.
5103
5104 @item call
5105 @kindex dprintf-style call
5106 Handle the output by calling a function in your program (normally
5107 @code{printf}).
5108
5109 @item agent
5110 @kindex dprintf-style agent
5111 Have the remote debugging agent (such as @code{gdbserver}) handle
5112 the output itself. This style is only available for agents that
5113 support running commands on the target.
5114 @end table
5115
5116 @item set dprintf-function @var{function}
5117 Set the function to call if the dprintf style is @code{call}. By
5118 default its value is @code{printf}. You may set it to any expression.
5119 that @value{GDBN} can evaluate to a function, as per the @code{call}
5120 command.
5121
5122 @item set dprintf-channel @var{channel}
5123 Set a ``channel'' for dprintf. If set to a non-empty value,
5124 @value{GDBN} will evaluate it as an expression and pass the result as
5125 a first argument to the @code{dprintf-function}, in the manner of
5126 @code{fprintf} and similar functions. Otherwise, the dprintf format
5127 string will be the first argument, in the manner of @code{printf}.
5128
5129 As an example, if you wanted @code{dprintf} output to go to a logfile
5130 that is a standard I/O stream assigned to the variable @code{mylog},
5131 you could do the following:
5132
5133 @example
5134 (gdb) set dprintf-style call
5135 (gdb) set dprintf-function fprintf
5136 (gdb) set dprintf-channel mylog
5137 (gdb) dprintf 25,"at line 25, glob=%d\n",glob
5138 Dprintf 1 at 0x123456: file main.c, line 25.
5139 (gdb) info break
5140 1 dprintf keep y 0x00123456 in main at main.c:25
5141 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob)
5142 continue
5143 (gdb)
5144 @end example
5145
5146 Note that the @code{info break} displays the dynamic printf commands
5147 as normal breakpoint commands; you can thus easily see the effect of
5148 the variable settings.
5149
5150 @item set disconnected-dprintf on
5151 @itemx set disconnected-dprintf off
5152 @kindex set disconnected-dprintf
5153 Choose whether @code{dprintf} commands should continue to run if
5154 @value{GDBN} has disconnected from the target. This only applies
5155 if the @code{dprintf-style} is @code{agent}.
5156
5157 @item show disconnected-dprintf off
5158 @kindex show disconnected-dprintf
5159 Show the current choice for disconnected @code{dprintf}.
5160
5161 @end table
5162
5163 @value{GDBN} does not check the validity of function and channel,
5164 relying on you to supply values that are meaningful for the contexts
5165 in which they are being used. For instance, the function and channel
5166 may be the values of local variables, but if that is the case, then
5167 all enabled dynamic prints must be at locations within the scope of
5168 those locals. If evaluation fails, @value{GDBN} will report an error.
5169
5170 @node Save Breakpoints
5171 @subsection How to save breakpoints to a file
5172
5173 To save breakpoint definitions to a file use the @w{@code{save
5174 breakpoints}} command.
5175
5176 @table @code
5177 @kindex save breakpoints
5178 @cindex save breakpoints to a file for future sessions
5179 @item save breakpoints [@var{filename}]
5180 This command saves all current breakpoint definitions together with
5181 their commands and ignore counts, into a file @file{@var{filename}}
5182 suitable for use in a later debugging session. This includes all
5183 types of breakpoints (breakpoints, watchpoints, catchpoints,
5184 tracepoints). To read the saved breakpoint definitions, use the
5185 @code{source} command (@pxref{Command Files}). Note that watchpoints
5186 with expressions involving local variables may fail to be recreated
5187 because it may not be possible to access the context where the
5188 watchpoint is valid anymore. Because the saved breakpoint definitions
5189 are simply a sequence of @value{GDBN} commands that recreate the
5190 breakpoints, you can edit the file in your favorite editing program,
5191 and remove the breakpoint definitions you're not interested in, or
5192 that can no longer be recreated.
5193 @end table
5194
5195 @node Static Probe Points
5196 @subsection Static Probe Points
5197
5198 @cindex static probe point, SystemTap
5199 @cindex static probe point, DTrace
5200 @value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands
5201 for Statically Defined Tracing, and the probes are designed to have a tiny
5202 runtime code and data footprint, and no dynamic relocations.
5203
5204 Currently, the following types of probes are supported on
5205 ELF-compatible systems:
5206
5207 @itemize @bullet
5208
5209 @item @code{SystemTap} (@uref{http://sourceware.org/systemtap/})
5210 @acronym{SDT} probes@footnote{See
5211 @uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps}
5212 for more information on how to add @code{SystemTap} @acronym{SDT}
5213 probes in your applications.}. @code{SystemTap} probes are usable
5214 from assembly, C and C@t{++} languages@footnote{See
5215 @uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation}
5216 for a good reference on how the @acronym{SDT} probes are implemented.}.
5217
5218 @item @code{DTrace} (@uref{http://oss.oracle.com/projects/DTrace})
5219 @acronym{USDT} probes. @code{DTrace} probes are usable from C and
5220 C@t{++} languages.
5221 @end itemize
5222
5223 @cindex semaphores on static probe points
5224 Some @code{SystemTap} probes have an associated semaphore variable;
5225 for instance, this happens automatically if you defined your probe
5226 using a DTrace-style @file{.d} file. If your probe has a semaphore,
5227 @value{GDBN} will automatically enable it when you specify a
5228 breakpoint using the @samp{-probe-stap} notation. But, if you put a
5229 breakpoint at a probe's location by some other method (e.g.,
5230 @code{break file:line}), then @value{GDBN} will not automatically set
5231 the semaphore. @code{DTrace} probes do not support semaphores.
5232
5233 You can examine the available static static probes using @code{info
5234 probes}, with optional arguments:
5235
5236 @table @code
5237 @kindex info probes
5238 @item info probes @r{[}@var{type}@r{]} @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
5239 If given, @var{type} is either @code{stap} for listing
5240 @code{SystemTap} probes or @code{dtrace} for listing @code{DTrace}
5241 probes. If omitted all probes are listed regardless of their types.
5242
5243 If given, @var{provider} is a regular expression used to match against provider
5244 names when selecting which probes to list. If omitted, probes by all
5245 probes from all providers are listed.
5246
5247 If given, @var{name} is a regular expression to match against probe names
5248 when selecting which probes to list. If omitted, probe names are not
5249 considered when deciding whether to display them.
5250
5251 If given, @var{objfile} is a regular expression used to select which
5252 object files (executable or shared libraries) to examine. If not
5253 given, all object files are considered.
5254
5255 @item info probes all
5256 List the available static probes, from all types.
5257 @end table
5258
5259 @cindex enabling and disabling probes
5260 Some probe points can be enabled and/or disabled. The effect of
5261 enabling or disabling a probe depends on the type of probe being
5262 handled. Some @code{DTrace} probes can be enabled or
5263 disabled, but @code{SystemTap} probes cannot be disabled.
5264
5265 You can enable (or disable) one or more probes using the following
5266 commands, with optional arguments:
5267
5268 @table @code
5269 @kindex enable probes
5270 @item enable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
5271 If given, @var{provider} is a regular expression used to match against
5272 provider names when selecting which probes to enable. If omitted,
5273 all probes from all providers are enabled.
5274
5275 If given, @var{name} is a regular expression to match against probe
5276 names when selecting which probes to enable. If omitted, probe names
5277 are not considered when deciding whether to enable them.
5278
5279 If given, @var{objfile} is a regular expression used to select which
5280 object files (executable or shared libraries) to examine. If not
5281 given, all object files are considered.
5282
5283 @kindex disable probes
5284 @item disable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
5285 See the @code{enable probes} command above for a description of the
5286 optional arguments accepted by this command.
5287 @end table
5288
5289 @vindex $_probe_arg@r{, convenience variable}
5290 A probe may specify up to twelve arguments. These are available at the
5291 point at which the probe is defined---that is, when the current PC is
5292 at the probe's location. The arguments are available using the
5293 convenience variables (@pxref{Convenience Vars})
5294 @code{$_probe_arg0}@dots{}@code{$_probe_arg11}. In @code{SystemTap}
5295 probes each probe argument is an integer of the appropriate size;
5296 types are not preserved. In @code{DTrace} probes types are preserved
5297 provided that they are recognized as such by @value{GDBN}; otherwise
5298 the value of the probe argument will be a long integer. The
5299 convenience variable @code{$_probe_argc} holds the number of arguments
5300 at the current probe point.
5301
5302 These variables are always available, but attempts to access them at
5303 any location other than a probe point will cause @value{GDBN} to give
5304 an error message.
5305
5306
5307 @c @ifclear BARETARGET
5308 @node Error in Breakpoints
5309 @subsection ``Cannot insert breakpoints''
5310
5311 If you request too many active hardware-assisted breakpoints and
5312 watchpoints, you will see this error message:
5313
5314 @c FIXME: the precise wording of this message may change; the relevant
5315 @c source change is not committed yet (Sep 3, 1999).
5316 @smallexample
5317 Stopped; cannot insert breakpoints.
5318 You may have requested too many hardware breakpoints and watchpoints.
5319 @end smallexample
5320
5321 @noindent
5322 This message is printed when you attempt to resume the program, since
5323 only then @value{GDBN} knows exactly how many hardware breakpoints and
5324 watchpoints it needs to insert.
5325
5326 When this message is printed, you need to disable or remove some of the
5327 hardware-assisted breakpoints and watchpoints, and then continue.
5328
5329 @node Breakpoint-related Warnings
5330 @subsection ``Breakpoint address adjusted...''
5331 @cindex breakpoint address adjusted
5332
5333 Some processor architectures place constraints on the addresses at
5334 which breakpoints may be placed. For architectures thus constrained,
5335 @value{GDBN} will attempt to adjust the breakpoint's address to comply
5336 with the constraints dictated by the architecture.
5337
5338 One example of such an architecture is the Fujitsu FR-V. The FR-V is
5339 a VLIW architecture in which a number of RISC-like instructions may be
5340 bundled together for parallel execution. The FR-V architecture
5341 constrains the location of a breakpoint instruction within such a
5342 bundle to the instruction with the lowest address. @value{GDBN}
5343 honors this constraint by adjusting a breakpoint's address to the
5344 first in the bundle.
5345
5346 It is not uncommon for optimized code to have bundles which contain
5347 instructions from different source statements, thus it may happen that
5348 a breakpoint's address will be adjusted from one source statement to
5349 another. Since this adjustment may significantly alter @value{GDBN}'s
5350 breakpoint related behavior from what the user expects, a warning is
5351 printed when the breakpoint is first set and also when the breakpoint
5352 is hit.
5353
5354 A warning like the one below is printed when setting a breakpoint
5355 that's been subject to address adjustment:
5356
5357 @smallexample
5358 warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
5359 @end smallexample
5360
5361 Such warnings are printed both for user settable and @value{GDBN}'s
5362 internal breakpoints. If you see one of these warnings, you should
5363 verify that a breakpoint set at the adjusted address will have the
5364 desired affect. If not, the breakpoint in question may be removed and
5365 other breakpoints may be set which will have the desired behavior.
5366 E.g., it may be sufficient to place the breakpoint at a later
5367 instruction. A conditional breakpoint may also be useful in some
5368 cases to prevent the breakpoint from triggering too often.
5369
5370 @value{GDBN} will also issue a warning when stopping at one of these
5371 adjusted breakpoints:
5372
5373 @smallexample
5374 warning: Breakpoint 1 address previously adjusted from 0x00010414
5375 to 0x00010410.
5376 @end smallexample
5377
5378 When this warning is encountered, it may be too late to take remedial
5379 action except in cases where the breakpoint is hit earlier or more
5380 frequently than expected.
5381
5382 @node Continuing and Stepping
5383 @section Continuing and Stepping
5384
5385 @cindex stepping
5386 @cindex continuing
5387 @cindex resuming execution
5388 @dfn{Continuing} means resuming program execution until your program
5389 completes normally. In contrast, @dfn{stepping} means executing just
5390 one more ``step'' of your program, where ``step'' may mean either one
5391 line of source code, or one machine instruction (depending on what
5392 particular command you use). Either when continuing or when stepping,
5393 your program may stop even sooner, due to a breakpoint or a signal. (If
5394 it stops due to a signal, you may want to use @code{handle}, or use
5395 @samp{signal 0} to resume execution (@pxref{Signals, ,Signals}),
5396 or you may step into the signal's handler (@pxref{stepping and signal
5397 handlers}).)
5398
5399 @table @code
5400 @kindex continue
5401 @kindex c @r{(@code{continue})}
5402 @kindex fg @r{(resume foreground execution)}
5403 @item continue @r{[}@var{ignore-count}@r{]}
5404 @itemx c @r{[}@var{ignore-count}@r{]}
5405 @itemx fg @r{[}@var{ignore-count}@r{]}
5406 Resume program execution, at the address where your program last stopped;
5407 any breakpoints set at that address are bypassed. The optional argument
5408 @var{ignore-count} allows you to specify a further number of times to
5409 ignore a breakpoint at this location; its effect is like that of
5410 @code{ignore} (@pxref{Conditions, ,Break Conditions}).
5411
5412 The argument @var{ignore-count} is meaningful only when your program
5413 stopped due to a breakpoint. At other times, the argument to
5414 @code{continue} is ignored.
5415
5416 The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
5417 debugged program is deemed to be the foreground program) are provided
5418 purely for convenience, and have exactly the same behavior as
5419 @code{continue}.
5420 @end table
5421
5422 To resume execution at a different place, you can use @code{return}
5423 (@pxref{Returning, ,Returning from a Function}) to go back to the
5424 calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
5425 Different Address}) to go to an arbitrary location in your program.
5426
5427 A typical technique for using stepping is to set a breakpoint
5428 (@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
5429 beginning of the function or the section of your program where a problem
5430 is believed to lie, run your program until it stops at that breakpoint,
5431 and then step through the suspect area, examining the variables that are
5432 interesting, until you see the problem happen.
5433
5434 @table @code
5435 @kindex step
5436 @kindex s @r{(@code{step})}
5437 @item step
5438 Continue running your program until control reaches a different source
5439 line, then stop it and return control to @value{GDBN}. This command is
5440 abbreviated @code{s}.
5441
5442 @quotation
5443 @c "without debugging information" is imprecise; actually "without line
5444 @c numbers in the debugging information". (gcc -g1 has debugging info but
5445 @c not line numbers). But it seems complex to try to make that
5446 @c distinction here.
5447 @emph{Warning:} If you use the @code{step} command while control is
5448 within a function that was compiled without debugging information,
5449 execution proceeds until control reaches a function that does have
5450 debugging information. Likewise, it will not step into a function which
5451 is compiled without debugging information. To step through functions
5452 without debugging information, use the @code{stepi} command, described
5453 below.
5454 @end quotation
5455
5456 The @code{step} command only stops at the first instruction of a source
5457 line. This prevents the multiple stops that could otherwise occur in
5458 @code{switch} statements, @code{for} loops, etc. @code{step} continues
5459 to stop if a function that has debugging information is called within
5460 the line. In other words, @code{step} @emph{steps inside} any functions
5461 called within the line.
5462
5463 Also, the @code{step} command only enters a function if there is line
5464 number information for the function. Otherwise it acts like the
5465 @code{next} command. This avoids problems when using @code{cc -gl}
5466 on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there
5467 was any debugging information about the routine.
5468
5469 @item step @var{count}
5470 Continue running as in @code{step}, but do so @var{count} times. If a
5471 breakpoint is reached, or a signal not related to stepping occurs before
5472 @var{count} steps, stepping stops right away.
5473
5474 @kindex next
5475 @kindex n @r{(@code{next})}
5476 @item next @r{[}@var{count}@r{]}
5477 Continue to the next source line in the current (innermost) stack frame.
5478 This is similar to @code{step}, but function calls that appear within
5479 the line of code are executed without stopping. Execution stops when
5480 control reaches a different line of code at the original stack level
5481 that was executing when you gave the @code{next} command. This command
5482 is abbreviated @code{n}.
5483
5484 An argument @var{count} is a repeat count, as for @code{step}.
5485
5486
5487 @c FIX ME!! Do we delete this, or is there a way it fits in with
5488 @c the following paragraph? --- Vctoria
5489 @c
5490 @c @code{next} within a function that lacks debugging information acts like
5491 @c @code{step}, but any function calls appearing within the code of the
5492 @c function are executed without stopping.
5493
5494 The @code{next} command only stops at the first instruction of a
5495 source line. This prevents multiple stops that could otherwise occur in
5496 @code{switch} statements, @code{for} loops, etc.
5497
5498 @kindex set step-mode
5499 @item set step-mode
5500 @cindex functions without line info, and stepping
5501 @cindex stepping into functions with no line info
5502 @itemx set step-mode on
5503 The @code{set step-mode on} command causes the @code{step} command to
5504 stop at the first instruction of a function which contains no debug line
5505 information rather than stepping over it.
5506
5507 This is useful in cases where you may be interested in inspecting the
5508 machine instructions of a function which has no symbolic info and do not
5509 want @value{GDBN} to automatically skip over this function.
5510
5511 @item set step-mode off
5512 Causes the @code{step} command to step over any functions which contains no
5513 debug information. This is the default.
5514
5515 @item show step-mode
5516 Show whether @value{GDBN} will stop in or step over functions without
5517 source line debug information.
5518
5519 @kindex finish
5520 @kindex fin @r{(@code{finish})}
5521 @item finish
5522 Continue running until just after function in the selected stack frame
5523 returns. Print the returned value (if any). This command can be
5524 abbreviated as @code{fin}.
5525
5526 Contrast this with the @code{return} command (@pxref{Returning,
5527 ,Returning from a Function}).
5528
5529 @kindex until
5530 @kindex u @r{(@code{until})}
5531 @cindex run until specified location
5532 @item until
5533 @itemx u
5534 Continue running until a source line past the current line, in the
5535 current stack frame, is reached. This command is used to avoid single
5536 stepping through a loop more than once. It is like the @code{next}
5537 command, except that when @code{until} encounters a jump, it
5538 automatically continues execution until the program counter is greater
5539 than the address of the jump.
5540
5541 This means that when you reach the end of a loop after single stepping
5542 though it, @code{until} makes your program continue execution until it
5543 exits the loop. In contrast, a @code{next} command at the end of a loop
5544 simply steps back to the beginning of the loop, which forces you to step
5545 through the next iteration.
5546
5547 @code{until} always stops your program if it attempts to exit the current
5548 stack frame.
5549
5550 @code{until} may produce somewhat counterintuitive results if the order
5551 of machine code does not match the order of the source lines. For
5552 example, in the following excerpt from a debugging session, the @code{f}
5553 (@code{frame}) command shows that execution is stopped at line
5554 @code{206}; yet when we use @code{until}, we get to line @code{195}:
5555
5556 @smallexample
5557 (@value{GDBP}) f
5558 #0 main (argc=4, argv=0xf7fffae8) at m4.c:206
5559 206 expand_input();
5560 (@value{GDBP}) until
5561 195 for ( ; argc > 0; NEXTARG) @{
5562 @end smallexample
5563
5564 This happened because, for execution efficiency, the compiler had
5565 generated code for the loop closure test at the end, rather than the
5566 start, of the loop---even though the test in a C @code{for}-loop is
5567 written before the body of the loop. The @code{until} command appeared
5568 to step back to the beginning of the loop when it advanced to this
5569 expression; however, it has not really gone to an earlier
5570 statement---not in terms of the actual machine code.
5571
5572 @code{until} with no argument works by means of single
5573 instruction stepping, and hence is slower than @code{until} with an
5574 argument.
5575
5576 @item until @var{location}
5577 @itemx u @var{location}
5578 Continue running your program until either the specified @var{location} is
5579 reached, or the current stack frame returns. The location is any of
5580 the forms described in @ref{Specify Location}.
5581 This form of the command uses temporary breakpoints, and
5582 hence is quicker than @code{until} without an argument. The specified
5583 location is actually reached only if it is in the current frame. This
5584 implies that @code{until} can be used to skip over recursive function
5585 invocations. For instance in the code below, if the current location is
5586 line @code{96}, issuing @code{until 99} will execute the program up to
5587 line @code{99} in the same invocation of factorial, i.e., after the inner
5588 invocations have returned.
5589
5590 @smallexample
5591 94 int factorial (int value)
5592 95 @{
5593 96 if (value > 1) @{
5594 97 value *= factorial (value - 1);
5595 98 @}
5596 99 return (value);
5597 100 @}
5598 @end smallexample
5599
5600
5601 @kindex advance @var{location}
5602 @item advance @var{location}
5603 Continue running the program up to the given @var{location}. An argument is
5604 required, which should be of one of the forms described in
5605 @ref{Specify Location}.
5606 Execution will also stop upon exit from the current stack
5607 frame. This command is similar to @code{until}, but @code{advance} will
5608 not skip over recursive function calls, and the target location doesn't
5609 have to be in the same frame as the current one.
5610
5611
5612 @kindex stepi
5613 @kindex si @r{(@code{stepi})}
5614 @item stepi
5615 @itemx stepi @var{arg}
5616 @itemx si
5617 Execute one machine instruction, then stop and return to the debugger.
5618
5619 It is often useful to do @samp{display/i $pc} when stepping by machine
5620 instructions. This makes @value{GDBN} automatically display the next
5621 instruction to be executed, each time your program stops. @xref{Auto
5622 Display,, Automatic Display}.
5623
5624 An argument is a repeat count, as in @code{step}.
5625
5626 @need 750
5627 @kindex nexti
5628 @kindex ni @r{(@code{nexti})}
5629 @item nexti
5630 @itemx nexti @var{arg}
5631 @itemx ni
5632 Execute one machine instruction, but if it is a function call,
5633 proceed until the function returns.
5634
5635 An argument is a repeat count, as in @code{next}.
5636
5637 @end table
5638
5639 @anchor{range stepping}
5640 @cindex range stepping
5641 @cindex target-assisted range stepping
5642 By default, and if available, @value{GDBN} makes use of
5643 target-assisted @dfn{range stepping}. In other words, whenever you
5644 use a stepping command (e.g., @code{step}, @code{next}), @value{GDBN}
5645 tells the target to step the corresponding range of instruction
5646 addresses instead of issuing multiple single-steps. This speeds up
5647 line stepping, particularly for remote targets. Ideally, there should
5648 be no reason you would want to turn range stepping off. However, it's
5649 possible that a bug in the debug info, a bug in the remote stub (for
5650 remote targets), or even a bug in @value{GDBN} could make line
5651 stepping behave incorrectly when target-assisted range stepping is
5652 enabled. You can use the following command to turn off range stepping
5653 if necessary:
5654
5655 @table @code
5656 @kindex set range-stepping
5657 @kindex show range-stepping
5658 @item set range-stepping
5659 @itemx show range-stepping
5660 Control whether range stepping is enabled.
5661
5662 If @code{on}, and the target supports it, @value{GDBN} tells the
5663 target to step a range of addresses itself, instead of issuing
5664 multiple single-steps. If @code{off}, @value{GDBN} always issues
5665 single-steps, even if range stepping is supported by the target. The
5666 default is @code{on}.
5667
5668 @end table
5669
5670 @node Skipping Over Functions and Files
5671 @section Skipping Over Functions and Files
5672 @cindex skipping over functions and files
5673
5674 The program you are debugging may contain some functions which are
5675 uninteresting to debug. The @code{skip} command lets you tell @value{GDBN} to
5676 skip a function, all functions in a file or a particular function in
5677 a particular file when stepping.
5678
5679 For example, consider the following C function:
5680
5681 @smallexample
5682 101 int func()
5683 102 @{
5684 103 foo(boring());
5685 104 bar(boring());
5686 105 @}
5687 @end smallexample
5688
5689 @noindent
5690 Suppose you wish to step into the functions @code{foo} and @code{bar}, but you
5691 are not interested in stepping through @code{boring}. If you run @code{step}
5692 at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll
5693 step over both @code{foo} and @code{boring}!
5694
5695 One solution is to @code{step} into @code{boring} and use the @code{finish}
5696 command to immediately exit it. But this can become tedious if @code{boring}
5697 is called from many places.
5698
5699 A more flexible solution is to execute @kbd{skip boring}. This instructs
5700 @value{GDBN} never to step into @code{boring}. Now when you execute
5701 @code{step} at line 103, you'll step over @code{boring} and directly into
5702 @code{foo}.
5703
5704 Functions may be skipped by providing either a function name, linespec
5705 (@pxref{Specify Location}), regular expression that matches the function's
5706 name, file name or a @code{glob}-style pattern that matches the file name.
5707
5708 On Posix systems the form of the regular expression is
5709 ``Extended Regular Expressions''. See for example @samp{man 7 regex}
5710 on @sc{gnu}/Linux systems. On non-Posix systems the form of the regular
5711 expression is whatever is provided by the @code{regcomp} function of
5712 the underlying system.
5713 See for example @samp{man 7 glob} on @sc{gnu}/Linux systems for a
5714 description of @code{glob}-style patterns.
5715
5716 @table @code
5717 @kindex skip
5718 @item skip @r{[}@var{options}@r{]}
5719 The basic form of the @code{skip} command takes zero or more options
5720 that specify what to skip.
5721 The @var{options} argument is any useful combination of the following:
5722
5723 @table @code
5724 @item -file @var{file}
5725 @itemx -fi @var{file}
5726 Functions in @var{file} will be skipped over when stepping.
5727
5728 @item -gfile @var{file-glob-pattern}
5729 @itemx -gfi @var{file-glob-pattern}
5730 @cindex skipping over files via glob-style patterns
5731 Functions in files matching @var{file-glob-pattern} will be skipped
5732 over when stepping.
5733
5734 @smallexample
5735 (gdb) skip -gfi utils/*.c
5736 @end smallexample
5737
5738 @item -function @var{linespec}
5739 @itemx -fu @var{linespec}
5740 Functions named by @var{linespec} or the function containing the line
5741 named by @var{linespec} will be skipped over when stepping.
5742 @xref{Specify Location}.
5743
5744 @item -rfunction @var{regexp}
5745 @itemx -rfu @var{regexp}
5746 @cindex skipping over functions via regular expressions
5747 Functions whose name matches @var{regexp} will be skipped over when stepping.
5748
5749 This form is useful for complex function names.
5750 For example, there is generally no need to step into C@t{++} @code{std::string}
5751 constructors or destructors. Plus with C@t{++} templates it can be hard to
5752 write out the full name of the function, and often it doesn't matter what
5753 the template arguments are. Specifying the function to be skipped as a
5754 regular expression makes this easier.
5755
5756 @smallexample
5757 (gdb) skip -rfu ^std::(allocator|basic_string)<.*>::~?\1 *\(
5758 @end smallexample
5759
5760 If you want to skip every templated C@t{++} constructor and destructor
5761 in the @code{std} namespace you can do:
5762
5763 @smallexample
5764 (gdb) skip -rfu ^std::([a-zA-z0-9_]+)<.*>::~?\1 *\(
5765 @end smallexample
5766 @end table
5767
5768 If no options are specified, the function you're currently debugging
5769 will be skipped.
5770
5771 @kindex skip function
5772 @item skip function @r{[}@var{linespec}@r{]}
5773 After running this command, the function named by @var{linespec} or the
5774 function containing the line named by @var{linespec} will be skipped over when
5775 stepping. @xref{Specify Location}.
5776
5777 If you do not specify @var{linespec}, the function you're currently debugging
5778 will be skipped.
5779
5780 (If you have a function called @code{file} that you want to skip, use
5781 @kbd{skip function file}.)
5782
5783 @kindex skip file
5784 @item skip file @r{[}@var{filename}@r{]}
5785 After running this command, any function whose source lives in @var{filename}
5786 will be skipped over when stepping.
5787
5788 @smallexample
5789 (gdb) skip file boring.c
5790 File boring.c will be skipped when stepping.
5791 @end smallexample
5792
5793 If you do not specify @var{filename}, functions whose source lives in the file
5794 you're currently debugging will be skipped.
5795 @end table
5796
5797 Skips can be listed, deleted, disabled, and enabled, much like breakpoints.
5798 These are the commands for managing your list of skips:
5799
5800 @table @code
5801 @kindex info skip
5802 @item info skip @r{[}@var{range}@r{]}
5803 Print details about the specified skip(s). If @var{range} is not specified,
5804 print a table with details about all functions and files marked for skipping.
5805 @code{info skip} prints the following information about each skip:
5806
5807 @table @emph
5808 @item Identifier
5809 A number identifying this skip.
5810 @item Enabled or Disabled
5811 Enabled skips are marked with @samp{y}.
5812 Disabled skips are marked with @samp{n}.
5813 @item Glob
5814 If the file name is a @samp{glob} pattern this is @samp{y}.
5815 Otherwise it is @samp{n}.
5816 @item File
5817 The name or @samp{glob} pattern of the file to be skipped.
5818 If no file is specified this is @samp{<none>}.
5819 @item RE
5820 If the function name is a @samp{regular expression} this is @samp{y}.
5821 Otherwise it is @samp{n}.
5822 @item Function
5823 The name or regular expression of the function to skip.
5824 If no function is specified this is @samp{<none>}.
5825 @end table
5826
5827 @kindex skip delete
5828 @item skip delete @r{[}@var{range}@r{]}
5829 Delete the specified skip(s). If @var{range} is not specified, delete all
5830 skips.
5831
5832 @kindex skip enable
5833 @item skip enable @r{[}@var{range}@r{]}
5834 Enable the specified skip(s). If @var{range} is not specified, enable all
5835 skips.
5836
5837 @kindex skip disable
5838 @item skip disable @r{[}@var{range}@r{]}
5839 Disable the specified skip(s). If @var{range} is not specified, disable all
5840 skips.
5841
5842 @end table
5843
5844 @node Signals
5845 @section Signals
5846 @cindex signals
5847
5848 A signal is an asynchronous event that can happen in a program. The
5849 operating system defines the possible kinds of signals, and gives each
5850 kind a name and a number. For example, in Unix @code{SIGINT} is the
5851 signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
5852 @code{SIGSEGV} is the signal a program gets from referencing a place in
5853 memory far away from all the areas in use; @code{SIGALRM} occurs when
5854 the alarm clock timer goes off (which happens only if your program has
5855 requested an alarm).
5856
5857 @cindex fatal signals
5858 Some signals, including @code{SIGALRM}, are a normal part of the
5859 functioning of your program. Others, such as @code{SIGSEGV}, indicate
5860 errors; these signals are @dfn{fatal} (they kill your program immediately) if the
5861 program has not specified in advance some other way to handle the signal.
5862 @code{SIGINT} does not indicate an error in your program, but it is normally
5863 fatal so it can carry out the purpose of the interrupt: to kill the program.
5864
5865 @value{GDBN} has the ability to detect any occurrence of a signal in your
5866 program. You can tell @value{GDBN} in advance what to do for each kind of
5867 signal.
5868
5869 @cindex handling signals
5870 Normally, @value{GDBN} is set up to let the non-erroneous signals like
5871 @code{SIGALRM} be silently passed to your program
5872 (so as not to interfere with their role in the program's functioning)
5873 but to stop your program immediately whenever an error signal happens.
5874 You can change these settings with the @code{handle} command.
5875
5876 @table @code
5877 @kindex info signals
5878 @kindex info handle
5879 @item info signals
5880 @itemx info handle
5881 Print a table of all the kinds of signals and how @value{GDBN} has been told to
5882 handle each one. You can use this to see the signal numbers of all
5883 the defined types of signals.
5884
5885 @item info signals @var{sig}
5886 Similar, but print information only about the specified signal number.
5887
5888 @code{info handle} is an alias for @code{info signals}.
5889
5890 @item catch signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]}
5891 Set a catchpoint for the indicated signals. @xref{Set Catchpoints},
5892 for details about this command.
5893
5894 @kindex handle
5895 @item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5896 Change the way @value{GDBN} handles signal @var{signal}. The @var{signal}
5897 can be the number of a signal or its name (with or without the
5898 @samp{SIG} at the beginning); a list of signal numbers of the form
5899 @samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
5900 known signals. Optional arguments @var{keywords}, described below,
5901 say what change to make.
5902 @end table
5903
5904 @c @group
5905 The keywords allowed by the @code{handle} command can be abbreviated.
5906 Their full names are:
5907
5908 @table @code
5909 @item nostop
5910 @value{GDBN} should not stop your program when this signal happens. It may
5911 still print a message telling you that the signal has come in.
5912
5913 @item stop
5914 @value{GDBN} should stop your program when this signal happens. This implies
5915 the @code{print} keyword as well.
5916
5917 @item print
5918 @value{GDBN} should print a message when this signal happens.
5919
5920 @item noprint
5921 @value{GDBN} should not mention the occurrence of the signal at all. This
5922 implies the @code{nostop} keyword as well.
5923
5924 @item pass
5925 @itemx noignore
5926 @value{GDBN} should allow your program to see this signal; your program
5927 can handle the signal, or else it may terminate if the signal is fatal
5928 and not handled. @code{pass} and @code{noignore} are synonyms.
5929
5930 @item nopass
5931 @itemx ignore
5932 @value{GDBN} should not allow your program to see this signal.
5933 @code{nopass} and @code{ignore} are synonyms.
5934 @end table
5935 @c @end group
5936
5937 When a signal stops your program, the signal is not visible to the
5938 program until you
5939 continue. Your program sees the signal then, if @code{pass} is in
5940 effect for the signal in question @emph{at that time}. In other words,
5941 after @value{GDBN} reports a signal, you can use the @code{handle}
5942 command with @code{pass} or @code{nopass} to control whether your
5943 program sees that signal when you continue.
5944
5945 The default is set to @code{nostop}, @code{noprint}, @code{pass} for
5946 non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
5947 @code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
5948 erroneous signals.
5949
5950 You can also use the @code{signal} command to prevent your program from
5951 seeing a signal, or cause it to see a signal it normally would not see,
5952 or to give it any signal at any time. For example, if your program stopped
5953 due to some sort of memory reference error, you might store correct
5954 values into the erroneous variables and continue, hoping to see more
5955 execution; but your program would probably terminate immediately as
5956 a result of the fatal signal once it saw the signal. To prevent this,
5957 you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
5958 Program a Signal}.
5959
5960 @cindex stepping and signal handlers
5961 @anchor{stepping and signal handlers}
5962
5963 @value{GDBN} optimizes for stepping the mainline code. If a signal
5964 that has @code{handle nostop} and @code{handle pass} set arrives while
5965 a stepping command (e.g., @code{stepi}, @code{step}, @code{next}) is
5966 in progress, @value{GDBN} lets the signal handler run and then resumes
5967 stepping the mainline code once the signal handler returns. In other
5968 words, @value{GDBN} steps over the signal handler. This prevents
5969 signals that you've specified as not interesting (with @code{handle
5970 nostop}) from changing the focus of debugging unexpectedly. Note that
5971 the signal handler itself may still hit a breakpoint, stop for another
5972 signal that has @code{handle stop} in effect, or for any other event
5973 that normally results in stopping the stepping command sooner. Also
5974 note that @value{GDBN} still informs you that the program received a
5975 signal if @code{handle print} is set.
5976
5977 @anchor{stepping into signal handlers}
5978
5979 If you set @code{handle pass} for a signal, and your program sets up a
5980 handler for it, then issuing a stepping command, such as @code{step}
5981 or @code{stepi}, when your program is stopped due to the signal will
5982 step @emph{into} the signal handler (if the target supports that).
5983
5984 Likewise, if you use the @code{queue-signal} command to queue a signal
5985 to be delivered to the current thread when execution of the thread
5986 resumes (@pxref{Signaling, ,Giving your Program a Signal}), then a
5987 stepping command will step into the signal handler.
5988
5989 Here's an example, using @code{stepi} to step to the first instruction
5990 of @code{SIGUSR1}'s handler:
5991
5992 @smallexample
5993 (@value{GDBP}) handle SIGUSR1
5994 Signal Stop Print Pass to program Description
5995 SIGUSR1 Yes Yes Yes User defined signal 1
5996 (@value{GDBP}) c
5997 Continuing.
5998
5999 Program received signal SIGUSR1, User defined signal 1.
6000 main () sigusr1.c:28
6001 28 p = 0;
6002 (@value{GDBP}) si
6003 sigusr1_handler () at sigusr1.c:9
6004 9 @{
6005 @end smallexample
6006
6007 The same, but using @code{queue-signal} instead of waiting for the
6008 program to receive the signal first:
6009
6010 @smallexample
6011 (@value{GDBP}) n
6012 28 p = 0;
6013 (@value{GDBP}) queue-signal SIGUSR1
6014 (@value{GDBP}) si
6015 sigusr1_handler () at sigusr1.c:9
6016 9 @{
6017 (@value{GDBP})
6018 @end smallexample
6019
6020 @cindex extra signal information
6021 @anchor{extra signal information}
6022
6023 On some targets, @value{GDBN} can inspect extra signal information
6024 associated with the intercepted signal, before it is actually
6025 delivered to the program being debugged. This information is exported
6026 by the convenience variable @code{$_siginfo}, and consists of data
6027 that is passed by the kernel to the signal handler at the time of the
6028 receipt of a signal. The data type of the information itself is
6029 target dependent. You can see the data type using the @code{ptype
6030 $_siginfo} command. On Unix systems, it typically corresponds to the
6031 standard @code{siginfo_t} type, as defined in the @file{signal.h}
6032 system header.
6033
6034 Here's an example, on a @sc{gnu}/Linux system, printing the stray
6035 referenced address that raised a segmentation fault.
6036
6037 @smallexample
6038 @group
6039 (@value{GDBP}) continue
6040 Program received signal SIGSEGV, Segmentation fault.
6041 0x0000000000400766 in main ()
6042 69 *(int *)p = 0;
6043 (@value{GDBP}) ptype $_siginfo
6044 type = struct @{
6045 int si_signo;
6046 int si_errno;
6047 int si_code;
6048 union @{
6049 int _pad[28];
6050 struct @{...@} _kill;
6051 struct @{...@} _timer;
6052 struct @{...@} _rt;
6053 struct @{...@} _sigchld;
6054 struct @{...@} _sigfault;
6055 struct @{...@} _sigpoll;
6056 @} _sifields;
6057 @}
6058 (@value{GDBP}) ptype $_siginfo._sifields._sigfault
6059 type = struct @{
6060 void *si_addr;
6061 @}
6062 (@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
6063 $1 = (void *) 0x7ffff7ff7000
6064 @end group
6065 @end smallexample
6066
6067 Depending on target support, @code{$_siginfo} may also be writable.
6068
6069 @cindex Intel MPX boundary violations
6070 @cindex boundary violations, Intel MPX
6071 On some targets, a @code{SIGSEGV} can be caused by a boundary
6072 violation, i.e., accessing an address outside of the allowed range.
6073 In those cases @value{GDBN} may displays additional information,
6074 depending on how @value{GDBN} has been told to handle the signal.
6075 With @code{handle stop SIGSEGV}, @value{GDBN} displays the violation
6076 kind: "Upper" or "Lower", the memory address accessed and the
6077 bounds, while with @code{handle nostop SIGSEGV} no additional
6078 information is displayed.
6079
6080 The usual output of a segfault is:
6081 @smallexample
6082 Program received signal SIGSEGV, Segmentation fault
6083 0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68
6084 68 value = *(p + len);
6085 @end smallexample
6086
6087 While a bound violation is presented as:
6088 @smallexample
6089 Program received signal SIGSEGV, Segmentation fault
6090 Upper bound violation while accessing address 0x7fffffffc3b3
6091 Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3]
6092 0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68
6093 68 value = *(p + len);
6094 @end smallexample
6095
6096 @node Thread Stops
6097 @section Stopping and Starting Multi-thread Programs
6098
6099 @cindex stopped threads
6100 @cindex threads, stopped
6101
6102 @cindex continuing threads
6103 @cindex threads, continuing
6104
6105 @value{GDBN} supports debugging programs with multiple threads
6106 (@pxref{Threads,, Debugging Programs with Multiple Threads}). There
6107 are two modes of controlling execution of your program within the
6108 debugger. In the default mode, referred to as @dfn{all-stop mode},
6109 when any thread in your program stops (for example, at a breakpoint
6110 or while being stepped), all other threads in the program are also stopped by
6111 @value{GDBN}. On some targets, @value{GDBN} also supports
6112 @dfn{non-stop mode}, in which other threads can continue to run freely while
6113 you examine the stopped thread in the debugger.
6114
6115 @menu
6116 * All-Stop Mode:: All threads stop when GDB takes control
6117 * Non-Stop Mode:: Other threads continue to execute
6118 * Background Execution:: Running your program asynchronously
6119 * Thread-Specific Breakpoints:: Controlling breakpoints
6120 * Interrupted System Calls:: GDB may interfere with system calls
6121 * Observer Mode:: GDB does not alter program behavior
6122 @end menu
6123
6124 @node All-Stop Mode
6125 @subsection All-Stop Mode
6126
6127 @cindex all-stop mode
6128
6129 In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
6130 @emph{all} threads of execution stop, not just the current thread. This
6131 allows you to examine the overall state of the program, including
6132 switching between threads, without worrying that things may change
6133 underfoot.
6134
6135 Conversely, whenever you restart the program, @emph{all} threads start
6136 executing. @emph{This is true even when single-stepping} with commands
6137 like @code{step} or @code{next}.
6138
6139 In particular, @value{GDBN} cannot single-step all threads in lockstep.
6140 Since thread scheduling is up to your debugging target's operating
6141 system (not controlled by @value{GDBN}), other threads may
6142 execute more than one statement while the current thread completes a
6143 single step. Moreover, in general other threads stop in the middle of a
6144 statement, rather than at a clean statement boundary, when the program
6145 stops.
6146
6147 You might even find your program stopped in another thread after
6148 continuing or even single-stepping. This happens whenever some other
6149 thread runs into a breakpoint, a signal, or an exception before the
6150 first thread completes whatever you requested.
6151
6152 @cindex automatic thread selection
6153 @cindex switching threads automatically
6154 @cindex threads, automatic switching
6155 Whenever @value{GDBN} stops your program, due to a breakpoint or a
6156 signal, it automatically selects the thread where that breakpoint or
6157 signal happened. @value{GDBN} alerts you to the context switch with a
6158 message such as @samp{[Switching to Thread @var{n}]} to identify the
6159 thread.
6160
6161 On some OSes, you can modify @value{GDBN}'s default behavior by
6162 locking the OS scheduler to allow only a single thread to run.
6163
6164 @table @code
6165 @item set scheduler-locking @var{mode}
6166 @cindex scheduler locking mode
6167 @cindex lock scheduler
6168 Set the scheduler locking mode. It applies to normal execution,
6169 record mode, and replay mode. If it is @code{off}, then there is no
6170 locking and any thread may run at any time. If @code{on}, then only
6171 the current thread may run when the inferior is resumed. The
6172 @code{step} mode optimizes for single-stepping; it prevents other
6173 threads from preempting the current thread while you are stepping, so
6174 that the focus of debugging does not change unexpectedly. Other
6175 threads never get a chance to run when you step, and they are
6176 completely free to run when you use commands like @samp{continue},
6177 @samp{until}, or @samp{finish}. However, unless another thread hits a
6178 breakpoint during its timeslice, @value{GDBN} does not change the
6179 current thread away from the thread that you are debugging. The
6180 @code{replay} mode behaves like @code{off} in record mode and like
6181 @code{on} in replay mode.
6182
6183 @item show scheduler-locking
6184 Display the current scheduler locking mode.
6185 @end table
6186
6187 @cindex resume threads of multiple processes simultaneously
6188 By default, when you issue one of the execution commands such as
6189 @code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
6190 threads of the current inferior to run. For example, if @value{GDBN}
6191 is attached to two inferiors, each with two threads, the
6192 @code{continue} command resumes only the two threads of the current
6193 inferior. This is useful, for example, when you debug a program that
6194 forks and you want to hold the parent stopped (so that, for instance,
6195 it doesn't run to exit), while you debug the child. In other
6196 situations, you may not be interested in inspecting the current state
6197 of any of the processes @value{GDBN} is attached to, and you may want
6198 to resume them all until some breakpoint is hit. In the latter case,
6199 you can instruct @value{GDBN} to allow all threads of all the
6200 inferiors to run with the @w{@code{set schedule-multiple}} command.
6201
6202 @table @code
6203 @kindex set schedule-multiple
6204 @item set schedule-multiple
6205 Set the mode for allowing threads of multiple processes to be resumed
6206 when an execution command is issued. When @code{on}, all threads of
6207 all processes are allowed to run. When @code{off}, only the threads
6208 of the current process are resumed. The default is @code{off}. The
6209 @code{scheduler-locking} mode takes precedence when set to @code{on},
6210 or while you are stepping and set to @code{step}.
6211
6212 @item show schedule-multiple
6213 Display the current mode for resuming the execution of threads of
6214 multiple processes.
6215 @end table
6216
6217 @node Non-Stop Mode
6218 @subsection Non-Stop Mode
6219
6220 @cindex non-stop mode
6221
6222 @c This section is really only a place-holder, and needs to be expanded
6223 @c with more details.
6224
6225 For some multi-threaded targets, @value{GDBN} supports an optional
6226 mode of operation in which you can examine stopped program threads in
6227 the debugger while other threads continue to execute freely. This
6228 minimizes intrusion when debugging live systems, such as programs
6229 where some threads have real-time constraints or must continue to
6230 respond to external events. This is referred to as @dfn{non-stop} mode.
6231
6232 In non-stop mode, when a thread stops to report a debugging event,
6233 @emph{only} that thread is stopped; @value{GDBN} does not stop other
6234 threads as well, in contrast to the all-stop mode behavior. Additionally,
6235 execution commands such as @code{continue} and @code{step} apply by default
6236 only to the current thread in non-stop mode, rather than all threads as
6237 in all-stop mode. This allows you to control threads explicitly in
6238 ways that are not possible in all-stop mode --- for example, stepping
6239 one thread while allowing others to run freely, stepping
6240 one thread while holding all others stopped, or stepping several threads
6241 independently and simultaneously.
6242
6243 To enter non-stop mode, use this sequence of commands before you run
6244 or attach to your program:
6245
6246 @smallexample
6247 # If using the CLI, pagination breaks non-stop.
6248 set pagination off
6249
6250 # Finally, turn it on!
6251 set non-stop on
6252 @end smallexample
6253
6254 You can use these commands to manipulate the non-stop mode setting:
6255
6256 @table @code
6257 @kindex set non-stop
6258 @item set non-stop on
6259 Enable selection of non-stop mode.
6260 @item set non-stop off
6261 Disable selection of non-stop mode.
6262 @kindex show non-stop
6263 @item show non-stop
6264 Show the current non-stop enablement setting.
6265 @end table
6266
6267 Note these commands only reflect whether non-stop mode is enabled,
6268 not whether the currently-executing program is being run in non-stop mode.
6269 In particular, the @code{set non-stop} preference is only consulted when
6270 @value{GDBN} starts or connects to the target program, and it is generally
6271 not possible to switch modes once debugging has started. Furthermore,
6272 since not all targets support non-stop mode, even when you have enabled
6273 non-stop mode, @value{GDBN} may still fall back to all-stop operation by
6274 default.
6275
6276 In non-stop mode, all execution commands apply only to the current thread
6277 by default. That is, @code{continue} only continues one thread.
6278 To continue all threads, issue @code{continue -a} or @code{c -a}.
6279
6280 You can use @value{GDBN}'s background execution commands
6281 (@pxref{Background Execution}) to run some threads in the background
6282 while you continue to examine or step others from @value{GDBN}.
6283 The MI execution commands (@pxref{GDB/MI Program Execution}) are
6284 always executed asynchronously in non-stop mode.
6285
6286 Suspending execution is done with the @code{interrupt} command when
6287 running in the background, or @kbd{Ctrl-c} during foreground execution.
6288 In all-stop mode, this stops the whole process;
6289 but in non-stop mode the interrupt applies only to the current thread.
6290 To stop the whole program, use @code{interrupt -a}.
6291
6292 Other execution commands do not currently support the @code{-a} option.
6293
6294 In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
6295 that thread current, as it does in all-stop mode. This is because the
6296 thread stop notifications are asynchronous with respect to @value{GDBN}'s
6297 command interpreter, and it would be confusing if @value{GDBN} unexpectedly
6298 changed to a different thread just as you entered a command to operate on the
6299 previously current thread.
6300
6301 @node Background Execution
6302 @subsection Background Execution
6303
6304 @cindex foreground execution
6305 @cindex background execution
6306 @cindex asynchronous execution
6307 @cindex execution, foreground, background and asynchronous
6308
6309 @value{GDBN}'s execution commands have two variants: the normal
6310 foreground (synchronous) behavior, and a background
6311 (asynchronous) behavior. In foreground execution, @value{GDBN} waits for
6312 the program to report that some thread has stopped before prompting for
6313 another command. In background execution, @value{GDBN} immediately gives
6314 a command prompt so that you can issue other commands while your program runs.
6315
6316 If the target doesn't support async mode, @value{GDBN} issues an error
6317 message if you attempt to use the background execution commands.
6318
6319 To specify background execution, add a @code{&} to the command. For example,
6320 the background form of the @code{continue} command is @code{continue&}, or
6321 just @code{c&}. The execution commands that accept background execution
6322 are:
6323
6324 @table @code
6325 @kindex run&
6326 @item run
6327 @xref{Starting, , Starting your Program}.
6328
6329 @item attach
6330 @kindex attach&
6331 @xref{Attach, , Debugging an Already-running Process}.
6332
6333 @item step
6334 @kindex step&
6335 @xref{Continuing and Stepping, step}.
6336
6337 @item stepi
6338 @kindex stepi&
6339 @xref{Continuing and Stepping, stepi}.
6340
6341 @item next
6342 @kindex next&
6343 @xref{Continuing and Stepping, next}.
6344
6345 @item nexti
6346 @kindex nexti&
6347 @xref{Continuing and Stepping, nexti}.
6348
6349 @item continue
6350 @kindex continue&
6351 @xref{Continuing and Stepping, continue}.
6352
6353 @item finish
6354 @kindex finish&
6355 @xref{Continuing and Stepping, finish}.
6356
6357 @item until
6358 @kindex until&
6359 @xref{Continuing and Stepping, until}.
6360
6361 @end table
6362
6363 Background execution is especially useful in conjunction with non-stop
6364 mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
6365 However, you can also use these commands in the normal all-stop mode with
6366 the restriction that you cannot issue another execution command until the
6367 previous one finishes. Examples of commands that are valid in all-stop
6368 mode while the program is running include @code{help} and @code{info break}.
6369
6370 You can interrupt your program while it is running in the background by
6371 using the @code{interrupt} command.
6372
6373 @table @code
6374 @kindex interrupt
6375 @item interrupt
6376 @itemx interrupt -a
6377
6378 Suspend execution of the running program. In all-stop mode,
6379 @code{interrupt} stops the whole process, but in non-stop mode, it stops
6380 only the current thread. To stop the whole program in non-stop mode,
6381 use @code{interrupt -a}.
6382 @end table
6383
6384 @node Thread-Specific Breakpoints
6385 @subsection Thread-Specific Breakpoints
6386
6387 When your program has multiple threads (@pxref{Threads,, Debugging
6388 Programs with Multiple Threads}), you can choose whether to set
6389 breakpoints on all threads, or on a particular thread.
6390
6391 @table @code
6392 @cindex breakpoints and threads
6393 @cindex thread breakpoints
6394 @kindex break @dots{} thread @var{thread-id}
6395 @item break @var{location} thread @var{thread-id}
6396 @itemx break @var{location} thread @var{thread-id} if @dots{}
6397 @var{location} specifies source lines; there are several ways of
6398 writing them (@pxref{Specify Location}), but the effect is always to
6399 specify some source line.
6400
6401 Use the qualifier @samp{thread @var{thread-id}} with a breakpoint command
6402 to specify that you only want @value{GDBN} to stop the program when a
6403 particular thread reaches this breakpoint. The @var{thread-id} specifier
6404 is one of the thread identifiers assigned by @value{GDBN}, shown
6405 in the first column of the @samp{info threads} display.
6406
6407 If you do not specify @samp{thread @var{thread-id}} when you set a
6408 breakpoint, the breakpoint applies to @emph{all} threads of your
6409 program.
6410
6411 You can use the @code{thread} qualifier on conditional breakpoints as
6412 well; in this case, place @samp{thread @var{thread-id}} before or
6413 after the breakpoint condition, like this:
6414
6415 @smallexample
6416 (@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
6417 @end smallexample
6418
6419 @end table
6420
6421 Thread-specific breakpoints are automatically deleted when
6422 @value{GDBN} detects the corresponding thread is no longer in the
6423 thread list. For example:
6424
6425 @smallexample
6426 (@value{GDBP}) c
6427 Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list.
6428 @end smallexample
6429
6430 There are several ways for a thread to disappear, such as a regular
6431 thread exit, but also when you detach from the process with the
6432 @code{detach} command (@pxref{Attach, ,Debugging an Already-running
6433 Process}), or if @value{GDBN} loses the remote connection
6434 (@pxref{Remote Debugging}), etc. Note that with some targets,
6435 @value{GDBN} is only able to detect a thread has exited when the user
6436 explictly asks for the thread list with the @code{info threads}
6437 command.
6438
6439 @node Interrupted System Calls
6440 @subsection Interrupted System Calls
6441
6442 @cindex thread breakpoints and system calls
6443 @cindex system calls and thread breakpoints
6444 @cindex premature return from system calls
6445 There is an unfortunate side effect when using @value{GDBN} to debug
6446 multi-threaded programs. If one thread stops for a
6447 breakpoint, or for some other reason, and another thread is blocked in a
6448 system call, then the system call may return prematurely. This is a
6449 consequence of the interaction between multiple threads and the signals
6450 that @value{GDBN} uses to implement breakpoints and other events that
6451 stop execution.
6452
6453 To handle this problem, your program should check the return value of
6454 each system call and react appropriately. This is good programming
6455 style anyways.
6456
6457 For example, do not write code like this:
6458
6459 @smallexample
6460 sleep (10);
6461 @end smallexample
6462
6463 The call to @code{sleep} will return early if a different thread stops
6464 at a breakpoint or for some other reason.
6465
6466 Instead, write this:
6467
6468 @smallexample
6469 int unslept = 10;
6470 while (unslept > 0)
6471 unslept = sleep (unslept);
6472 @end smallexample
6473
6474 A system call is allowed to return early, so the system is still
6475 conforming to its specification. But @value{GDBN} does cause your
6476 multi-threaded program to behave differently than it would without
6477 @value{GDBN}.
6478
6479 Also, @value{GDBN} uses internal breakpoints in the thread library to
6480 monitor certain events such as thread creation and thread destruction.
6481 When such an event happens, a system call in another thread may return
6482 prematurely, even though your program does not appear to stop.
6483
6484 @node Observer Mode
6485 @subsection Observer Mode
6486
6487 If you want to build on non-stop mode and observe program behavior
6488 without any chance of disruption by @value{GDBN}, you can set
6489 variables to disable all of the debugger's attempts to modify state,
6490 whether by writing memory, inserting breakpoints, etc. These operate
6491 at a low level, intercepting operations from all commands.
6492
6493 When all of these are set to @code{off}, then @value{GDBN} is said to
6494 be @dfn{observer mode}. As a convenience, the variable
6495 @code{observer} can be set to disable these, plus enable non-stop
6496 mode.
6497
6498 Note that @value{GDBN} will not prevent you from making nonsensical
6499 combinations of these settings. For instance, if you have enabled
6500 @code{may-insert-breakpoints} but disabled @code{may-write-memory},
6501 then breakpoints that work by writing trap instructions into the code
6502 stream will still not be able to be placed.
6503
6504 @table @code
6505
6506 @kindex observer
6507 @item set observer on
6508 @itemx set observer off
6509 When set to @code{on}, this disables all the permission variables
6510 below (except for @code{insert-fast-tracepoints}), plus enables
6511 non-stop debugging. Setting this to @code{off} switches back to
6512 normal debugging, though remaining in non-stop mode.
6513
6514 @item show observer
6515 Show whether observer mode is on or off.
6516
6517 @kindex may-write-registers
6518 @item set may-write-registers on
6519 @itemx set may-write-registers off
6520 This controls whether @value{GDBN} will attempt to alter the values of
6521 registers, such as with assignment expressions in @code{print}, or the
6522 @code{jump} command. It defaults to @code{on}.
6523
6524 @item show may-write-registers
6525 Show the current permission to write registers.
6526
6527 @kindex may-write-memory
6528 @item set may-write-memory on
6529 @itemx set may-write-memory off
6530 This controls whether @value{GDBN} will attempt to alter the contents
6531 of memory, such as with assignment expressions in @code{print}. It
6532 defaults to @code{on}.
6533
6534 @item show may-write-memory
6535 Show the current permission to write memory.
6536
6537 @kindex may-insert-breakpoints
6538 @item set may-insert-breakpoints on
6539 @itemx set may-insert-breakpoints off
6540 This controls whether @value{GDBN} will attempt to insert breakpoints.
6541 This affects all breakpoints, including internal breakpoints defined
6542 by @value{GDBN}. It defaults to @code{on}.
6543
6544 @item show may-insert-breakpoints
6545 Show the current permission to insert breakpoints.
6546
6547 @kindex may-insert-tracepoints
6548 @item set may-insert-tracepoints on
6549 @itemx set may-insert-tracepoints off
6550 This controls whether @value{GDBN} will attempt to insert (regular)
6551 tracepoints at the beginning of a tracing experiment. It affects only
6552 non-fast tracepoints, fast tracepoints being under the control of
6553 @code{may-insert-fast-tracepoints}. It defaults to @code{on}.
6554
6555 @item show may-insert-tracepoints
6556 Show the current permission to insert tracepoints.
6557
6558 @kindex may-insert-fast-tracepoints
6559 @item set may-insert-fast-tracepoints on
6560 @itemx set may-insert-fast-tracepoints off
6561 This controls whether @value{GDBN} will attempt to insert fast
6562 tracepoints at the beginning of a tracing experiment. It affects only
6563 fast tracepoints, regular (non-fast) tracepoints being under the
6564 control of @code{may-insert-tracepoints}. It defaults to @code{on}.
6565
6566 @item show may-insert-fast-tracepoints
6567 Show the current permission to insert fast tracepoints.
6568
6569 @kindex may-interrupt
6570 @item set may-interrupt on
6571 @itemx set may-interrupt off
6572 This controls whether @value{GDBN} will attempt to interrupt or stop
6573 program execution. When this variable is @code{off}, the
6574 @code{interrupt} command will have no effect, nor will
6575 @kbd{Ctrl-c}. It defaults to @code{on}.
6576
6577 @item show may-interrupt
6578 Show the current permission to interrupt or stop the program.
6579
6580 @end table
6581
6582 @node Reverse Execution
6583 @chapter Running programs backward
6584 @cindex reverse execution
6585 @cindex running programs backward
6586
6587 When you are debugging a program, it is not unusual to realize that
6588 you have gone too far, and some event of interest has already happened.
6589 If the target environment supports it, @value{GDBN} can allow you to
6590 ``rewind'' the program by running it backward.
6591
6592 A target environment that supports reverse execution should be able
6593 to ``undo'' the changes in machine state that have taken place as the
6594 program was executing normally. Variables, registers etc.@: should
6595 revert to their previous values. Obviously this requires a great
6596 deal of sophistication on the part of the target environment; not
6597 all target environments can support reverse execution.
6598
6599 When a program is executed in reverse, the instructions that
6600 have most recently been executed are ``un-executed'', in reverse
6601 order. The program counter runs backward, following the previous
6602 thread of execution in reverse. As each instruction is ``un-executed'',
6603 the values of memory and/or registers that were changed by that
6604 instruction are reverted to their previous states. After executing
6605 a piece of source code in reverse, all side effects of that code
6606 should be ``undone'', and all variables should be returned to their
6607 prior values@footnote{
6608 Note that some side effects are easier to undo than others. For instance,
6609 memory and registers are relatively easy, but device I/O is hard. Some
6610 targets may be able undo things like device I/O, and some may not.
6611
6612 The contract between @value{GDBN} and the reverse executing target
6613 requires only that the target do something reasonable when
6614 @value{GDBN} tells it to execute backwards, and then report the
6615 results back to @value{GDBN}. Whatever the target reports back to
6616 @value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
6617 assumes that the memory and registers that the target reports are in a
6618 consistant state, but @value{GDBN} accepts whatever it is given.
6619 }.
6620
6621 If you are debugging in a target environment that supports
6622 reverse execution, @value{GDBN} provides the following commands.
6623
6624 @table @code
6625 @kindex reverse-continue
6626 @kindex rc @r{(@code{reverse-continue})}
6627 @item reverse-continue @r{[}@var{ignore-count}@r{]}
6628 @itemx rc @r{[}@var{ignore-count}@r{]}
6629 Beginning at the point where your program last stopped, start executing
6630 in reverse. Reverse execution will stop for breakpoints and synchronous
6631 exceptions (signals), just like normal execution. Behavior of
6632 asynchronous signals depends on the target environment.
6633
6634 @kindex reverse-step
6635 @kindex rs @r{(@code{step})}
6636 @item reverse-step @r{[}@var{count}@r{]}
6637 Run the program backward until control reaches the start of a
6638 different source line; then stop it, and return control to @value{GDBN}.
6639
6640 Like the @code{step} command, @code{reverse-step} will only stop
6641 at the beginning of a source line. It ``un-executes'' the previously
6642 executed source line. If the previous source line included calls to
6643 debuggable functions, @code{reverse-step} will step (backward) into
6644 the called function, stopping at the beginning of the @emph{last}
6645 statement in the called function (typically a return statement).
6646
6647 Also, as with the @code{step} command, if non-debuggable functions are
6648 called, @code{reverse-step} will run thru them backward without stopping.
6649
6650 @kindex reverse-stepi
6651 @kindex rsi @r{(@code{reverse-stepi})}
6652 @item reverse-stepi @r{[}@var{count}@r{]}
6653 Reverse-execute one machine instruction. Note that the instruction
6654 to be reverse-executed is @emph{not} the one pointed to by the program
6655 counter, but the instruction executed prior to that one. For instance,
6656 if the last instruction was a jump, @code{reverse-stepi} will take you
6657 back from the destination of the jump to the jump instruction itself.
6658
6659 @kindex reverse-next
6660 @kindex rn @r{(@code{reverse-next})}
6661 @item reverse-next @r{[}@var{count}@r{]}
6662 Run backward to the beginning of the previous line executed in
6663 the current (innermost) stack frame. If the line contains function
6664 calls, they will be ``un-executed'' without stopping. Starting from
6665 the first line of a function, @code{reverse-next} will take you back
6666 to the caller of that function, @emph{before} the function was called,
6667 just as the normal @code{next} command would take you from the last
6668 line of a function back to its return to its caller
6669 @footnote{Unless the code is too heavily optimized.}.
6670
6671 @kindex reverse-nexti
6672 @kindex rni @r{(@code{reverse-nexti})}
6673 @item reverse-nexti @r{[}@var{count}@r{]}
6674 Like @code{nexti}, @code{reverse-nexti} executes a single instruction
6675 in reverse, except that called functions are ``un-executed'' atomically.
6676 That is, if the previously executed instruction was a return from
6677 another function, @code{reverse-nexti} will continue to execute
6678 in reverse until the call to that function (from the current stack
6679 frame) is reached.
6680
6681 @kindex reverse-finish
6682 @item reverse-finish
6683 Just as the @code{finish} command takes you to the point where the
6684 current function returns, @code{reverse-finish} takes you to the point
6685 where it was called. Instead of ending up at the end of the current
6686 function invocation, you end up at the beginning.
6687
6688 @kindex set exec-direction
6689 @item set exec-direction
6690 Set the direction of target execution.
6691 @item set exec-direction reverse
6692 @cindex execute forward or backward in time
6693 @value{GDBN} will perform all execution commands in reverse, until the
6694 exec-direction mode is changed to ``forward''. Affected commands include
6695 @code{step, stepi, next, nexti, continue, and finish}. The @code{return}
6696 command cannot be used in reverse mode.
6697 @item set exec-direction forward
6698 @value{GDBN} will perform all execution commands in the normal fashion.
6699 This is the default.
6700 @end table
6701
6702
6703 @node Process Record and Replay
6704 @chapter Recording Inferior's Execution and Replaying It
6705 @cindex process record and replay
6706 @cindex recording inferior's execution and replaying it
6707
6708 On some platforms, @value{GDBN} provides a special @dfn{process record
6709 and replay} target that can record a log of the process execution, and
6710 replay it later with both forward and reverse execution commands.
6711
6712 @cindex replay mode
6713 When this target is in use, if the execution log includes the record
6714 for the next instruction, @value{GDBN} will debug in @dfn{replay
6715 mode}. In the replay mode, the inferior does not really execute code
6716 instructions. Instead, all the events that normally happen during
6717 code execution are taken from the execution log. While code is not
6718 really executed in replay mode, the values of registers (including the
6719 program counter register) and the memory of the inferior are still
6720 changed as they normally would. Their contents are taken from the
6721 execution log.
6722
6723 @cindex record mode
6724 If the record for the next instruction is not in the execution log,
6725 @value{GDBN} will debug in @dfn{record mode}. In this mode, the
6726 inferior executes normally, and @value{GDBN} records the execution log
6727 for future replay.
6728
6729 The process record and replay target supports reverse execution
6730 (@pxref{Reverse Execution}), even if the platform on which the
6731 inferior runs does not. However, the reverse execution is limited in
6732 this case by the range of the instructions recorded in the execution
6733 log. In other words, reverse execution on platforms that don't
6734 support it directly can only be done in the replay mode.
6735
6736 When debugging in the reverse direction, @value{GDBN} will work in
6737 replay mode as long as the execution log includes the record for the
6738 previous instruction; otherwise, it will work in record mode, if the
6739 platform supports reverse execution, or stop if not.
6740
6741 For architecture environments that support process record and replay,
6742 @value{GDBN} provides the following commands:
6743
6744 @table @code
6745 @kindex target record
6746 @kindex target record-full
6747 @kindex target record-btrace
6748 @kindex record
6749 @kindex record full
6750 @kindex record btrace
6751 @kindex record btrace bts
6752 @kindex record btrace pt
6753 @kindex record bts
6754 @kindex record pt
6755 @kindex rec
6756 @kindex rec full
6757 @kindex rec btrace
6758 @kindex rec btrace bts
6759 @kindex rec btrace pt
6760 @kindex rec bts
6761 @kindex rec pt
6762 @item record @var{method}
6763 This command starts the process record and replay target. The
6764 recording method can be specified as parameter. Without a parameter
6765 the command uses the @code{full} recording method. The following
6766 recording methods are available:
6767
6768 @table @code
6769 @item full
6770 Full record/replay recording using @value{GDBN}'s software record and
6771 replay implementation. This method allows replaying and reverse
6772 execution.
6773
6774 @item btrace @var{format}
6775 Hardware-supported instruction recording. This method does not record
6776 data. Further, the data is collected in a ring buffer so old data will
6777 be overwritten when the buffer is full. It allows limited reverse
6778 execution. Variables and registers are not available during reverse
6779 execution. In remote debugging, recording continues on disconnect.
6780 Recorded data can be inspected after reconnecting. The recording may
6781 be stopped using @code{record stop}.
6782
6783 The recording format can be specified as parameter. Without a parameter
6784 the command chooses the recording format. The following recording
6785 formats are available:
6786
6787 @table @code
6788 @item bts
6789 @cindex branch trace store
6790 Use the @dfn{Branch Trace Store} (@acronym{BTS}) recording format. In
6791 this format, the processor stores a from/to record for each executed
6792 branch in the btrace ring buffer.
6793
6794 @item pt
6795 @cindex Intel Processor Trace
6796 Use the @dfn{Intel Processor Trace} recording format. In this
6797 format, the processor stores the execution trace in a compressed form
6798 that is afterwards decoded by @value{GDBN}.
6799
6800 The trace can be recorded with very low overhead. The compressed
6801 trace format also allows small trace buffers to already contain a big
6802 number of instructions compared to @acronym{BTS}.
6803
6804 Decoding the recorded execution trace, on the other hand, is more
6805 expensive than decoding @acronym{BTS} trace. This is mostly due to the
6806 increased number of instructions to process. You should increase the
6807 buffer-size with care.
6808 @end table
6809
6810 Not all recording formats may be available on all processors.
6811 @end table
6812
6813 The process record and replay target can only debug a process that is
6814 already running. Therefore, you need first to start the process with
6815 the @kbd{run} or @kbd{start} commands, and then start the recording
6816 with the @kbd{record @var{method}} command.
6817
6818 @cindex displaced stepping, and process record and replay
6819 Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
6820 will be automatically disabled when process record and replay target
6821 is started. That's because the process record and replay target
6822 doesn't support displaced stepping.
6823
6824 @cindex non-stop mode, and process record and replay
6825 @cindex asynchronous execution, and process record and replay
6826 If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
6827 the asynchronous execution mode (@pxref{Background Execution}), not
6828 all recording methods are available. The @code{full} recording method
6829 does not support these two modes.
6830
6831 @kindex record stop
6832 @kindex rec s
6833 @item record stop
6834 Stop the process record and replay target. When process record and
6835 replay target stops, the entire execution log will be deleted and the
6836 inferior will either be terminated, or will remain in its final state.
6837
6838 When you stop the process record and replay target in record mode (at
6839 the end of the execution log), the inferior will be stopped at the
6840 next instruction that would have been recorded. In other words, if
6841 you record for a while and then stop recording, the inferior process
6842 will be left in the same state as if the recording never happened.
6843
6844 On the other hand, if the process record and replay target is stopped
6845 while in replay mode (that is, not at the end of the execution log,
6846 but at some earlier point), the inferior process will become ``live''
6847 at that earlier state, and it will then be possible to continue the
6848 usual ``live'' debugging of the process from that state.
6849
6850 When the inferior process exits, or @value{GDBN} detaches from it,
6851 process record and replay target will automatically stop itself.
6852
6853 @kindex record goto
6854 @item record goto
6855 Go to a specific location in the execution log. There are several
6856 ways to specify the location to go to:
6857
6858 @table @code
6859 @item record goto begin
6860 @itemx record goto start
6861 Go to the beginning of the execution log.
6862
6863 @item record goto end
6864 Go to the end of the execution log.
6865
6866 @item record goto @var{n}
6867 Go to instruction number @var{n} in the execution log.
6868 @end table
6869
6870 @kindex record save
6871 @item record save @var{filename}
6872 Save the execution log to a file @file{@var{filename}}.
6873 Default filename is @file{gdb_record.@var{process_id}}, where
6874 @var{process_id} is the process ID of the inferior.
6875
6876 This command may not be available for all recording methods.
6877
6878 @kindex record restore
6879 @item record restore @var{filename}
6880 Restore the execution log from a file @file{@var{filename}}.
6881 File must have been created with @code{record save}.
6882
6883 @kindex set record full
6884 @item set record full insn-number-max @var{limit}
6885 @itemx set record full insn-number-max unlimited
6886 Set the limit of instructions to be recorded for the @code{full}
6887 recording method. Default value is 200000.
6888
6889 If @var{limit} is a positive number, then @value{GDBN} will start
6890 deleting instructions from the log once the number of the record
6891 instructions becomes greater than @var{limit}. For every new recorded
6892 instruction, @value{GDBN} will delete the earliest recorded
6893 instruction to keep the number of recorded instructions at the limit.
6894 (Since deleting recorded instructions loses information, @value{GDBN}
6895 lets you control what happens when the limit is reached, by means of
6896 the @code{stop-at-limit} option, described below.)
6897
6898 If @var{limit} is @code{unlimited} or zero, @value{GDBN} will never
6899 delete recorded instructions from the execution log. The number of
6900 recorded instructions is limited only by the available memory.
6901
6902 @kindex show record full
6903 @item show record full insn-number-max
6904 Show the limit of instructions to be recorded with the @code{full}
6905 recording method.
6906
6907 @item set record full stop-at-limit
6908 Control the behavior of the @code{full} recording method when the
6909 number of recorded instructions reaches the limit. If ON (the
6910 default), @value{GDBN} will stop when the limit is reached for the
6911 first time and ask you whether you want to stop the inferior or
6912 continue running it and recording the execution log. If you decide
6913 to continue recording, each new recorded instruction will cause the
6914 oldest one to be deleted.
6915
6916 If this option is OFF, @value{GDBN} will automatically delete the
6917 oldest record to make room for each new one, without asking.
6918
6919 @item show record full stop-at-limit
6920 Show the current setting of @code{stop-at-limit}.
6921
6922 @item set record full memory-query
6923 Control the behavior when @value{GDBN} is unable to record memory
6924 changes caused by an instruction for the @code{full} recording method.
6925 If ON, @value{GDBN} will query whether to stop the inferior in that
6926 case.
6927
6928 If this option is OFF (the default), @value{GDBN} will automatically
6929 ignore the effect of such instructions on memory. Later, when
6930 @value{GDBN} replays this execution log, it will mark the log of this
6931 instruction as not accessible, and it will not affect the replay
6932 results.
6933
6934 @item show record full memory-query
6935 Show the current setting of @code{memory-query}.
6936
6937 @kindex set record btrace
6938 The @code{btrace} record target does not trace data. As a
6939 convenience, when replaying, @value{GDBN} reads read-only memory off
6940 the live program directly, assuming that the addresses of the
6941 read-only areas don't change. This for example makes it possible to
6942 disassemble code while replaying, but not to print variables.
6943 In some cases, being able to inspect variables might be useful.
6944 You can use the following command for that:
6945
6946 @item set record btrace replay-memory-access
6947 Control the behavior of the @code{btrace} recording method when
6948 accessing memory during replay. If @code{read-only} (the default),
6949 @value{GDBN} will only allow accesses to read-only memory.
6950 If @code{read-write}, @value{GDBN} will allow accesses to read-only
6951 and to read-write memory. Beware that the accessed memory corresponds
6952 to the live target and not necessarily to the current replay
6953 position.
6954
6955 @kindex show record btrace
6956 @item show record btrace replay-memory-access
6957 Show the current setting of @code{replay-memory-access}.
6958
6959 @kindex set record btrace bts
6960 @item set record btrace bts buffer-size @var{size}
6961 @itemx set record btrace bts buffer-size unlimited
6962 Set the requested ring buffer size for branch tracing in @acronym{BTS}
6963 format. Default is 64KB.
6964
6965 If @var{size} is a positive number, then @value{GDBN} will try to
6966 allocate a buffer of at least @var{size} bytes for each new thread
6967 that uses the btrace recording method and the @acronym{BTS} format.
6968 The actually obtained buffer size may differ from the requested
6969 @var{size}. Use the @code{info record} command to see the actual
6970 buffer size for each thread that uses the btrace recording method and
6971 the @acronym{BTS} format.
6972
6973 If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to
6974 allocate a buffer of 4MB.
6975
6976 Bigger buffers mean longer traces. On the other hand, @value{GDBN} will
6977 also need longer to process the branch trace data before it can be used.
6978
6979 @item show record btrace bts buffer-size @var{size}
6980 Show the current setting of the requested ring buffer size for branch
6981 tracing in @acronym{BTS} format.
6982
6983 @kindex set record btrace pt
6984 @item set record btrace pt buffer-size @var{size}
6985 @itemx set record btrace pt buffer-size unlimited
6986 Set the requested ring buffer size for branch tracing in Intel
6987 Processor Trace format. Default is 16KB.
6988
6989 If @var{size} is a positive number, then @value{GDBN} will try to
6990 allocate a buffer of at least @var{size} bytes for each new thread
6991 that uses the btrace recording method and the Intel Processor Trace
6992 format. The actually obtained buffer size may differ from the
6993 requested @var{size}. Use the @code{info record} command to see the
6994 actual buffer size for each thread.
6995
6996 If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to
6997 allocate a buffer of 4MB.
6998
6999 Bigger buffers mean longer traces. On the other hand, @value{GDBN} will
7000 also need longer to process the branch trace data before it can be used.
7001
7002 @item show record btrace pt buffer-size @var{size}
7003 Show the current setting of the requested ring buffer size for branch
7004 tracing in Intel Processor Trace format.
7005
7006 @kindex info record
7007 @item info record
7008 Show various statistics about the recording depending on the recording
7009 method:
7010
7011 @table @code
7012 @item full
7013 For the @code{full} recording method, it shows the state of process
7014 record and its in-memory execution log buffer, including:
7015
7016 @itemize @bullet
7017 @item
7018 Whether in record mode or replay mode.
7019 @item
7020 Lowest recorded instruction number (counting from when the current execution log started recording instructions).
7021 @item
7022 Highest recorded instruction number.
7023 @item
7024 Current instruction about to be replayed (if in replay mode).
7025 @item
7026 Number of instructions contained in the execution log.
7027 @item
7028 Maximum number of instructions that may be contained in the execution log.
7029 @end itemize
7030
7031 @item btrace
7032 For the @code{btrace} recording method, it shows:
7033
7034 @itemize @bullet
7035 @item
7036 Recording format.
7037 @item
7038 Number of instructions that have been recorded.
7039 @item
7040 Number of blocks of sequential control-flow formed by the recorded
7041 instructions.
7042 @item
7043 Whether in record mode or replay mode.
7044 @end itemize
7045
7046 For the @code{bts} recording format, it also shows:
7047 @itemize @bullet
7048 @item
7049 Size of the perf ring buffer.
7050 @end itemize
7051
7052 For the @code{pt} recording format, it also shows:
7053 @itemize @bullet
7054 @item
7055 Size of the perf ring buffer.
7056 @end itemize
7057 @end table
7058
7059 @kindex record delete
7060 @kindex rec del
7061 @item record delete
7062 When record target runs in replay mode (``in the past''), delete the
7063 subsequent execution log and begin to record a new execution log starting
7064 from the current address. This means you will abandon the previously
7065 recorded ``future'' and begin recording a new ``future''.
7066
7067 @kindex record instruction-history
7068 @kindex rec instruction-history
7069 @item record instruction-history
7070 Disassembles instructions from the recorded execution log. By
7071 default, ten instructions are disassembled. This can be changed using
7072 the @code{set record instruction-history-size} command. Instructions
7073 are printed in execution order.
7074
7075 It can also print mixed source+disassembly if you specify the the
7076 @code{/m} or @code{/s} modifier, and print the raw instructions in hex
7077 as well as in symbolic form by specifying the @code{/r} modifier.
7078
7079 The current position marker is printed for the instruction at the
7080 current program counter value. This instruction can appear multiple
7081 times in the trace and the current position marker will be printed
7082 every time. To omit the current position marker, specify the
7083 @code{/p} modifier.
7084
7085 To better align the printed instructions when the trace contains
7086 instructions from more than one function, the function name may be
7087 omitted by specifying the @code{/f} modifier.
7088
7089 Speculatively executed instructions are prefixed with @samp{?}. This
7090 feature is not available for all recording formats.
7091
7092 There are several ways to specify what part of the execution log to
7093 disassemble:
7094
7095 @table @code
7096 @item record instruction-history @var{insn}
7097 Disassembles ten instructions starting from instruction number
7098 @var{insn}.
7099
7100 @item record instruction-history @var{insn}, +/-@var{n}
7101 Disassembles @var{n} instructions around instruction number
7102 @var{insn}. If @var{n} is preceded with @code{+}, disassembles
7103 @var{n} instructions after instruction number @var{insn}. If
7104 @var{n} is preceded with @code{-}, disassembles @var{n}
7105 instructions before instruction number @var{insn}.
7106
7107 @item record instruction-history
7108 Disassembles ten more instructions after the last disassembly.
7109
7110 @item record instruction-history -
7111 Disassembles ten more instructions before the last disassembly.
7112
7113 @item record instruction-history @var{begin}, @var{end}
7114 Disassembles instructions beginning with instruction number
7115 @var{begin} until instruction number @var{end}. The instruction
7116 number @var{end} is included.
7117 @end table
7118
7119 This command may not be available for all recording methods.
7120
7121 @kindex set record
7122 @item set record instruction-history-size @var{size}
7123 @itemx set record instruction-history-size unlimited
7124 Define how many instructions to disassemble in the @code{record
7125 instruction-history} command. The default value is 10.
7126 A @var{size} of @code{unlimited} means unlimited instructions.
7127
7128 @kindex show record
7129 @item show record instruction-history-size
7130 Show how many instructions to disassemble in the @code{record
7131 instruction-history} command.
7132
7133 @kindex record function-call-history
7134 @kindex rec function-call-history
7135 @item record function-call-history
7136 Prints the execution history at function granularity. It prints one
7137 line for each sequence of instructions that belong to the same
7138 function giving the name of that function, the source lines
7139 for this instruction sequence (if the @code{/l} modifier is
7140 specified), and the instructions numbers that form the sequence (if
7141 the @code{/i} modifier is specified). The function names are indented
7142 to reflect the call stack depth if the @code{/c} modifier is
7143 specified. The @code{/l}, @code{/i}, and @code{/c} modifiers can be
7144 given together.
7145
7146 @smallexample
7147 (@value{GDBP}) @b{list 1, 10}
7148 1 void foo (void)
7149 2 @{
7150 3 @}
7151 4
7152 5 void bar (void)
7153 6 @{
7154 7 ...
7155 8 foo ();
7156 9 ...
7157 10 @}
7158 (@value{GDBP}) @b{record function-call-history /ilc}
7159 1 bar inst 1,4 at foo.c:6,8
7160 2 foo inst 5,10 at foo.c:2,3
7161 3 bar inst 11,13 at foo.c:9,10
7162 @end smallexample
7163
7164 By default, ten lines are printed. This can be changed using the
7165 @code{set record function-call-history-size} command. Functions are
7166 printed in execution order. There are several ways to specify what
7167 to print:
7168
7169 @table @code
7170 @item record function-call-history @var{func}
7171 Prints ten functions starting from function number @var{func}.
7172
7173 @item record function-call-history @var{func}, +/-@var{n}
7174 Prints @var{n} functions around function number @var{func}. If
7175 @var{n} is preceded with @code{+}, prints @var{n} functions after
7176 function number @var{func}. If @var{n} is preceded with @code{-},
7177 prints @var{n} functions before function number @var{func}.
7178
7179 @item record function-call-history
7180 Prints ten more functions after the last ten-line print.
7181
7182 @item record function-call-history -
7183 Prints ten more functions before the last ten-line print.
7184
7185 @item record function-call-history @var{begin}, @var{end}
7186 Prints functions beginning with function number @var{begin} until
7187 function number @var{end}. The function number @var{end} is included.
7188 @end table
7189
7190 This command may not be available for all recording methods.
7191
7192 @item set record function-call-history-size @var{size}
7193 @itemx set record function-call-history-size unlimited
7194 Define how many lines to print in the
7195 @code{record function-call-history} command. The default value is 10.
7196 A size of @code{unlimited} means unlimited lines.
7197
7198 @item show record function-call-history-size
7199 Show how many lines to print in the
7200 @code{record function-call-history} command.
7201 @end table
7202
7203
7204 @node Stack
7205 @chapter Examining the Stack
7206
7207 When your program has stopped, the first thing you need to know is where it
7208 stopped and how it got there.
7209
7210 @cindex call stack
7211 Each time your program performs a function call, information about the call
7212 is generated.
7213 That information includes the location of the call in your program,
7214 the arguments of the call,
7215 and the local variables of the function being called.
7216 The information is saved in a block of data called a @dfn{stack frame}.
7217 The stack frames are allocated in a region of memory called the @dfn{call
7218 stack}.
7219
7220 When your program stops, the @value{GDBN} commands for examining the
7221 stack allow you to see all of this information.
7222
7223 @cindex selected frame
7224 One of the stack frames is @dfn{selected} by @value{GDBN} and many
7225 @value{GDBN} commands refer implicitly to the selected frame. In
7226 particular, whenever you ask @value{GDBN} for the value of a variable in
7227 your program, the value is found in the selected frame. There are
7228 special @value{GDBN} commands to select whichever frame you are
7229 interested in. @xref{Selection, ,Selecting a Frame}.
7230
7231 When your program stops, @value{GDBN} automatically selects the
7232 currently executing frame and describes it briefly, similar to the
7233 @code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
7234
7235 @menu
7236 * Frames:: Stack frames
7237 * Backtrace:: Backtraces
7238 * Selection:: Selecting a frame
7239 * Frame Info:: Information on a frame
7240 * Frame Filter Management:: Managing frame filters
7241
7242 @end menu
7243
7244 @node Frames
7245 @section Stack Frames
7246
7247 @cindex frame, definition
7248 @cindex stack frame
7249 The call stack is divided up into contiguous pieces called @dfn{stack
7250 frames}, or @dfn{frames} for short; each frame is the data associated
7251 with one call to one function. The frame contains the arguments given
7252 to the function, the function's local variables, and the address at
7253 which the function is executing.
7254
7255 @cindex initial frame
7256 @cindex outermost frame
7257 @cindex innermost frame
7258 When your program is started, the stack has only one frame, that of the
7259 function @code{main}. This is called the @dfn{initial} frame or the
7260 @dfn{outermost} frame. Each time a function is called, a new frame is
7261 made. Each time a function returns, the frame for that function invocation
7262 is eliminated. If a function is recursive, there can be many frames for
7263 the same function. The frame for the function in which execution is
7264 actually occurring is called the @dfn{innermost} frame. This is the most
7265 recently created of all the stack frames that still exist.
7266
7267 @cindex frame pointer
7268 Inside your program, stack frames are identified by their addresses. A
7269 stack frame consists of many bytes, each of which has its own address; each
7270 kind of computer has a convention for choosing one byte whose
7271 address serves as the address of the frame. Usually this address is kept
7272 in a register called the @dfn{frame pointer register}
7273 (@pxref{Registers, $fp}) while execution is going on in that frame.
7274
7275 @cindex frame number
7276 @value{GDBN} assigns numbers to all existing stack frames, starting with
7277 zero for the innermost frame, one for the frame that called it,
7278 and so on upward. These numbers do not really exist in your program;
7279 they are assigned by @value{GDBN} to give you a way of designating stack
7280 frames in @value{GDBN} commands.
7281
7282 @c The -fomit-frame-pointer below perennially causes hbox overflow
7283 @c underflow problems.
7284 @cindex frameless execution
7285 Some compilers provide a way to compile functions so that they operate
7286 without stack frames. (For example, the @value{NGCC} option
7287 @smallexample
7288 @samp{-fomit-frame-pointer}
7289 @end smallexample
7290 generates functions without a frame.)
7291 This is occasionally done with heavily used library functions to save
7292 the frame setup time. @value{GDBN} has limited facilities for dealing
7293 with these function invocations. If the innermost function invocation
7294 has no stack frame, @value{GDBN} nevertheless regards it as though
7295 it had a separate frame, which is numbered zero as usual, allowing
7296 correct tracing of the function call chain. However, @value{GDBN} has
7297 no provision for frameless functions elsewhere in the stack.
7298
7299 @node Backtrace
7300 @section Backtraces
7301
7302 @cindex traceback
7303 @cindex call stack traces
7304 A backtrace is a summary of how your program got where it is. It shows one
7305 line per frame, for many frames, starting with the currently executing
7306 frame (frame zero), followed by its caller (frame one), and on up the
7307 stack.
7308
7309 @anchor{backtrace-command}
7310 @kindex backtrace
7311 @kindex bt @r{(@code{backtrace})}
7312 To print a backtrace of the entire stack, use the @code{backtrace}
7313 command, or its alias @code{bt}. This command will print one line per
7314 frame for frames in the stack. By default, all stack frames are
7315 printed. You can stop the backtrace at any time by typing the system
7316 interrupt character, normally @kbd{Ctrl-c}.
7317
7318 @table @code
7319 @item backtrace [@var{args}@dots{}]
7320 @itemx bt [@var{args}@dots{}]
7321 Print the backtrace of the entire stack. The optional @var{args} can
7322 be one of the following:
7323
7324 @table @code
7325 @item @var{n}
7326 @itemx @var{n}
7327 Print only the innermost @var{n} frames, where @var{n} is a positive
7328 number.
7329
7330 @item -@var{n}
7331 @itemx -@var{n}
7332 Print only the outermost @var{n} frames, where @var{n} is a positive
7333 number.
7334
7335 @item full
7336 Print the values of the local variables also. This can be combined
7337 with a number to limit the number of frames shown.
7338
7339 @item no-filters
7340 Do not run Python frame filters on this backtrace. @xref{Frame
7341 Filter API}, for more information. Additionally use @ref{disable
7342 frame-filter all} to turn off all frame filters. This is only
7343 relevant when @value{GDBN} has been configured with @code{Python}
7344 support.
7345
7346 @item hide
7347 A Python frame filter might decide to ``elide'' some frames. Normally
7348 such elided frames are still printed, but they are indented relative
7349 to the filtered frames that cause them to be elided. The @code{hide}
7350 option causes elided frames to not be printed at all.
7351 @end table
7352 @end table
7353
7354 @kindex where
7355 @kindex info stack
7356 The names @code{where} and @code{info stack} (abbreviated @code{info s})
7357 are additional aliases for @code{backtrace}.
7358
7359 @cindex multiple threads, backtrace
7360 In a multi-threaded program, @value{GDBN} by default shows the
7361 backtrace only for the current thread. To display the backtrace for
7362 several or all of the threads, use the command @code{thread apply}
7363 (@pxref{Threads, thread apply}). For example, if you type @kbd{thread
7364 apply all backtrace}, @value{GDBN} will display the backtrace for all
7365 the threads; this is handy when you debug a core dump of a
7366 multi-threaded program.
7367
7368 Each line in the backtrace shows the frame number and the function name.
7369 The program counter value is also shown---unless you use @code{set
7370 print address off}. The backtrace also shows the source file name and
7371 line number, as well as the arguments to the function. The program
7372 counter value is omitted if it is at the beginning of the code for that
7373 line number.
7374
7375 Here is an example of a backtrace. It was made with the command
7376 @samp{bt 3}, so it shows the innermost three frames.
7377
7378 @smallexample
7379 @group
7380 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
7381 at builtin.c:993
7382 #1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
7383 #2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
7384 at macro.c:71
7385 (More stack frames follow...)
7386 @end group
7387 @end smallexample
7388
7389 @noindent
7390 The display for frame zero does not begin with a program counter
7391 value, indicating that your program has stopped at the beginning of the
7392 code for line @code{993} of @code{builtin.c}.
7393
7394 @noindent
7395 The value of parameter @code{data} in frame 1 has been replaced by
7396 @code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
7397 only if it is a scalar (integer, pointer, enumeration, etc). See command
7398 @kbd{set print frame-arguments} in @ref{Print Settings} for more details
7399 on how to configure the way function parameter values are printed.
7400
7401 @cindex optimized out, in backtrace
7402 @cindex function call arguments, optimized out
7403 If your program was compiled with optimizations, some compilers will
7404 optimize away arguments passed to functions if those arguments are
7405 never used after the call. Such optimizations generate code that
7406 passes arguments through registers, but doesn't store those arguments
7407 in the stack frame. @value{GDBN} has no way of displaying such
7408 arguments in stack frames other than the innermost one. Here's what
7409 such a backtrace might look like:
7410
7411 @smallexample
7412 @group
7413 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
7414 at builtin.c:993
7415 #1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
7416 #2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
7417 at macro.c:71
7418 (More stack frames follow...)
7419 @end group
7420 @end smallexample
7421
7422 @noindent
7423 The values of arguments that were not saved in their stack frames are
7424 shown as @samp{<optimized out>}.
7425
7426 If you need to display the values of such optimized-out arguments,
7427 either deduce that from other variables whose values depend on the one
7428 you are interested in, or recompile without optimizations.
7429
7430 @cindex backtrace beyond @code{main} function
7431 @cindex program entry point
7432 @cindex startup code, and backtrace
7433 Most programs have a standard user entry point---a place where system
7434 libraries and startup code transition into user code. For C this is
7435 @code{main}@footnote{
7436 Note that embedded programs (the so-called ``free-standing''
7437 environment) are not required to have a @code{main} function as the
7438 entry point. They could even have multiple entry points.}.
7439 When @value{GDBN} finds the entry function in a backtrace
7440 it will terminate the backtrace, to avoid tracing into highly
7441 system-specific (and generally uninteresting) code.
7442
7443 If you need to examine the startup code, or limit the number of levels
7444 in a backtrace, you can change this behavior:
7445
7446 @table @code
7447 @item set backtrace past-main
7448 @itemx set backtrace past-main on
7449 @kindex set backtrace
7450 Backtraces will continue past the user entry point.
7451
7452 @item set backtrace past-main off
7453 Backtraces will stop when they encounter the user entry point. This is the
7454 default.
7455
7456 @item show backtrace past-main
7457 @kindex show backtrace
7458 Display the current user entry point backtrace policy.
7459
7460 @item set backtrace past-entry
7461 @itemx set backtrace past-entry on
7462 Backtraces will continue past the internal entry point of an application.
7463 This entry point is encoded by the linker when the application is built,
7464 and is likely before the user entry point @code{main} (or equivalent) is called.
7465
7466 @item set backtrace past-entry off
7467 Backtraces will stop when they encounter the internal entry point of an
7468 application. This is the default.
7469
7470 @item show backtrace past-entry
7471 Display the current internal entry point backtrace policy.
7472
7473 @item set backtrace limit @var{n}
7474 @itemx set backtrace limit 0
7475 @itemx set backtrace limit unlimited
7476 @cindex backtrace limit
7477 Limit the backtrace to @var{n} levels. A value of @code{unlimited}
7478 or zero means unlimited levels.
7479
7480 @item show backtrace limit
7481 Display the current limit on backtrace levels.
7482 @end table
7483
7484 You can control how file names are displayed.
7485
7486 @table @code
7487 @item set filename-display
7488 @itemx set filename-display relative
7489 @cindex filename-display
7490 Display file names relative to the compilation directory. This is the default.
7491
7492 @item set filename-display basename
7493 Display only basename of a filename.
7494
7495 @item set filename-display absolute
7496 Display an absolute filename.
7497
7498 @item show filename-display
7499 Show the current way to display filenames.
7500 @end table
7501
7502 @node Selection
7503 @section Selecting a Frame
7504
7505 Most commands for examining the stack and other data in your program work on
7506 whichever stack frame is selected at the moment. Here are the commands for
7507 selecting a stack frame; all of them finish by printing a brief description
7508 of the stack frame just selected.
7509
7510 @table @code
7511 @kindex frame@r{, selecting}
7512 @kindex f @r{(@code{frame})}
7513 @item frame @var{n}
7514 @itemx f @var{n}
7515 Select frame number @var{n}. Recall that frame zero is the innermost
7516 (currently executing) frame, frame one is the frame that called the
7517 innermost one, and so on. The highest-numbered frame is the one for
7518 @code{main}.
7519
7520 @item frame @var{stack-addr} [ @var{pc-addr} ]
7521 @itemx f @var{stack-addr} [ @var{pc-addr} ]
7522 Select the frame at address @var{stack-addr}. This is useful mainly if the
7523 chaining of stack frames has been damaged by a bug, making it
7524 impossible for @value{GDBN} to assign numbers properly to all frames. In
7525 addition, this can be useful when your program has multiple stacks and
7526 switches between them. The optional @var{pc-addr} can also be given to
7527 specify the value of PC for the stack frame.
7528
7529 @kindex up
7530 @item up @var{n}
7531 Move @var{n} frames up the stack; @var{n} defaults to 1. For positive
7532 numbers @var{n}, this advances toward the outermost frame, to higher
7533 frame numbers, to frames that have existed longer.
7534
7535 @kindex down
7536 @kindex do @r{(@code{down})}
7537 @item down @var{n}
7538 Move @var{n} frames down the stack; @var{n} defaults to 1. For
7539 positive numbers @var{n}, this advances toward the innermost frame, to
7540 lower frame numbers, to frames that were created more recently.
7541 You may abbreviate @code{down} as @code{do}.
7542 @end table
7543
7544 All of these commands end by printing two lines of output describing the
7545 frame. The first line shows the frame number, the function name, the
7546 arguments, and the source file and line number of execution in that
7547 frame. The second line shows the text of that source line.
7548
7549 @need 1000
7550 For example:
7551
7552 @smallexample
7553 @group
7554 (@value{GDBP}) up
7555 #1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
7556 at env.c:10
7557 10 read_input_file (argv[i]);
7558 @end group
7559 @end smallexample
7560
7561 After such a printout, the @code{list} command with no arguments
7562 prints ten lines centered on the point of execution in the frame.
7563 You can also edit the program at the point of execution with your favorite
7564 editing program by typing @code{edit}.
7565 @xref{List, ,Printing Source Lines},
7566 for details.
7567
7568 @table @code
7569 @kindex select-frame
7570 @item select-frame
7571 The @code{select-frame} command is a variant of @code{frame} that does
7572 not display the new frame after selecting it. This command is
7573 intended primarily for use in @value{GDBN} command scripts, where the
7574 output might be unnecessary and distracting.
7575
7576 @kindex down-silently
7577 @kindex up-silently
7578 @item up-silently @var{n}
7579 @itemx down-silently @var{n}
7580 These two commands are variants of @code{up} and @code{down},
7581 respectively; they differ in that they do their work silently, without
7582 causing display of the new frame. They are intended primarily for use
7583 in @value{GDBN} command scripts, where the output might be unnecessary and
7584 distracting.
7585 @end table
7586
7587 @node Frame Info
7588 @section Information About a Frame
7589
7590 There are several other commands to print information about the selected
7591 stack frame.
7592
7593 @table @code
7594 @item frame
7595 @itemx f
7596 When used without any argument, this command does not change which
7597 frame is selected, but prints a brief description of the currently
7598 selected stack frame. It can be abbreviated @code{f}. With an
7599 argument, this command is used to select a stack frame.
7600 @xref{Selection, ,Selecting a Frame}.
7601
7602 @kindex info frame
7603 @kindex info f @r{(@code{info frame})}
7604 @item info frame
7605 @itemx info f
7606 This command prints a verbose description of the selected stack frame,
7607 including:
7608
7609 @itemize @bullet
7610 @item
7611 the address of the frame
7612 @item
7613 the address of the next frame down (called by this frame)
7614 @item
7615 the address of the next frame up (caller of this frame)
7616 @item
7617 the language in which the source code corresponding to this frame is written
7618 @item
7619 the address of the frame's arguments
7620 @item
7621 the address of the frame's local variables
7622 @item
7623 the program counter saved in it (the address of execution in the caller frame)
7624 @item
7625 which registers were saved in the frame
7626 @end itemize
7627
7628 @noindent The verbose description is useful when
7629 something has gone wrong that has made the stack format fail to fit
7630 the usual conventions.
7631
7632 @item info frame @var{addr}
7633 @itemx info f @var{addr}
7634 Print a verbose description of the frame at address @var{addr}, without
7635 selecting that frame. The selected frame remains unchanged by this
7636 command. This requires the same kind of address (more than one for some
7637 architectures) that you specify in the @code{frame} command.
7638 @xref{Selection, ,Selecting a Frame}.
7639
7640 @kindex info args
7641 @item info args
7642 Print the arguments of the selected frame, each on a separate line.
7643
7644 @item info locals
7645 @kindex info locals
7646 Print the local variables of the selected frame, each on a separate
7647 line. These are all variables (declared either static or automatic)
7648 accessible at the point of execution of the selected frame.
7649
7650 @end table
7651
7652 @node Frame Filter Management
7653 @section Management of Frame Filters.
7654 @cindex managing frame filters
7655
7656 Frame filters are Python based utilities to manage and decorate the
7657 output of frames. @xref{Frame Filter API}, for further information.
7658
7659 Managing frame filters is performed by several commands available
7660 within @value{GDBN}, detailed here.
7661
7662 @table @code
7663 @kindex info frame-filter
7664 @item info frame-filter
7665 Print a list of installed frame filters from all dictionaries, showing
7666 their name, priority and enabled status.
7667
7668 @kindex disable frame-filter
7669 @anchor{disable frame-filter all}
7670 @item disable frame-filter @var{filter-dictionary} @var{filter-name}
7671 Disable a frame filter in the dictionary matching
7672 @var{filter-dictionary} and @var{filter-name}. The
7673 @var{filter-dictionary} may be @code{all}, @code{global},
7674 @code{progspace}, or the name of the object file where the frame filter
7675 dictionary resides. When @code{all} is specified, all frame filters
7676 across all dictionaries are disabled. The @var{filter-name} is the name
7677 of the frame filter and is used when @code{all} is not the option for
7678 @var{filter-dictionary}. A disabled frame-filter is not deleted, it
7679 may be enabled again later.
7680
7681 @kindex enable frame-filter
7682 @item enable frame-filter @var{filter-dictionary} @var{filter-name}
7683 Enable a frame filter in the dictionary matching
7684 @var{filter-dictionary} and @var{filter-name}. The
7685 @var{filter-dictionary} may be @code{all}, @code{global},
7686 @code{progspace} or the name of the object file where the frame filter
7687 dictionary resides. When @code{all} is specified, all frame filters across
7688 all dictionaries are enabled. The @var{filter-name} is the name of the frame
7689 filter and is used when @code{all} is not the option for
7690 @var{filter-dictionary}.
7691
7692 Example:
7693
7694 @smallexample
7695 (gdb) info frame-filter
7696
7697 global frame-filters:
7698 Priority Enabled Name
7699 1000 No PrimaryFunctionFilter
7700 100 Yes Reverse
7701
7702 progspace /build/test frame-filters:
7703 Priority Enabled Name
7704 100 Yes ProgspaceFilter
7705
7706 objfile /build/test frame-filters:
7707 Priority Enabled Name
7708 999 Yes BuildProgra Filter
7709
7710 (gdb) disable frame-filter /build/test BuildProgramFilter
7711 (gdb) info frame-filter
7712
7713 global frame-filters:
7714 Priority Enabled Name
7715 1000 No PrimaryFunctionFilter
7716 100 Yes Reverse
7717
7718 progspace /build/test frame-filters:
7719 Priority Enabled Name
7720 100 Yes ProgspaceFilter
7721
7722 objfile /build/test frame-filters:
7723 Priority Enabled Name
7724 999 No BuildProgramFilter
7725
7726 (gdb) enable frame-filter global PrimaryFunctionFilter
7727 (gdb) info frame-filter
7728
7729 global frame-filters:
7730 Priority Enabled Name
7731 1000 Yes PrimaryFunctionFilter
7732 100 Yes Reverse
7733
7734 progspace /build/test frame-filters:
7735 Priority Enabled Name
7736 100 Yes ProgspaceFilter
7737
7738 objfile /build/test frame-filters:
7739 Priority Enabled Name
7740 999 No BuildProgramFilter
7741 @end smallexample
7742
7743 @kindex set frame-filter priority
7744 @item set frame-filter priority @var{filter-dictionary} @var{filter-name} @var{priority}
7745 Set the @var{priority} of a frame filter in the dictionary matching
7746 @var{filter-dictionary}, and the frame filter name matching
7747 @var{filter-name}. The @var{filter-dictionary} may be @code{global},
7748 @code{progspace} or the name of the object file where the frame filter
7749 dictionary resides. The @var{priority} is an integer.
7750
7751 @kindex show frame-filter priority
7752 @item show frame-filter priority @var{filter-dictionary} @var{filter-name}
7753 Show the @var{priority} of a frame filter in the dictionary matching
7754 @var{filter-dictionary}, and the frame filter name matching
7755 @var{filter-name}. The @var{filter-dictionary} may be @code{global},
7756 @code{progspace} or the name of the object file where the frame filter
7757 dictionary resides.
7758
7759 Example:
7760
7761 @smallexample
7762 (gdb) info frame-filter
7763
7764 global frame-filters:
7765 Priority Enabled Name
7766 1000 Yes PrimaryFunctionFilter
7767 100 Yes Reverse
7768
7769 progspace /build/test frame-filters:
7770 Priority Enabled Name
7771 100 Yes ProgspaceFilter
7772
7773 objfile /build/test frame-filters:
7774 Priority Enabled Name
7775 999 No BuildProgramFilter
7776
7777 (gdb) set frame-filter priority global Reverse 50
7778 (gdb) info frame-filter
7779
7780 global frame-filters:
7781 Priority Enabled Name
7782 1000 Yes PrimaryFunctionFilter
7783 50 Yes Reverse
7784
7785 progspace /build/test frame-filters:
7786 Priority Enabled Name
7787 100 Yes ProgspaceFilter
7788
7789 objfile /build/test frame-filters:
7790 Priority Enabled Name
7791 999 No BuildProgramFilter
7792 @end smallexample
7793 @end table
7794
7795 @node Source
7796 @chapter Examining Source Files
7797
7798 @value{GDBN} can print parts of your program's source, since the debugging
7799 information recorded in the program tells @value{GDBN} what source files were
7800 used to build it. When your program stops, @value{GDBN} spontaneously prints
7801 the line where it stopped. Likewise, when you select a stack frame
7802 (@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
7803 execution in that frame has stopped. You can print other portions of
7804 source files by explicit command.
7805
7806 If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
7807 prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7808 @value{GDBN} under @sc{gnu} Emacs}.
7809
7810 @menu
7811 * List:: Printing source lines
7812 * Specify Location:: How to specify code locations
7813 * Edit:: Editing source files
7814 * Search:: Searching source files
7815 * Source Path:: Specifying source directories
7816 * Machine Code:: Source and machine code
7817 @end menu
7818
7819 @node List
7820 @section Printing Source Lines
7821
7822 @kindex list
7823 @kindex l @r{(@code{list})}
7824 To print lines from a source file, use the @code{list} command
7825 (abbreviated @code{l}). By default, ten lines are printed.
7826 There are several ways to specify what part of the file you want to
7827 print; see @ref{Specify Location}, for the full list.
7828
7829 Here are the forms of the @code{list} command most commonly used:
7830
7831 @table @code
7832 @item list @var{linenum}
7833 Print lines centered around line number @var{linenum} in the
7834 current source file.
7835
7836 @item list @var{function}
7837 Print lines centered around the beginning of function
7838 @var{function}.
7839
7840 @item list
7841 Print more lines. If the last lines printed were printed with a
7842 @code{list} command, this prints lines following the last lines
7843 printed; however, if the last line printed was a solitary line printed
7844 as part of displaying a stack frame (@pxref{Stack, ,Examining the
7845 Stack}), this prints lines centered around that line.
7846
7847 @item list -
7848 Print lines just before the lines last printed.
7849 @end table
7850
7851 @cindex @code{list}, how many lines to display
7852 By default, @value{GDBN} prints ten source lines with any of these forms of
7853 the @code{list} command. You can change this using @code{set listsize}:
7854
7855 @table @code
7856 @kindex set listsize
7857 @item set listsize @var{count}
7858 @itemx set listsize unlimited
7859 Make the @code{list} command display @var{count} source lines (unless
7860 the @code{list} argument explicitly specifies some other number).
7861 Setting @var{count} to @code{unlimited} or 0 means there's no limit.
7862
7863 @kindex show listsize
7864 @item show listsize
7865 Display the number of lines that @code{list} prints.
7866 @end table
7867
7868 Repeating a @code{list} command with @key{RET} discards the argument,
7869 so it is equivalent to typing just @code{list}. This is more useful
7870 than listing the same lines again. An exception is made for an
7871 argument of @samp{-}; that argument is preserved in repetition so that
7872 each repetition moves up in the source file.
7873
7874 In general, the @code{list} command expects you to supply zero, one or two
7875 @dfn{locations}. Locations specify source lines; there are several ways
7876 of writing them (@pxref{Specify Location}), but the effect is always
7877 to specify some source line.
7878
7879 Here is a complete description of the possible arguments for @code{list}:
7880
7881 @table @code
7882 @item list @var{location}
7883 Print lines centered around the line specified by @var{location}.
7884
7885 @item list @var{first},@var{last}
7886 Print lines from @var{first} to @var{last}. Both arguments are
7887 locations. When a @code{list} command has two locations, and the
7888 source file of the second location is omitted, this refers to
7889 the same source file as the first location.
7890
7891 @item list ,@var{last}
7892 Print lines ending with @var{last}.
7893
7894 @item list @var{first},
7895 Print lines starting with @var{first}.
7896
7897 @item list +
7898 Print lines just after the lines last printed.
7899
7900 @item list -
7901 Print lines just before the lines last printed.
7902
7903 @item list
7904 As described in the preceding table.
7905 @end table
7906
7907 @node Specify Location
7908 @section Specifying a Location
7909 @cindex specifying location
7910 @cindex location
7911 @cindex source location
7912
7913 @menu
7914 * Linespec Locations:: Linespec locations
7915 * Explicit Locations:: Explicit locations
7916 * Address Locations:: Address locations
7917 @end menu
7918
7919 Several @value{GDBN} commands accept arguments that specify a location
7920 of your program's code. Since @value{GDBN} is a source-level
7921 debugger, a location usually specifies some line in the source code.
7922 Locations may be specified using three different formats:
7923 linespec locations, explicit locations, or address locations.
7924
7925 @node Linespec Locations
7926 @subsection Linespec Locations
7927 @cindex linespec locations
7928
7929 A @dfn{linespec} is a colon-separated list of source location parameters such
7930 as file name, function name, etc. Here are all the different ways of
7931 specifying a linespec:
7932
7933 @table @code
7934 @item @var{linenum}
7935 Specifies the line number @var{linenum} of the current source file.
7936
7937 @item -@var{offset}
7938 @itemx +@var{offset}
7939 Specifies the line @var{offset} lines before or after the @dfn{current
7940 line}. For the @code{list} command, the current line is the last one
7941 printed; for the breakpoint commands, this is the line at which
7942 execution stopped in the currently selected @dfn{stack frame}
7943 (@pxref{Frames, ,Frames}, for a description of stack frames.) When
7944 used as the second of the two linespecs in a @code{list} command,
7945 this specifies the line @var{offset} lines up or down from the first
7946 linespec.
7947
7948 @item @var{filename}:@var{linenum}
7949 Specifies the line @var{linenum} in the source file @var{filename}.
7950 If @var{filename} is a relative file name, then it will match any
7951 source file name with the same trailing components. For example, if
7952 @var{filename} is @samp{gcc/expr.c}, then it will match source file
7953 name of @file{/build/trunk/gcc/expr.c}, but not
7954 @file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
7955
7956 @item @var{function}
7957 Specifies the line that begins the body of the function @var{function}.
7958 For example, in C, this is the line with the open brace.
7959
7960 By default, in C@t{++} and Ada, @var{function} is interpreted as
7961 specifying all functions named @var{function} in all scopes. For
7962 C@t{++}, this means in all namespaces and classes. For Ada, this
7963 means in all packages.
7964
7965 For example, assuming a program with C@t{++} symbols named
7966 @code{A::B::func} and @code{B::func}, both commands @w{@kbd{break
7967 func}} and @w{@kbd{break B::func}} set a breakpoint on both symbols.
7968
7969 Commands that accept a linespec let you override this with the
7970 @code{-qualified} option. For example, @w{@kbd{break -qualified
7971 func}} sets a breakpoint on a free-function named @code{func} ignoring
7972 any C@t{++} class methods and namespace functions called @code{func}.
7973
7974 @xref{Explicit Locations}.
7975
7976 @item @var{function}:@var{label}
7977 Specifies the line where @var{label} appears in @var{function}.
7978
7979 @item @var{filename}:@var{function}
7980 Specifies the line that begins the body of the function @var{function}
7981 in the file @var{filename}. You only need the file name with a
7982 function name to avoid ambiguity when there are identically named
7983 functions in different source files.
7984
7985 @item @var{label}
7986 Specifies the line at which the label named @var{label} appears
7987 in the function corresponding to the currently selected stack frame.
7988 If there is no current selected stack frame (for instance, if the inferior
7989 is not running), then @value{GDBN} will not search for a label.
7990
7991 @cindex breakpoint at static probe point
7992 @item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name}
7993 The @sc{gnu}/Linux tool @code{SystemTap} provides a way for
7994 applications to embed static probes. @xref{Static Probe Points}, for more
7995 information on finding and using static probes. This form of linespec
7996 specifies the location of such a static probe.
7997
7998 If @var{objfile} is given, only probes coming from that shared library
7999 or executable matching @var{objfile} as a regular expression are considered.
8000 If @var{provider} is given, then only probes from that provider are considered.
8001 If several probes match the spec, @value{GDBN} will insert a breakpoint at
8002 each one of those probes.
8003 @end table
8004
8005 @node Explicit Locations
8006 @subsection Explicit Locations
8007 @cindex explicit locations
8008
8009 @dfn{Explicit locations} allow the user to directly specify the source
8010 location's parameters using option-value pairs.
8011
8012 Explicit locations are useful when several functions, labels, or
8013 file names have the same name (base name for files) in the program's
8014 sources. In these cases, explicit locations point to the source
8015 line you meant more accurately and unambiguously. Also, using
8016 explicit locations might be faster in large programs.
8017
8018 For example, the linespec @samp{foo:bar} may refer to a function @code{bar}
8019 defined in the file named @file{foo} or the label @code{bar} in a function
8020 named @code{foo}. @value{GDBN} must search either the file system or
8021 the symbol table to know.
8022
8023 The list of valid explicit location options is summarized in the
8024 following table:
8025
8026 @table @code
8027 @item -source @var{filename}
8028 The value specifies the source file name. To differentiate between
8029 files with the same base name, prepend as many directories as is necessary
8030 to uniquely identify the desired file, e.g., @file{foo/bar/baz.c}. Otherwise
8031 @value{GDBN} will use the first file it finds with the given base
8032 name. This option requires the use of either @code{-function} or @code{-line}.
8033
8034 @item -function @var{function}
8035 The value specifies the name of a function. Operations
8036 on function locations unmodified by other options (such as @code{-label}
8037 or @code{-line}) refer to the line that begins the body of the function.
8038 In C, for example, this is the line with the open brace.
8039
8040 By default, in C@t{++} and Ada, @var{function} is interpreted as
8041 specifying all functions named @var{function} in all scopes. For
8042 C@t{++}, this means in all namespaces and classes. For Ada, this
8043 means in all packages.
8044
8045 For example, assuming a program with C@t{++} symbols named
8046 @code{A::B::func} and @code{B::func}, both commands @w{@kbd{break
8047 -function func}} and @w{@kbd{break -function B::func}} set a
8048 breakpoint on both symbols.
8049
8050 You can use the @kbd{-qualified} flag to override this (see below).
8051
8052 @item -qualified
8053
8054 This flag makes @value{GDBN} interpret a function name specified with
8055 @kbd{-function} as a complete fully-qualified name.
8056
8057 For example, assuming a C@t{++} program with symbols named
8058 @code{A::B::func} and @code{B::func}, the @w{@kbd{break -qualified
8059 -function B::func}} command sets a breakpoint on @code{B::func}, only.
8060
8061 (Note: the @kbd{-qualified} option can precede a linespec as well
8062 (@pxref{Linespec Locations}), so the particular example above could be
8063 simplified as @w{@kbd{break -qualified B::func}}.)
8064
8065 @item -label @var{label}
8066 The value specifies the name of a label. When the function
8067 name is not specified, the label is searched in the function of the currently
8068 selected stack frame.
8069
8070 @item -line @var{number}
8071 The value specifies a line offset for the location. The offset may either
8072 be absolute (@code{-line 3}) or relative (@code{-line +3}), depending on
8073 the command. When specified without any other options, the line offset is
8074 relative to the current line.
8075 @end table
8076
8077 Explicit location options may be abbreviated by omitting any non-unique
8078 trailing characters from the option name, e.g., @w{@kbd{break -s main.c -li 3}}.
8079
8080 @node Address Locations
8081 @subsection Address Locations
8082 @cindex address locations
8083
8084 @dfn{Address locations} indicate a specific program address. They have
8085 the generalized form *@var{address}.
8086
8087 For line-oriented commands, such as @code{list} and @code{edit}, this
8088 specifies a source line that contains @var{address}. For @code{break} and
8089 other breakpoint-oriented commands, this can be used to set breakpoints in
8090 parts of your program which do not have debugging information or
8091 source files.
8092
8093 Here @var{address} may be any expression valid in the current working
8094 language (@pxref{Languages, working language}) that specifies a code
8095 address. In addition, as a convenience, @value{GDBN} extends the
8096 semantics of expressions used in locations to cover several situations
8097 that frequently occur during debugging. Here are the various forms
8098 of @var{address}:
8099
8100 @table @code
8101 @item @var{expression}
8102 Any expression valid in the current working language.
8103
8104 @item @var{funcaddr}
8105 An address of a function or procedure derived from its name. In C,
8106 C@t{++}, Objective-C, Fortran, minimal, and assembly, this is
8107 simply the function's name @var{function} (and actually a special case
8108 of a valid expression). In Pascal and Modula-2, this is
8109 @code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
8110 (although the Pascal form also works).
8111
8112 This form specifies the address of the function's first instruction,
8113 before the stack frame and arguments have been set up.
8114
8115 @item '@var{filename}':@var{funcaddr}
8116 Like @var{funcaddr} above, but also specifies the name of the source
8117 file explicitly. This is useful if the name of the function does not
8118 specify the function unambiguously, e.g., if there are several
8119 functions with identical names in different source files.
8120 @end table
8121
8122 @node Edit
8123 @section Editing Source Files
8124 @cindex editing source files
8125
8126 @kindex edit
8127 @kindex e @r{(@code{edit})}
8128 To edit the lines in a source file, use the @code{edit} command.
8129 The editing program of your choice
8130 is invoked with the current line set to
8131 the active line in the program.
8132 Alternatively, there are several ways to specify what part of the file you
8133 want to print if you want to see other parts of the program:
8134
8135 @table @code
8136 @item edit @var{location}
8137 Edit the source file specified by @code{location}. Editing starts at
8138 that @var{location}, e.g., at the specified source line of the
8139 specified file. @xref{Specify Location}, for all the possible forms
8140 of the @var{location} argument; here are the forms of the @code{edit}
8141 command most commonly used:
8142
8143 @table @code
8144 @item edit @var{number}
8145 Edit the current source file with @var{number} as the active line number.
8146
8147 @item edit @var{function}
8148 Edit the file containing @var{function} at the beginning of its definition.
8149 @end table
8150
8151 @end table
8152
8153 @subsection Choosing your Editor
8154 You can customize @value{GDBN} to use any editor you want
8155 @footnote{
8156 The only restriction is that your editor (say @code{ex}), recognizes the
8157 following command-line syntax:
8158 @smallexample
8159 ex +@var{number} file
8160 @end smallexample
8161 The optional numeric value +@var{number} specifies the number of the line in
8162 the file where to start editing.}.
8163 By default, it is @file{@value{EDITOR}}, but you can change this
8164 by setting the environment variable @code{EDITOR} before using
8165 @value{GDBN}. For example, to configure @value{GDBN} to use the
8166 @code{vi} editor, you could use these commands with the @code{sh} shell:
8167 @smallexample
8168 EDITOR=/usr/bin/vi
8169 export EDITOR
8170 gdb @dots{}
8171 @end smallexample
8172 or in the @code{csh} shell,
8173 @smallexample
8174 setenv EDITOR /usr/bin/vi
8175 gdb @dots{}
8176 @end smallexample
8177
8178 @node Search
8179 @section Searching Source Files
8180 @cindex searching source files
8181
8182 There are two commands for searching through the current source file for a
8183 regular expression.
8184
8185 @table @code
8186 @kindex search
8187 @kindex forward-search
8188 @kindex fo @r{(@code{forward-search})}
8189 @item forward-search @var{regexp}
8190 @itemx search @var{regexp}
8191 The command @samp{forward-search @var{regexp}} checks each line,
8192 starting with the one following the last line listed, for a match for
8193 @var{regexp}. It lists the line that is found. You can use the
8194 synonym @samp{search @var{regexp}} or abbreviate the command name as
8195 @code{fo}.
8196
8197 @kindex reverse-search
8198 @item reverse-search @var{regexp}
8199 The command @samp{reverse-search @var{regexp}} checks each line, starting
8200 with the one before the last line listed and going backward, for a match
8201 for @var{regexp}. It lists the line that is found. You can abbreviate
8202 this command as @code{rev}.
8203 @end table
8204
8205 @node Source Path
8206 @section Specifying Source Directories
8207
8208 @cindex source path
8209 @cindex directories for source files
8210 Executable programs sometimes do not record the directories of the source
8211 files from which they were compiled, just the names. Even when they do,
8212 the directories could be moved between the compilation and your debugging
8213 session. @value{GDBN} has a list of directories to search for source files;
8214 this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
8215 it tries all the directories in the list, in the order they are present
8216 in the list, until it finds a file with the desired name.
8217
8218 For example, suppose an executable references the file
8219 @file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
8220 @file{/mnt/cross}. The file is first looked up literally; if this
8221 fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
8222 fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
8223 message is printed. @value{GDBN} does not look up the parts of the
8224 source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
8225 Likewise, the subdirectories of the source path are not searched: if
8226 the source path is @file{/mnt/cross}, and the binary refers to
8227 @file{foo.c}, @value{GDBN} would not find it under
8228 @file{/mnt/cross/usr/src/foo-1.0/lib}.
8229
8230 Plain file names, relative file names with leading directories, file
8231 names containing dots, etc.@: are all treated as described above; for
8232 instance, if the source path is @file{/mnt/cross}, and the source file
8233 is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
8234 @file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
8235 that---@file{/mnt/cross/foo.c}.
8236
8237 Note that the executable search path is @emph{not} used to locate the
8238 source files.
8239
8240 Whenever you reset or rearrange the source path, @value{GDBN} clears out
8241 any information it has cached about where source files are found and where
8242 each line is in the file.
8243
8244 @kindex directory
8245 @kindex dir
8246 When you start @value{GDBN}, its source path includes only @samp{cdir}
8247 and @samp{cwd}, in that order.
8248 To add other directories, use the @code{directory} command.
8249
8250 The search path is used to find both program source files and @value{GDBN}
8251 script files (read using the @samp{-command} option and @samp{source} command).
8252
8253 In addition to the source path, @value{GDBN} provides a set of commands
8254 that manage a list of source path substitution rules. A @dfn{substitution
8255 rule} specifies how to rewrite source directories stored in the program's
8256 debug information in case the sources were moved to a different
8257 directory between compilation and debugging. A rule is made of
8258 two strings, the first specifying what needs to be rewritten in
8259 the path, and the second specifying how it should be rewritten.
8260 In @ref{set substitute-path}, we name these two parts @var{from} and
8261 @var{to} respectively. @value{GDBN} does a simple string replacement
8262 of @var{from} with @var{to} at the start of the directory part of the
8263 source file name, and uses that result instead of the original file
8264 name to look up the sources.
8265
8266 Using the previous example, suppose the @file{foo-1.0} tree has been
8267 moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
8268 @value{GDBN} to replace @file{/usr/src} in all source path names with
8269 @file{/mnt/cross}. The first lookup will then be
8270 @file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
8271 of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
8272 substitution rule, use the @code{set substitute-path} command
8273 (@pxref{set substitute-path}).
8274
8275 To avoid unexpected substitution results, a rule is applied only if the
8276 @var{from} part of the directory name ends at a directory separator.
8277 For instance, a rule substituting @file{/usr/source} into
8278 @file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
8279 not to @file{/usr/sourceware/foo-2.0}. And because the substitution
8280 is applied only at the beginning of the directory name, this rule will
8281 not be applied to @file{/root/usr/source/baz.c} either.
8282
8283 In many cases, you can achieve the same result using the @code{directory}
8284 command. However, @code{set substitute-path} can be more efficient in
8285 the case where the sources are organized in a complex tree with multiple
8286 subdirectories. With the @code{directory} command, you need to add each
8287 subdirectory of your project. If you moved the entire tree while
8288 preserving its internal organization, then @code{set substitute-path}
8289 allows you to direct the debugger to all the sources with one single
8290 command.
8291
8292 @code{set substitute-path} is also more than just a shortcut command.
8293 The source path is only used if the file at the original location no
8294 longer exists. On the other hand, @code{set substitute-path} modifies
8295 the debugger behavior to look at the rewritten location instead. So, if
8296 for any reason a source file that is not relevant to your executable is
8297 located at the original location, a substitution rule is the only
8298 method available to point @value{GDBN} at the new location.
8299
8300 @cindex @samp{--with-relocated-sources}
8301 @cindex default source path substitution
8302 You can configure a default source path substitution rule by
8303 configuring @value{GDBN} with the
8304 @samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
8305 should be the name of a directory under @value{GDBN}'s configured
8306 prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
8307 directory names in debug information under @var{dir} will be adjusted
8308 automatically if the installed @value{GDBN} is moved to a new
8309 location. This is useful if @value{GDBN}, libraries or executables
8310 with debug information and corresponding source code are being moved
8311 together.
8312
8313 @table @code
8314 @item directory @var{dirname} @dots{}
8315 @item dir @var{dirname} @dots{}
8316 Add directory @var{dirname} to the front of the source path. Several
8317 directory names may be given to this command, separated by @samp{:}
8318 (@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
8319 part of absolute file names) or
8320 whitespace. You may specify a directory that is already in the source
8321 path; this moves it forward, so @value{GDBN} searches it sooner.
8322
8323 @kindex cdir
8324 @kindex cwd
8325 @vindex $cdir@r{, convenience variable}
8326 @vindex $cwd@r{, convenience variable}
8327 @cindex compilation directory
8328 @cindex current directory
8329 @cindex working directory
8330 @cindex directory, current
8331 @cindex directory, compilation
8332 You can use the string @samp{$cdir} to refer to the compilation
8333 directory (if one is recorded), and @samp{$cwd} to refer to the current
8334 working directory. @samp{$cwd} is not the same as @samp{.}---the former
8335 tracks the current working directory as it changes during your @value{GDBN}
8336 session, while the latter is immediately expanded to the current
8337 directory at the time you add an entry to the source path.
8338
8339 @item directory
8340 Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
8341
8342 @c RET-repeat for @code{directory} is explicitly disabled, but since
8343 @c repeating it would be a no-op we do not say that. (thanks to RMS)
8344
8345 @item set directories @var{path-list}
8346 @kindex set directories
8347 Set the source path to @var{path-list}.
8348 @samp{$cdir:$cwd} are added if missing.
8349
8350 @item show directories
8351 @kindex show directories
8352 Print the source path: show which directories it contains.
8353
8354 @anchor{set substitute-path}
8355 @item set substitute-path @var{from} @var{to}
8356 @kindex set substitute-path
8357 Define a source path substitution rule, and add it at the end of the
8358 current list of existing substitution rules. If a rule with the same
8359 @var{from} was already defined, then the old rule is also deleted.
8360
8361 For example, if the file @file{/foo/bar/baz.c} was moved to
8362 @file{/mnt/cross/baz.c}, then the command
8363
8364 @smallexample
8365 (@value{GDBP}) set substitute-path /foo/bar /mnt/cross
8366 @end smallexample
8367
8368 @noindent
8369 will tell @value{GDBN} to replace @samp{/foo/bar} with
8370 @samp{/mnt/cross}, which will allow @value{GDBN} to find the file
8371 @file{baz.c} even though it was moved.
8372
8373 In the case when more than one substitution rule have been defined,
8374 the rules are evaluated one by one in the order where they have been
8375 defined. The first one matching, if any, is selected to perform
8376 the substitution.
8377
8378 For instance, if we had entered the following commands:
8379
8380 @smallexample
8381 (@value{GDBP}) set substitute-path /usr/src/include /mnt/include
8382 (@value{GDBP}) set substitute-path /usr/src /mnt/src
8383 @end smallexample
8384
8385 @noindent
8386 @value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
8387 @file{/mnt/include/defs.h} by using the first rule. However, it would
8388 use the second rule to rewrite @file{/usr/src/lib/foo.c} into
8389 @file{/mnt/src/lib/foo.c}.
8390
8391
8392 @item unset substitute-path [path]
8393 @kindex unset substitute-path
8394 If a path is specified, search the current list of substitution rules
8395 for a rule that would rewrite that path. Delete that rule if found.
8396 A warning is emitted by the debugger if no rule could be found.
8397
8398 If no path is specified, then all substitution rules are deleted.
8399
8400 @item show substitute-path [path]
8401 @kindex show substitute-path
8402 If a path is specified, then print the source path substitution rule
8403 which would rewrite that path, if any.
8404
8405 If no path is specified, then print all existing source path substitution
8406 rules.
8407
8408 @end table
8409
8410 If your source path is cluttered with directories that are no longer of
8411 interest, @value{GDBN} may sometimes cause confusion by finding the wrong
8412 versions of source. You can correct the situation as follows:
8413
8414 @enumerate
8415 @item
8416 Use @code{directory} with no argument to reset the source path to its default value.
8417
8418 @item
8419 Use @code{directory} with suitable arguments to reinstall the
8420 directories you want in the source path. You can add all the
8421 directories in one command.
8422 @end enumerate
8423
8424 @node Machine Code
8425 @section Source and Machine Code
8426 @cindex source line and its code address
8427
8428 You can use the command @code{info line} to map source lines to program
8429 addresses (and vice versa), and the command @code{disassemble} to display
8430 a range of addresses as machine instructions. You can use the command
8431 @code{set disassemble-next-line} to set whether to disassemble next
8432 source line when execution stops. When run under @sc{gnu} Emacs
8433 mode, the @code{info line} command causes the arrow to point to the
8434 line specified. Also, @code{info line} prints addresses in symbolic form as
8435 well as hex.
8436
8437 @table @code
8438 @kindex info line
8439 @item info line
8440 @itemx info line @var{location}
8441 Print the starting and ending addresses of the compiled code for
8442 source line @var{location}. You can specify source lines in any of
8443 the ways documented in @ref{Specify Location}. With no @var{location}
8444 information about the current source line is printed.
8445 @end table
8446
8447 For example, we can use @code{info line} to discover the location of
8448 the object code for the first line of function
8449 @code{m4_changequote}:
8450
8451 @smallexample
8452 (@value{GDBP}) info line m4_changequote
8453 Line 895 of "builtin.c" starts at pc 0x634c <m4_changequote> and \
8454 ends at 0x6350 <m4_changequote+4>.
8455 @end smallexample
8456
8457 @noindent
8458 @cindex code address and its source line
8459 We can also inquire (using @code{*@var{addr}} as the form for
8460 @var{location}) what source line covers a particular address:
8461 @smallexample
8462 (@value{GDBP}) info line *0x63ff
8463 Line 926 of "builtin.c" starts at pc 0x63e4 <m4_changequote+152> and \
8464 ends at 0x6404 <m4_changequote+184>.
8465 @end smallexample
8466
8467 @cindex @code{$_} and @code{info line}
8468 @cindex @code{x} command, default address
8469 @kindex x@r{(examine), and} info line
8470 After @code{info line}, the default address for the @code{x} command
8471 is changed to the starting address of the line, so that @samp{x/i} is
8472 sufficient to begin examining the machine code (@pxref{Memory,
8473 ,Examining Memory}). Also, this address is saved as the value of the
8474 convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
8475 Variables}).
8476
8477 @cindex info line, repeated calls
8478 After @code{info line}, using @code{info line} again without
8479 specifying a location will display information about the next source
8480 line.
8481
8482 @table @code
8483 @kindex disassemble
8484 @cindex assembly instructions
8485 @cindex instructions, assembly
8486 @cindex machine instructions
8487 @cindex listing machine instructions
8488 @item disassemble
8489 @itemx disassemble /m
8490 @itemx disassemble /s
8491 @itemx disassemble /r
8492 This specialized command dumps a range of memory as machine
8493 instructions. It can also print mixed source+disassembly by specifying
8494 the @code{/m} or @code{/s} modifier and print the raw instructions in hex
8495 as well as in symbolic form by specifying the @code{/r} modifier.
8496 The default memory range is the function surrounding the
8497 program counter of the selected frame. A single argument to this
8498 command is a program counter value; @value{GDBN} dumps the function
8499 surrounding this value. When two arguments are given, they should
8500 be separated by a comma, possibly surrounded by whitespace. The
8501 arguments specify a range of addresses to dump, in one of two forms:
8502
8503 @table @code
8504 @item @var{start},@var{end}
8505 the addresses from @var{start} (inclusive) to @var{end} (exclusive)
8506 @item @var{start},+@var{length}
8507 the addresses from @var{start} (inclusive) to
8508 @code{@var{start}+@var{length}} (exclusive).
8509 @end table
8510
8511 @noindent
8512 When 2 arguments are specified, the name of the function is also
8513 printed (since there could be several functions in the given range).
8514
8515 The argument(s) can be any expression yielding a numeric value, such as
8516 @samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
8517
8518 If the range of memory being disassembled contains current program counter,
8519 the instruction at that location is shown with a @code{=>} marker.
8520 @end table
8521
8522 The following example shows the disassembly of a range of addresses of
8523 HP PA-RISC 2.0 code:
8524
8525 @smallexample
8526 (@value{GDBP}) disas 0x32c4, 0x32e4
8527 Dump of assembler code from 0x32c4 to 0x32e4:
8528 0x32c4 <main+204>: addil 0,dp
8529 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
8530 0x32cc <main+212>: ldil 0x3000,r31
8531 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
8532 0x32d4 <main+220>: ldo 0(r31),rp
8533 0x32d8 <main+224>: addil -0x800,dp
8534 0x32dc <main+228>: ldo 0x588(r1),r26
8535 0x32e0 <main+232>: ldil 0x3000,r31
8536 End of assembler dump.
8537 @end smallexample
8538
8539 Here is an example showing mixed source+assembly for Intel x86
8540 with @code{/m} or @code{/s}, when the program is stopped just after
8541 function prologue in a non-optimized function with no inline code.
8542
8543 @smallexample
8544 (@value{GDBP}) disas /m main
8545 Dump of assembler code for function main:
8546 5 @{
8547 0x08048330 <+0>: push %ebp
8548 0x08048331 <+1>: mov %esp,%ebp
8549 0x08048333 <+3>: sub $0x8,%esp
8550 0x08048336 <+6>: and $0xfffffff0,%esp
8551 0x08048339 <+9>: sub $0x10,%esp
8552
8553 6 printf ("Hello.\n");
8554 => 0x0804833c <+12>: movl $0x8048440,(%esp)
8555 0x08048343 <+19>: call 0x8048284 <puts@@plt>
8556
8557 7 return 0;
8558 8 @}
8559 0x08048348 <+24>: mov $0x0,%eax
8560 0x0804834d <+29>: leave
8561 0x0804834e <+30>: ret
8562
8563 End of assembler dump.
8564 @end smallexample
8565
8566 The @code{/m} option is deprecated as its output is not useful when
8567 there is either inlined code or re-ordered code.
8568 The @code{/s} option is the preferred choice.
8569 Here is an example for AMD x86-64 showing the difference between
8570 @code{/m} output and @code{/s} output.
8571 This example has one inline function defined in a header file,
8572 and the code is compiled with @samp{-O2} optimization.
8573 Note how the @code{/m} output is missing the disassembly of
8574 several instructions that are present in the @code{/s} output.
8575
8576 @file{foo.h}:
8577
8578 @smallexample
8579 int
8580 foo (int a)
8581 @{
8582 if (a < 0)
8583 return a * 2;
8584 if (a == 0)
8585 return 1;
8586 return a + 10;
8587 @}
8588 @end smallexample
8589
8590 @file{foo.c}:
8591
8592 @smallexample
8593 #include "foo.h"
8594 volatile int x, y;
8595 int
8596 main ()
8597 @{
8598 x = foo (y);
8599 return 0;
8600 @}
8601 @end smallexample
8602
8603 @smallexample
8604 (@value{GDBP}) disas /m main
8605 Dump of assembler code for function main:
8606 5 @{
8607
8608 6 x = foo (y);
8609 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y>
8610 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x>
8611
8612 7 return 0;
8613 8 @}
8614 0x000000000040041d <+29>: xor %eax,%eax
8615 0x000000000040041f <+31>: retq
8616 0x0000000000400420 <+32>: add %eax,%eax
8617 0x0000000000400422 <+34>: jmp 0x400417 <main+23>
8618
8619 End of assembler dump.
8620 (@value{GDBP}) disas /s main
8621 Dump of assembler code for function main:
8622 foo.c:
8623 5 @{
8624 6 x = foo (y);
8625 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y>
8626
8627 foo.h:
8628 4 if (a < 0)
8629 0x0000000000400406 <+6>: test %eax,%eax
8630 0x0000000000400408 <+8>: js 0x400420 <main+32>
8631
8632 6 if (a == 0)
8633 7 return 1;
8634 8 return a + 10;
8635 0x000000000040040a <+10>: lea 0xa(%rax),%edx
8636 0x000000000040040d <+13>: test %eax,%eax
8637 0x000000000040040f <+15>: mov $0x1,%eax
8638 0x0000000000400414 <+20>: cmovne %edx,%eax
8639
8640 foo.c:
8641 6 x = foo (y);
8642 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x>
8643
8644 7 return 0;
8645 8 @}
8646 0x000000000040041d <+29>: xor %eax,%eax
8647 0x000000000040041f <+31>: retq
8648
8649 foo.h:
8650 5 return a * 2;
8651 0x0000000000400420 <+32>: add %eax,%eax
8652 0x0000000000400422 <+34>: jmp 0x400417 <main+23>
8653 End of assembler dump.
8654 @end smallexample
8655
8656 Here is another example showing raw instructions in hex for AMD x86-64,
8657
8658 @smallexample
8659 (gdb) disas /r 0x400281,+10
8660 Dump of assembler code from 0x400281 to 0x40028b:
8661 0x0000000000400281: 38 36 cmp %dh,(%rsi)
8662 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax
8663 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx)
8664 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al
8665 End of assembler dump.
8666 @end smallexample
8667
8668 Addresses cannot be specified as a location (@pxref{Specify Location}).
8669 So, for example, if you want to disassemble function @code{bar}
8670 in file @file{foo.c}, you must type @samp{disassemble 'foo.c'::bar}
8671 and not @samp{disassemble foo.c:bar}.
8672
8673 Some architectures have more than one commonly-used set of instruction
8674 mnemonics or other syntax.
8675
8676 For programs that were dynamically linked and use shared libraries,
8677 instructions that call functions or branch to locations in the shared
8678 libraries might show a seemingly bogus location---it's actually a
8679 location of the relocation table. On some architectures, @value{GDBN}
8680 might be able to resolve these to actual function names.
8681
8682 @table @code
8683 @kindex set disassembler-options
8684 @cindex disassembler options
8685 @item set disassembler-options @var{option1}[,@var{option2}@dots{}]
8686 This command controls the passing of target specific information to
8687 the disassembler. For a list of valid options, please refer to the
8688 @code{-M}/@code{--disassembler-options} section of the @samp{objdump}
8689 manual and/or the output of @kbd{objdump --help}
8690 (@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}).
8691 The default value is the empty string.
8692
8693 If it is necessary to specify more than one disassembler option, then
8694 multiple options can be placed together into a comma separated list.
8695 Currently this command is only supported on targets ARM, PowerPC
8696 and S/390.
8697
8698 @kindex show disassembler-options
8699 @item show disassembler-options
8700 Show the current setting of the disassembler options.
8701 @end table
8702
8703 @table @code
8704 @kindex set disassembly-flavor
8705 @cindex Intel disassembly flavor
8706 @cindex AT&T disassembly flavor
8707 @item set disassembly-flavor @var{instruction-set}
8708 Select the instruction set to use when disassembling the
8709 program via the @code{disassemble} or @code{x/i} commands.
8710
8711 Currently this command is only defined for the Intel x86 family. You
8712 can set @var{instruction-set} to either @code{intel} or @code{att}.
8713 The default is @code{att}, the AT&T flavor used by default by Unix
8714 assemblers for x86-based targets.
8715
8716 @kindex show disassembly-flavor
8717 @item show disassembly-flavor
8718 Show the current setting of the disassembly flavor.
8719 @end table
8720
8721 @table @code
8722 @kindex set disassemble-next-line
8723 @kindex show disassemble-next-line
8724 @item set disassemble-next-line
8725 @itemx show disassemble-next-line
8726 Control whether or not @value{GDBN} will disassemble the next source
8727 line or instruction when execution stops. If ON, @value{GDBN} will
8728 display disassembly of the next source line when execution of the
8729 program being debugged stops. This is @emph{in addition} to
8730 displaying the source line itself, which @value{GDBN} always does if
8731 possible. If the next source line cannot be displayed for some reason
8732 (e.g., if @value{GDBN} cannot find the source file, or there's no line
8733 info in the debug info), @value{GDBN} will display disassembly of the
8734 next @emph{instruction} instead of showing the next source line. If
8735 AUTO, @value{GDBN} will display disassembly of next instruction only
8736 if the source line cannot be displayed. This setting causes
8737 @value{GDBN} to display some feedback when you step through a function
8738 with no line info or whose source file is unavailable. The default is
8739 OFF, which means never display the disassembly of the next line or
8740 instruction.
8741 @end table
8742
8743
8744 @node Data
8745 @chapter Examining Data
8746
8747 @cindex printing data
8748 @cindex examining data
8749 @kindex print
8750 @kindex inspect
8751 The usual way to examine data in your program is with the @code{print}
8752 command (abbreviated @code{p}), or its synonym @code{inspect}. It
8753 evaluates and prints the value of an expression of the language your
8754 program is written in (@pxref{Languages, ,Using @value{GDBN} with
8755 Different Languages}). It may also print the expression using a
8756 Python-based pretty-printer (@pxref{Pretty Printing}).
8757
8758 @table @code
8759 @item print @var{expr}
8760 @itemx print /@var{f} @var{expr}
8761 @var{expr} is an expression (in the source language). By default the
8762 value of @var{expr} is printed in a format appropriate to its data type;
8763 you can choose a different format by specifying @samp{/@var{f}}, where
8764 @var{f} is a letter specifying the format; see @ref{Output Formats,,Output
8765 Formats}.
8766
8767 @item print
8768 @itemx print /@var{f}
8769 @cindex reprint the last value
8770 If you omit @var{expr}, @value{GDBN} displays the last value again (from the
8771 @dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
8772 conveniently inspect the same value in an alternative format.
8773 @end table
8774
8775 A more low-level way of examining data is with the @code{x} command.
8776 It examines data in memory at a specified address and prints it in a
8777 specified format. @xref{Memory, ,Examining Memory}.
8778
8779 If you are interested in information about types, or about how the
8780 fields of a struct or a class are declared, use the @code{ptype @var{exp}}
8781 command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
8782 Table}.
8783
8784 @cindex exploring hierarchical data structures
8785 @kindex explore
8786 Another way of examining values of expressions and type information is
8787 through the Python extension command @code{explore} (available only if
8788 the @value{GDBN} build is configured with @code{--with-python}). It
8789 offers an interactive way to start at the highest level (or, the most
8790 abstract level) of the data type of an expression (or, the data type
8791 itself) and explore all the way down to leaf scalar values/fields
8792 embedded in the higher level data types.
8793
8794 @table @code
8795 @item explore @var{arg}
8796 @var{arg} is either an expression (in the source language), or a type
8797 visible in the current context of the program being debugged.
8798 @end table
8799
8800 The working of the @code{explore} command can be illustrated with an
8801 example. If a data type @code{struct ComplexStruct} is defined in your
8802 C program as
8803
8804 @smallexample
8805 struct SimpleStruct
8806 @{
8807 int i;
8808 double d;
8809 @};
8810
8811 struct ComplexStruct
8812 @{
8813 struct SimpleStruct *ss_p;
8814 int arr[10];
8815 @};
8816 @end smallexample
8817
8818 @noindent
8819 followed by variable declarations as
8820
8821 @smallexample
8822 struct SimpleStruct ss = @{ 10, 1.11 @};
8823 struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @};
8824 @end smallexample
8825
8826 @noindent
8827 then, the value of the variable @code{cs} can be explored using the
8828 @code{explore} command as follows.
8829
8830 @smallexample
8831 (gdb) explore cs
8832 The value of `cs' is a struct/class of type `struct ComplexStruct' with
8833 the following fields:
8834
8835 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'>
8836 arr = <Enter 1 to explore this field of type `int [10]'>
8837
8838 Enter the field number of choice:
8839 @end smallexample
8840
8841 @noindent
8842 Since the fields of @code{cs} are not scalar values, you are being
8843 prompted to chose the field you want to explore. Let's say you choose
8844 the field @code{ss_p} by entering @code{0}. Then, since this field is a
8845 pointer, you will be asked if it is pointing to a single value. From
8846 the declaration of @code{cs} above, it is indeed pointing to a single
8847 value, hence you enter @code{y}. If you enter @code{n}, then you will
8848 be asked if it were pointing to an array of values, in which case this
8849 field will be explored as if it were an array.
8850
8851 @smallexample
8852 `cs.ss_p' is a pointer to a value of type `struct SimpleStruct'
8853 Continue exploring it as a pointer to a single value [y/n]: y
8854 The value of `*(cs.ss_p)' is a struct/class of type `struct
8855 SimpleStruct' with the following fields:
8856
8857 i = 10 .. (Value of type `int')
8858 d = 1.1100000000000001 .. (Value of type `double')
8859
8860 Press enter to return to parent value:
8861 @end smallexample
8862
8863 @noindent
8864 If the field @code{arr} of @code{cs} was chosen for exploration by
8865 entering @code{1} earlier, then since it is as array, you will be
8866 prompted to enter the index of the element in the array that you want
8867 to explore.
8868
8869 @smallexample
8870 `cs.arr' is an array of `int'.
8871 Enter the index of the element you want to explore in `cs.arr': 5
8872
8873 `(cs.arr)[5]' is a scalar value of type `int'.
8874
8875 (cs.arr)[5] = 4
8876
8877 Press enter to return to parent value:
8878 @end smallexample
8879
8880 In general, at any stage of exploration, you can go deeper towards the
8881 leaf values by responding to the prompts appropriately, or hit the
8882 return key to return to the enclosing data structure (the @i{higher}
8883 level data structure).
8884
8885 Similar to exploring values, you can use the @code{explore} command to
8886 explore types. Instead of specifying a value (which is typically a
8887 variable name or an expression valid in the current context of the
8888 program being debugged), you specify a type name. If you consider the
8889 same example as above, your can explore the type
8890 @code{struct ComplexStruct} by passing the argument
8891 @code{struct ComplexStruct} to the @code{explore} command.
8892
8893 @smallexample
8894 (gdb) explore struct ComplexStruct
8895 @end smallexample
8896
8897 @noindent
8898 By responding to the prompts appropriately in the subsequent interactive
8899 session, you can explore the type @code{struct ComplexStruct} in a
8900 manner similar to how the value @code{cs} was explored in the above
8901 example.
8902
8903 The @code{explore} command also has two sub-commands,
8904 @code{explore value} and @code{explore type}. The former sub-command is
8905 a way to explicitly specify that value exploration of the argument is
8906 being invoked, while the latter is a way to explicitly specify that type
8907 exploration of the argument is being invoked.
8908
8909 @table @code
8910 @item explore value @var{expr}
8911 @cindex explore value
8912 This sub-command of @code{explore} explores the value of the
8913 expression @var{expr} (if @var{expr} is an expression valid in the
8914 current context of the program being debugged). The behavior of this
8915 command is identical to that of the behavior of the @code{explore}
8916 command being passed the argument @var{expr}.
8917
8918 @item explore type @var{arg}
8919 @cindex explore type
8920 This sub-command of @code{explore} explores the type of @var{arg} (if
8921 @var{arg} is a type visible in the current context of program being
8922 debugged), or the type of the value/expression @var{arg} (if @var{arg}
8923 is an expression valid in the current context of the program being
8924 debugged). If @var{arg} is a type, then the behavior of this command is
8925 identical to that of the @code{explore} command being passed the
8926 argument @var{arg}. If @var{arg} is an expression, then the behavior of
8927 this command will be identical to that of the @code{explore} command
8928 being passed the type of @var{arg} as the argument.
8929 @end table
8930
8931 @menu
8932 * Expressions:: Expressions
8933 * Ambiguous Expressions:: Ambiguous Expressions
8934 * Variables:: Program variables
8935 * Arrays:: Artificial arrays
8936 * Output Formats:: Output formats
8937 * Memory:: Examining memory
8938 * Auto Display:: Automatic display
8939 * Print Settings:: Print settings
8940 * Pretty Printing:: Python pretty printing
8941 * Value History:: Value history
8942 * Convenience Vars:: Convenience variables
8943 * Convenience Funs:: Convenience functions
8944 * Registers:: Registers
8945 * Floating Point Hardware:: Floating point hardware
8946 * Vector Unit:: Vector Unit
8947 * OS Information:: Auxiliary data provided by operating system
8948 * Memory Region Attributes:: Memory region attributes
8949 * Dump/Restore Files:: Copy between memory and a file
8950 * Core File Generation:: Cause a program dump its core
8951 * Character Sets:: Debugging programs that use a different
8952 character set than GDB does
8953 * Caching Target Data:: Data caching for targets
8954 * Searching Memory:: Searching memory for a sequence of bytes
8955 * Value Sizes:: Managing memory allocated for values
8956 @end menu
8957
8958 @node Expressions
8959 @section Expressions
8960
8961 @cindex expressions
8962 @code{print} and many other @value{GDBN} commands accept an expression and
8963 compute its value. Any kind of constant, variable or operator defined
8964 by the programming language you are using is valid in an expression in
8965 @value{GDBN}. This includes conditional expressions, function calls,
8966 casts, and string constants. It also includes preprocessor macros, if
8967 you compiled your program to include this information; see
8968 @ref{Compilation}.
8969
8970 @cindex arrays in expressions
8971 @value{GDBN} supports array constants in expressions input by
8972 the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
8973 you can use the command @code{print @{1, 2, 3@}} to create an array
8974 of three integers. If you pass an array to a function or assign it
8975 to a program variable, @value{GDBN} copies the array to memory that
8976 is @code{malloc}ed in the target program.
8977
8978 Because C is so widespread, most of the expressions shown in examples in
8979 this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
8980 Languages}, for information on how to use expressions in other
8981 languages.
8982
8983 In this section, we discuss operators that you can use in @value{GDBN}
8984 expressions regardless of your programming language.
8985
8986 @cindex casts, in expressions
8987 Casts are supported in all languages, not just in C, because it is so
8988 useful to cast a number into a pointer in order to examine a structure
8989 at that address in memory.
8990 @c FIXME: casts supported---Mod2 true?
8991
8992 @value{GDBN} supports these operators, in addition to those common
8993 to programming languages:
8994
8995 @table @code
8996 @item @@
8997 @samp{@@} is a binary operator for treating parts of memory as arrays.
8998 @xref{Arrays, ,Artificial Arrays}, for more information.
8999
9000 @item ::
9001 @samp{::} allows you to specify a variable in terms of the file or
9002 function where it is defined. @xref{Variables, ,Program Variables}.
9003
9004 @cindex @{@var{type}@}
9005 @cindex type casting memory
9006 @cindex memory, viewing as typed object
9007 @cindex casts, to view memory
9008 @item @{@var{type}@} @var{addr}
9009 Refers to an object of type @var{type} stored at address @var{addr} in
9010 memory. The address @var{addr} may be any expression whose value is
9011 an integer or pointer (but parentheses are required around binary
9012 operators, just as in a cast). This construct is allowed regardless
9013 of what kind of data is normally supposed to reside at @var{addr}.
9014 @end table
9015
9016 @node Ambiguous Expressions
9017 @section Ambiguous Expressions
9018 @cindex ambiguous expressions
9019
9020 Expressions can sometimes contain some ambiguous elements. For instance,
9021 some programming languages (notably Ada, C@t{++} and Objective-C) permit
9022 a single function name to be defined several times, for application in
9023 different contexts. This is called @dfn{overloading}. Another example
9024 involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
9025 templates and is typically instantiated several times, resulting in
9026 the same function name being defined in different contexts.
9027
9028 In some cases and depending on the language, it is possible to adjust
9029 the expression to remove the ambiguity. For instance in C@t{++}, you
9030 can specify the signature of the function you want to break on, as in
9031 @kbd{break @var{function}(@var{types})}. In Ada, using the fully
9032 qualified name of your function often makes the expression unambiguous
9033 as well.
9034
9035 When an ambiguity that needs to be resolved is detected, the debugger
9036 has the capability to display a menu of numbered choices for each
9037 possibility, and then waits for the selection with the prompt @samp{>}.
9038 The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
9039 aborts the current command. If the command in which the expression was
9040 used allows more than one choice to be selected, the next option in the
9041 menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
9042 choices.
9043
9044 For example, the following session excerpt shows an attempt to set a
9045 breakpoint at the overloaded symbol @code{String::after}.
9046 We choose three particular definitions of that function name:
9047
9048 @c FIXME! This is likely to change to show arg type lists, at least
9049 @smallexample
9050 @group
9051 (@value{GDBP}) b String::after
9052 [0] cancel
9053 [1] all
9054 [2] file:String.cc; line number:867
9055 [3] file:String.cc; line number:860
9056 [4] file:String.cc; line number:875
9057 [5] file:String.cc; line number:853
9058 [6] file:String.cc; line number:846
9059 [7] file:String.cc; line number:735
9060 > 2 4 6
9061 Breakpoint 1 at 0xb26c: file String.cc, line 867.
9062 Breakpoint 2 at 0xb344: file String.cc, line 875.
9063 Breakpoint 3 at 0xafcc: file String.cc, line 846.
9064 Multiple breakpoints were set.
9065 Use the "delete" command to delete unwanted
9066 breakpoints.
9067 (@value{GDBP})
9068 @end group
9069 @end smallexample
9070
9071 @table @code
9072 @kindex set multiple-symbols
9073 @item set multiple-symbols @var{mode}
9074 @cindex multiple-symbols menu
9075
9076 This option allows you to adjust the debugger behavior when an expression
9077 is ambiguous.
9078
9079 By default, @var{mode} is set to @code{all}. If the command with which
9080 the expression is used allows more than one choice, then @value{GDBN}
9081 automatically selects all possible choices. For instance, inserting
9082 a breakpoint on a function using an ambiguous name results in a breakpoint
9083 inserted on each possible match. However, if a unique choice must be made,
9084 then @value{GDBN} uses the menu to help you disambiguate the expression.
9085 For instance, printing the address of an overloaded function will result
9086 in the use of the menu.
9087
9088 When @var{mode} is set to @code{ask}, the debugger always uses the menu
9089 when an ambiguity is detected.
9090
9091 Finally, when @var{mode} is set to @code{cancel}, the debugger reports
9092 an error due to the ambiguity and the command is aborted.
9093
9094 @kindex show multiple-symbols
9095 @item show multiple-symbols
9096 Show the current value of the @code{multiple-symbols} setting.
9097 @end table
9098
9099 @node Variables
9100 @section Program Variables
9101
9102 The most common kind of expression to use is the name of a variable
9103 in your program.
9104
9105 Variables in expressions are understood in the selected stack frame
9106 (@pxref{Selection, ,Selecting a Frame}); they must be either:
9107
9108 @itemize @bullet
9109 @item
9110 global (or file-static)
9111 @end itemize
9112
9113 @noindent or
9114
9115 @itemize @bullet
9116 @item
9117 visible according to the scope rules of the
9118 programming language from the point of execution in that frame
9119 @end itemize
9120
9121 @noindent This means that in the function
9122
9123 @smallexample
9124 foo (a)
9125 int a;
9126 @{
9127 bar (a);
9128 @{
9129 int b = test ();
9130 bar (b);
9131 @}
9132 @}
9133 @end smallexample
9134
9135 @noindent
9136 you can examine and use the variable @code{a} whenever your program is
9137 executing within the function @code{foo}, but you can only use or
9138 examine the variable @code{b} while your program is executing inside
9139 the block where @code{b} is declared.
9140
9141 @cindex variable name conflict
9142 There is an exception: you can refer to a variable or function whose
9143 scope is a single source file even if the current execution point is not
9144 in this file. But it is possible to have more than one such variable or
9145 function with the same name (in different source files). If that
9146 happens, referring to that name has unpredictable effects. If you wish,
9147 you can specify a static variable in a particular function or file by
9148 using the colon-colon (@code{::}) notation:
9149
9150 @cindex colon-colon, context for variables/functions
9151 @ifnotinfo
9152 @c info cannot cope with a :: index entry, but why deprive hard copy readers?
9153 @cindex @code{::}, context for variables/functions
9154 @end ifnotinfo
9155 @smallexample
9156 @var{file}::@var{variable}
9157 @var{function}::@var{variable}
9158 @end smallexample
9159
9160 @noindent
9161 Here @var{file} or @var{function} is the name of the context for the
9162 static @var{variable}. In the case of file names, you can use quotes to
9163 make sure @value{GDBN} parses the file name as a single word---for example,
9164 to print a global value of @code{x} defined in @file{f2.c}:
9165
9166 @smallexample
9167 (@value{GDBP}) p 'f2.c'::x
9168 @end smallexample
9169
9170 The @code{::} notation is normally used for referring to
9171 static variables, since you typically disambiguate uses of local variables
9172 in functions by selecting the appropriate frame and using the
9173 simple name of the variable. However, you may also use this notation
9174 to refer to local variables in frames enclosing the selected frame:
9175
9176 @smallexample
9177 void
9178 foo (int a)
9179 @{
9180 if (a < 10)
9181 bar (a);
9182 else
9183 process (a); /* Stop here */
9184 @}
9185
9186 int
9187 bar (int a)
9188 @{
9189 foo (a + 5);
9190 @}
9191 @end smallexample
9192
9193 @noindent
9194 For example, if there is a breakpoint at the commented line,
9195 here is what you might see
9196 when the program stops after executing the call @code{bar(0)}:
9197
9198 @smallexample
9199 (@value{GDBP}) p a
9200 $1 = 10
9201 (@value{GDBP}) p bar::a
9202 $2 = 5
9203 (@value{GDBP}) up 2
9204 #2 0x080483d0 in foo (a=5) at foobar.c:12
9205 (@value{GDBP}) p a
9206 $3 = 5
9207 (@value{GDBP}) p bar::a
9208 $4 = 0
9209 @end smallexample
9210
9211 @cindex C@t{++} scope resolution
9212 These uses of @samp{::} are very rarely in conflict with the very
9213 similar use of the same notation in C@t{++}. When they are in
9214 conflict, the C@t{++} meaning takes precedence; however, this can be
9215 overridden by quoting the file or function name with single quotes.
9216
9217 For example, suppose the program is stopped in a method of a class
9218 that has a field named @code{includefile}, and there is also an
9219 include file named @file{includefile} that defines a variable,
9220 @code{some_global}.
9221
9222 @smallexample
9223 (@value{GDBP}) p includefile
9224 $1 = 23
9225 (@value{GDBP}) p includefile::some_global
9226 A syntax error in expression, near `'.
9227 (@value{GDBP}) p 'includefile'::some_global
9228 $2 = 27
9229 @end smallexample
9230
9231 @cindex wrong values
9232 @cindex variable values, wrong
9233 @cindex function entry/exit, wrong values of variables
9234 @cindex optimized code, wrong values of variables
9235 @quotation
9236 @emph{Warning:} Occasionally, a local variable may appear to have the
9237 wrong value at certain points in a function---just after entry to a new
9238 scope, and just before exit.
9239 @end quotation
9240 You may see this problem when you are stepping by machine instructions.
9241 This is because, on most machines, it takes more than one instruction to
9242 set up a stack frame (including local variable definitions); if you are
9243 stepping by machine instructions, variables may appear to have the wrong
9244 values until the stack frame is completely built. On exit, it usually
9245 also takes more than one machine instruction to destroy a stack frame;
9246 after you begin stepping through that group of instructions, local
9247 variable definitions may be gone.
9248
9249 This may also happen when the compiler does significant optimizations.
9250 To be sure of always seeing accurate values, turn off all optimization
9251 when compiling.
9252
9253 @cindex ``No symbol "foo" in current context''
9254 Another possible effect of compiler optimizations is to optimize
9255 unused variables out of existence, or assign variables to registers (as
9256 opposed to memory addresses). Depending on the support for such cases
9257 offered by the debug info format used by the compiler, @value{GDBN}
9258 might not be able to display values for such local variables. If that
9259 happens, @value{GDBN} will print a message like this:
9260
9261 @smallexample
9262 No symbol "foo" in current context.
9263 @end smallexample
9264
9265 To solve such problems, either recompile without optimizations, or use a
9266 different debug info format, if the compiler supports several such
9267 formats. @xref{Compilation}, for more information on choosing compiler
9268 options. @xref{C, ,C and C@t{++}}, for more information about debug
9269 info formats that are best suited to C@t{++} programs.
9270
9271 If you ask to print an object whose contents are unknown to
9272 @value{GDBN}, e.g., because its data type is not completely specified
9273 by the debug information, @value{GDBN} will say @samp{<incomplete
9274 type>}. @xref{Symbols, incomplete type}, for more about this.
9275
9276 @cindex no debug info variables
9277 If you try to examine or use the value of a (global) variable for
9278 which @value{GDBN} has no type information, e.g., because the program
9279 includes no debug information, @value{GDBN} displays an error message.
9280 @xref{Symbols, unknown type}, for more about unknown types. If you
9281 cast the variable to its declared type, @value{GDBN} gets the
9282 variable's value using the cast-to type as the variable's type. For
9283 example, in a C program:
9284
9285 @smallexample
9286 (@value{GDBP}) p var
9287 'var' has unknown type; cast it to its declared type
9288 (@value{GDBP}) p (float) var
9289 $1 = 3.14
9290 @end smallexample
9291
9292 If you append @kbd{@@entry} string to a function parameter name you get its
9293 value at the time the function got called. If the value is not available an
9294 error message is printed. Entry values are available only with some compilers.
9295 Entry values are normally also printed at the function parameter list according
9296 to @ref{set print entry-values}.
9297
9298 @smallexample
9299 Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29
9300 29 i++;
9301 (gdb) next
9302 30 e (i);
9303 (gdb) print i
9304 $1 = 31
9305 (gdb) print i@@entry
9306 $2 = 30
9307 @end smallexample
9308
9309 Strings are identified as arrays of @code{char} values without specified
9310 signedness. Arrays of either @code{signed char} or @code{unsigned char} get
9311 printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
9312 @code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
9313 defines literal string type @code{"char"} as @code{char} without a sign.
9314 For program code
9315
9316 @smallexample
9317 char var0[] = "A";
9318 signed char var1[] = "A";
9319 @end smallexample
9320
9321 You get during debugging
9322 @smallexample
9323 (gdb) print var0
9324 $1 = "A"
9325 (gdb) print var1
9326 $2 = @{65 'A', 0 '\0'@}
9327 @end smallexample
9328
9329 @node Arrays
9330 @section Artificial Arrays
9331
9332 @cindex artificial array
9333 @cindex arrays
9334 @kindex @@@r{, referencing memory as an array}
9335 It is often useful to print out several successive objects of the
9336 same type in memory; a section of an array, or an array of
9337 dynamically determined size for which only a pointer exists in the
9338 program.
9339
9340 You can do this by referring to a contiguous span of memory as an
9341 @dfn{artificial array}, using the binary operator @samp{@@}. The left
9342 operand of @samp{@@} should be the first element of the desired array
9343 and be an individual object. The right operand should be the desired length
9344 of the array. The result is an array value whose elements are all of
9345 the type of the left argument. The first element is actually the left
9346 argument; the second element comes from bytes of memory immediately
9347 following those that hold the first element, and so on. Here is an
9348 example. If a program says
9349
9350 @smallexample
9351 int *array = (int *) malloc (len * sizeof (int));
9352 @end smallexample
9353
9354 @noindent
9355 you can print the contents of @code{array} with
9356
9357 @smallexample
9358 p *array@@len
9359 @end smallexample
9360
9361 The left operand of @samp{@@} must reside in memory. Array values made
9362 with @samp{@@} in this way behave just like other arrays in terms of
9363 subscripting, and are coerced to pointers when used in expressions.
9364 Artificial arrays most often appear in expressions via the value history
9365 (@pxref{Value History, ,Value History}), after printing one out.
9366
9367 Another way to create an artificial array is to use a cast.
9368 This re-interprets a value as if it were an array.
9369 The value need not be in memory:
9370 @smallexample
9371 (@value{GDBP}) p/x (short[2])0x12345678
9372 $1 = @{0x1234, 0x5678@}
9373 @end smallexample
9374
9375 As a convenience, if you leave the array length out (as in
9376 @samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
9377 the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
9378 @smallexample
9379 (@value{GDBP}) p/x (short[])0x12345678
9380 $2 = @{0x1234, 0x5678@}
9381 @end smallexample
9382
9383 Sometimes the artificial array mechanism is not quite enough; in
9384 moderately complex data structures, the elements of interest may not
9385 actually be adjacent---for example, if you are interested in the values
9386 of pointers in an array. One useful work-around in this situation is
9387 to use a convenience variable (@pxref{Convenience Vars, ,Convenience
9388 Variables}) as a counter in an expression that prints the first
9389 interesting value, and then repeat that expression via @key{RET}. For
9390 instance, suppose you have an array @code{dtab} of pointers to
9391 structures, and you are interested in the values of a field @code{fv}
9392 in each structure. Here is an example of what you might type:
9393
9394 @smallexample
9395 set $i = 0
9396 p dtab[$i++]->fv
9397 @key{RET}
9398 @key{RET}
9399 @dots{}
9400 @end smallexample
9401
9402 @node Output Formats
9403 @section Output Formats
9404
9405 @cindex formatted output
9406 @cindex output formats
9407 By default, @value{GDBN} prints a value according to its data type. Sometimes
9408 this is not what you want. For example, you might want to print a number
9409 in hex, or a pointer in decimal. Or you might want to view data in memory
9410 at a certain address as a character string or as an instruction. To do
9411 these things, specify an @dfn{output format} when you print a value.
9412
9413 The simplest use of output formats is to say how to print a value
9414 already computed. This is done by starting the arguments of the
9415 @code{print} command with a slash and a format letter. The format
9416 letters supported are:
9417
9418 @table @code
9419 @item x
9420 Regard the bits of the value as an integer, and print the integer in
9421 hexadecimal.
9422
9423 @item d
9424 Print as integer in signed decimal.
9425
9426 @item u
9427 Print as integer in unsigned decimal.
9428
9429 @item o
9430 Print as integer in octal.
9431
9432 @item t
9433 Print as integer in binary. The letter @samp{t} stands for ``two''.
9434 @footnote{@samp{b} cannot be used because these format letters are also
9435 used with the @code{x} command, where @samp{b} stands for ``byte'';
9436 see @ref{Memory,,Examining Memory}.}
9437
9438 @item a
9439 @cindex unknown address, locating
9440 @cindex locate address
9441 Print as an address, both absolute in hexadecimal and as an offset from
9442 the nearest preceding symbol. You can use this format used to discover
9443 where (in what function) an unknown address is located:
9444
9445 @smallexample
9446 (@value{GDBP}) p/a 0x54320
9447 $3 = 0x54320 <_initialize_vx+396>
9448 @end smallexample
9449
9450 @noindent
9451 The command @code{info symbol 0x54320} yields similar results.
9452 @xref{Symbols, info symbol}.
9453
9454 @item c
9455 Regard as an integer and print it as a character constant. This
9456 prints both the numerical value and its character representation. The
9457 character representation is replaced with the octal escape @samp{\nnn}
9458 for characters outside the 7-bit @sc{ascii} range.
9459
9460 Without this format, @value{GDBN} displays @code{char},
9461 @w{@code{unsigned char}}, and @w{@code{signed char}} data as character
9462 constants. Single-byte members of vectors are displayed as integer
9463 data.
9464
9465 @item f
9466 Regard the bits of the value as a floating point number and print
9467 using typical floating point syntax.
9468
9469 @item s
9470 @cindex printing strings
9471 @cindex printing byte arrays
9472 Regard as a string, if possible. With this format, pointers to single-byte
9473 data are displayed as null-terminated strings and arrays of single-byte data
9474 are displayed as fixed-length strings. Other values are displayed in their
9475 natural types.
9476
9477 Without this format, @value{GDBN} displays pointers to and arrays of
9478 @code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
9479 strings. Single-byte members of a vector are displayed as an integer
9480 array.
9481
9482 @item z
9483 Like @samp{x} formatting, the value is treated as an integer and
9484 printed as hexadecimal, but leading zeros are printed to pad the value
9485 to the size of the integer type.
9486
9487 @item r
9488 @cindex raw printing
9489 Print using the @samp{raw} formatting. By default, @value{GDBN} will
9490 use a Python-based pretty-printer, if one is available (@pxref{Pretty
9491 Printing}). This typically results in a higher-level display of the
9492 value's contents. The @samp{r} format bypasses any Python
9493 pretty-printer which might exist.
9494 @end table
9495
9496 For example, to print the program counter in hex (@pxref{Registers}), type
9497
9498 @smallexample
9499 p/x $pc
9500 @end smallexample
9501
9502 @noindent
9503 Note that no space is required before the slash; this is because command
9504 names in @value{GDBN} cannot contain a slash.
9505
9506 To reprint the last value in the value history with a different format,
9507 you can use the @code{print} command with just a format and no
9508 expression. For example, @samp{p/x} reprints the last value in hex.
9509
9510 @node Memory
9511 @section Examining Memory
9512
9513 You can use the command @code{x} (for ``examine'') to examine memory in
9514 any of several formats, independently of your program's data types.
9515
9516 @cindex examining memory
9517 @table @code
9518 @kindex x @r{(examine memory)}
9519 @item x/@var{nfu} @var{addr}
9520 @itemx x @var{addr}
9521 @itemx x
9522 Use the @code{x} command to examine memory.
9523 @end table
9524
9525 @var{n}, @var{f}, and @var{u} are all optional parameters that specify how
9526 much memory to display and how to format it; @var{addr} is an
9527 expression giving the address where you want to start displaying memory.
9528 If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
9529 Several commands set convenient defaults for @var{addr}.
9530
9531 @table @r
9532 @item @var{n}, the repeat count
9533 The repeat count is a decimal integer; the default is 1. It specifies
9534 how much memory (counting by units @var{u}) to display. If a negative
9535 number is specified, memory is examined backward from @var{addr}.
9536 @c This really is **decimal**; unaffected by 'set radix' as of GDB
9537 @c 4.1.2.
9538
9539 @item @var{f}, the display format
9540 The display format is one of the formats used by @code{print}
9541 (@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
9542 @samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
9543 The default is @samp{x} (hexadecimal) initially. The default changes
9544 each time you use either @code{x} or @code{print}.
9545
9546 @item @var{u}, the unit size
9547 The unit size is any of
9548
9549 @table @code
9550 @item b
9551 Bytes.
9552 @item h
9553 Halfwords (two bytes).
9554 @item w
9555 Words (four bytes). This is the initial default.
9556 @item g
9557 Giant words (eight bytes).
9558 @end table
9559
9560 Each time you specify a unit size with @code{x}, that size becomes the
9561 default unit the next time you use @code{x}. For the @samp{i} format,
9562 the unit size is ignored and is normally not written. For the @samp{s} format,
9563 the unit size defaults to @samp{b}, unless it is explicitly given.
9564 Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display
9565 32-bit strings. The next use of @kbd{x /s} will again display 8-bit strings.
9566 Note that the results depend on the programming language of the
9567 current compilation unit. If the language is C, the @samp{s}
9568 modifier will use the UTF-16 encoding while @samp{w} will use
9569 UTF-32. The encoding is set by the programming language and cannot
9570 be altered.
9571
9572 @item @var{addr}, starting display address
9573 @var{addr} is the address where you want @value{GDBN} to begin displaying
9574 memory. The expression need not have a pointer value (though it may);
9575 it is always interpreted as an integer address of a byte of memory.
9576 @xref{Expressions, ,Expressions}, for more information on expressions. The default for
9577 @var{addr} is usually just after the last address examined---but several
9578 other commands also set the default address: @code{info breakpoints} (to
9579 the address of the last breakpoint listed), @code{info line} (to the
9580 starting address of a line), and @code{print} (if you use it to display
9581 a value from memory).
9582 @end table
9583
9584 For example, @samp{x/3uh 0x54320} is a request to display three halfwords
9585 (@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
9586 starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
9587 words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
9588 @pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
9589
9590 You can also specify a negative repeat count to examine memory backward
9591 from the given address. For example, @samp{x/-3uh 0x54320} prints three
9592 halfwords (@code{h}) at @code{0x54314}, @code{0x54328}, and @code{0x5431c}.
9593
9594 Since the letters indicating unit sizes are all distinct from the
9595 letters specifying output formats, you do not have to remember whether
9596 unit size or format comes first; either order works. The output
9597 specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
9598 (However, the count @var{n} must come first; @samp{wx4} does not work.)
9599
9600 Even though the unit size @var{u} is ignored for the formats @samp{s}
9601 and @samp{i}, you might still want to use a count @var{n}; for example,
9602 @samp{3i} specifies that you want to see three machine instructions,
9603 including any operands. For convenience, especially when used with
9604 the @code{display} command, the @samp{i} format also prints branch delay
9605 slot instructions, if any, beyond the count specified, which immediately
9606 follow the last instruction that is within the count. The command
9607 @code{disassemble} gives an alternative way of inspecting machine
9608 instructions; see @ref{Machine Code,,Source and Machine Code}.
9609
9610 If a negative repeat count is specified for the formats @samp{s} or @samp{i},
9611 the command displays null-terminated strings or instructions before the given
9612 address as many as the absolute value of the given number. For the @samp{i}
9613 format, we use line number information in the debug info to accurately locate
9614 instruction boundaries while disassembling backward. If line info is not
9615 available, the command stops examining memory with an error message.
9616
9617 All the defaults for the arguments to @code{x} are designed to make it
9618 easy to continue scanning memory with minimal specifications each time
9619 you use @code{x}. For example, after you have inspected three machine
9620 instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
9621 with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
9622 the repeat count @var{n} is used again; the other arguments default as
9623 for successive uses of @code{x}.
9624
9625 When examining machine instructions, the instruction at current program
9626 counter is shown with a @code{=>} marker. For example:
9627
9628 @smallexample
9629 (@value{GDBP}) x/5i $pc-6
9630 0x804837f <main+11>: mov %esp,%ebp
9631 0x8048381 <main+13>: push %ecx
9632 0x8048382 <main+14>: sub $0x4,%esp
9633 => 0x8048385 <main+17>: movl $0x8048460,(%esp)
9634 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
9635 @end smallexample
9636
9637 @cindex @code{$_}, @code{$__}, and value history
9638 The addresses and contents printed by the @code{x} command are not saved
9639 in the value history because there is often too much of them and they
9640 would get in the way. Instead, @value{GDBN} makes these values available for
9641 subsequent use in expressions as values of the convenience variables
9642 @code{$_} and @code{$__}. After an @code{x} command, the last address
9643 examined is available for use in expressions in the convenience variable
9644 @code{$_}. The contents of that address, as examined, are available in
9645 the convenience variable @code{$__}.
9646
9647 If the @code{x} command has a repeat count, the address and contents saved
9648 are from the last memory unit printed; this is not the same as the last
9649 address printed if several units were printed on the last line of output.
9650
9651 @anchor{addressable memory unit}
9652 @cindex addressable memory unit
9653 Most targets have an addressable memory unit size of 8 bits. This means
9654 that to each memory address are associated 8 bits of data. Some
9655 targets, however, have other addressable memory unit sizes.
9656 Within @value{GDBN} and this document, the term
9657 @dfn{addressable memory unit} (or @dfn{memory unit} for short) is used
9658 when explicitly referring to a chunk of data of that size. The word
9659 @dfn{byte} is used to refer to a chunk of data of 8 bits, regardless of
9660 the addressable memory unit size of the target. For most systems,
9661 addressable memory unit is a synonym of byte.
9662
9663 @cindex remote memory comparison
9664 @cindex target memory comparison
9665 @cindex verify remote memory image
9666 @cindex verify target memory image
9667 When you are debugging a program running on a remote target machine
9668 (@pxref{Remote Debugging}), you may wish to verify the program's image
9669 in the remote machine's memory against the executable file you
9670 downloaded to the target. Or, on any target, you may want to check
9671 whether the program has corrupted its own read-only sections. The
9672 @code{compare-sections} command is provided for such situations.
9673
9674 @table @code
9675 @kindex compare-sections
9676 @item compare-sections @r{[}@var{section-name}@r{|}@code{-r}@r{]}
9677 Compare the data of a loadable section @var{section-name} in the
9678 executable file of the program being debugged with the same section in
9679 the target machine's memory, and report any mismatches. With no
9680 arguments, compares all loadable sections. With an argument of
9681 @code{-r}, compares all loadable read-only sections.
9682
9683 Note: for remote targets, this command can be accelerated if the
9684 target supports computing the CRC checksum of a block of memory
9685 (@pxref{qCRC packet}).
9686 @end table
9687
9688 @node Auto Display
9689 @section Automatic Display
9690 @cindex automatic display
9691 @cindex display of expressions
9692
9693 If you find that you want to print the value of an expression frequently
9694 (to see how it changes), you might want to add it to the @dfn{automatic
9695 display list} so that @value{GDBN} prints its value each time your program stops.
9696 Each expression added to the list is given a number to identify it;
9697 to remove an expression from the list, you specify that number.
9698 The automatic display looks like this:
9699
9700 @smallexample
9701 2: foo = 38
9702 3: bar[5] = (struct hack *) 0x3804
9703 @end smallexample
9704
9705 @noindent
9706 This display shows item numbers, expressions and their current values. As with
9707 displays you request manually using @code{x} or @code{print}, you can
9708 specify the output format you prefer; in fact, @code{display} decides
9709 whether to use @code{print} or @code{x} depending your format
9710 specification---it uses @code{x} if you specify either the @samp{i}
9711 or @samp{s} format, or a unit size; otherwise it uses @code{print}.
9712
9713 @table @code
9714 @kindex display
9715 @item display @var{expr}
9716 Add the expression @var{expr} to the list of expressions to display
9717 each time your program stops. @xref{Expressions, ,Expressions}.
9718
9719 @code{display} does not repeat if you press @key{RET} again after using it.
9720
9721 @item display/@var{fmt} @var{expr}
9722 For @var{fmt} specifying only a display format and not a size or
9723 count, add the expression @var{expr} to the auto-display list but
9724 arrange to display it each time in the specified format @var{fmt}.
9725 @xref{Output Formats,,Output Formats}.
9726
9727 @item display/@var{fmt} @var{addr}
9728 For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
9729 number of units, add the expression @var{addr} as a memory address to
9730 be examined each time your program stops. Examining means in effect
9731 doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
9732 @end table
9733
9734 For example, @samp{display/i $pc} can be helpful, to see the machine
9735 instruction about to be executed each time execution stops (@samp{$pc}
9736 is a common name for the program counter; @pxref{Registers, ,Registers}).
9737
9738 @table @code
9739 @kindex delete display
9740 @kindex undisplay
9741 @item undisplay @var{dnums}@dots{}
9742 @itemx delete display @var{dnums}@dots{}
9743 Remove items from the list of expressions to display. Specify the
9744 numbers of the displays that you want affected with the command
9745 argument @var{dnums}. It can be a single display number, one of the
9746 numbers shown in the first field of the @samp{info display} display;
9747 or it could be a range of display numbers, as in @code{2-4}.
9748
9749 @code{undisplay} does not repeat if you press @key{RET} after using it.
9750 (Otherwise you would just get the error @samp{No display number @dots{}}.)
9751
9752 @kindex disable display
9753 @item disable display @var{dnums}@dots{}
9754 Disable the display of item numbers @var{dnums}. A disabled display
9755 item is not printed automatically, but is not forgotten. It may be
9756 enabled again later. Specify the numbers of the displays that you
9757 want affected with the command argument @var{dnums}. It can be a
9758 single display number, one of the numbers shown in the first field of
9759 the @samp{info display} display; or it could be a range of display
9760 numbers, as in @code{2-4}.
9761
9762 @kindex enable display
9763 @item enable display @var{dnums}@dots{}
9764 Enable display of item numbers @var{dnums}. It becomes effective once
9765 again in auto display of its expression, until you specify otherwise.
9766 Specify the numbers of the displays that you want affected with the
9767 command argument @var{dnums}. It can be a single display number, one
9768 of the numbers shown in the first field of the @samp{info display}
9769 display; or it could be a range of display numbers, as in @code{2-4}.
9770
9771 @item display
9772 Display the current values of the expressions on the list, just as is
9773 done when your program stops.
9774
9775 @kindex info display
9776 @item info display
9777 Print the list of expressions previously set up to display
9778 automatically, each one with its item number, but without showing the
9779 values. This includes disabled expressions, which are marked as such.
9780 It also includes expressions which would not be displayed right now
9781 because they refer to automatic variables not currently available.
9782 @end table
9783
9784 @cindex display disabled out of scope
9785 If a display expression refers to local variables, then it does not make
9786 sense outside the lexical context for which it was set up. Such an
9787 expression is disabled when execution enters a context where one of its
9788 variables is not defined. For example, if you give the command
9789 @code{display last_char} while inside a function with an argument
9790 @code{last_char}, @value{GDBN} displays this argument while your program
9791 continues to stop inside that function. When it stops elsewhere---where
9792 there is no variable @code{last_char}---the display is disabled
9793 automatically. The next time your program stops where @code{last_char}
9794 is meaningful, you can enable the display expression once again.
9795
9796 @node Print Settings
9797 @section Print Settings
9798
9799 @cindex format options
9800 @cindex print settings
9801 @value{GDBN} provides the following ways to control how arrays, structures,
9802 and symbols are printed.
9803
9804 @noindent
9805 These settings are useful for debugging programs in any language:
9806
9807 @table @code
9808 @kindex set print
9809 @item set print address
9810 @itemx set print address on
9811 @cindex print/don't print memory addresses
9812 @value{GDBN} prints memory addresses showing the location of stack
9813 traces, structure values, pointer values, breakpoints, and so forth,
9814 even when it also displays the contents of those addresses. The default
9815 is @code{on}. For example, this is what a stack frame display looks like with
9816 @code{set print address on}:
9817
9818 @smallexample
9819 @group
9820 (@value{GDBP}) f
9821 #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
9822 at input.c:530
9823 530 if (lquote != def_lquote)
9824 @end group
9825 @end smallexample
9826
9827 @item set print address off
9828 Do not print addresses when displaying their contents. For example,
9829 this is the same stack frame displayed with @code{set print address off}:
9830
9831 @smallexample
9832 @group
9833 (@value{GDBP}) set print addr off
9834 (@value{GDBP}) f
9835 #0 set_quotes (lq="<<", rq=">>") at input.c:530
9836 530 if (lquote != def_lquote)
9837 @end group
9838 @end smallexample
9839
9840 You can use @samp{set print address off} to eliminate all machine
9841 dependent displays from the @value{GDBN} interface. For example, with
9842 @code{print address off}, you should get the same text for backtraces on
9843 all machines---whether or not they involve pointer arguments.
9844
9845 @kindex show print
9846 @item show print address
9847 Show whether or not addresses are to be printed.
9848 @end table
9849
9850 When @value{GDBN} prints a symbolic address, it normally prints the
9851 closest earlier symbol plus an offset. If that symbol does not uniquely
9852 identify the address (for example, it is a name whose scope is a single
9853 source file), you may need to clarify. One way to do this is with
9854 @code{info line}, for example @samp{info line *0x4537}. Alternately,
9855 you can set @value{GDBN} to print the source file and line number when
9856 it prints a symbolic address:
9857
9858 @table @code
9859 @item set print symbol-filename on
9860 @cindex source file and line of a symbol
9861 @cindex symbol, source file and line
9862 Tell @value{GDBN} to print the source file name and line number of a
9863 symbol in the symbolic form of an address.
9864
9865 @item set print symbol-filename off
9866 Do not print source file name and line number of a symbol. This is the
9867 default.
9868
9869 @item show print symbol-filename
9870 Show whether or not @value{GDBN} will print the source file name and
9871 line number of a symbol in the symbolic form of an address.
9872 @end table
9873
9874 Another situation where it is helpful to show symbol filenames and line
9875 numbers is when disassembling code; @value{GDBN} shows you the line
9876 number and source file that corresponds to each instruction.
9877
9878 Also, you may wish to see the symbolic form only if the address being
9879 printed is reasonably close to the closest earlier symbol:
9880
9881 @table @code
9882 @item set print max-symbolic-offset @var{max-offset}
9883 @itemx set print max-symbolic-offset unlimited
9884 @cindex maximum value for offset of closest symbol
9885 Tell @value{GDBN} to only display the symbolic form of an address if the
9886 offset between the closest earlier symbol and the address is less than
9887 @var{max-offset}. The default is @code{unlimited}, which tells @value{GDBN}
9888 to always print the symbolic form of an address if any symbol precedes
9889 it. Zero is equivalent to @code{unlimited}.
9890
9891 @item show print max-symbolic-offset
9892 Ask how large the maximum offset is that @value{GDBN} prints in a
9893 symbolic address.
9894 @end table
9895
9896 @cindex wild pointer, interpreting
9897 @cindex pointer, finding referent
9898 If you have a pointer and you are not sure where it points, try
9899 @samp{set print symbol-filename on}. Then you can determine the name
9900 and source file location of the variable where it points, using
9901 @samp{p/a @var{pointer}}. This interprets the address in symbolic form.
9902 For example, here @value{GDBN} shows that a variable @code{ptt} points
9903 at another variable @code{t}, defined in @file{hi2.c}:
9904
9905 @smallexample
9906 (@value{GDBP}) set print symbol-filename on
9907 (@value{GDBP}) p/a ptt
9908 $4 = 0xe008 <t in hi2.c>
9909 @end smallexample
9910
9911 @quotation
9912 @emph{Warning:} For pointers that point to a local variable, @samp{p/a}
9913 does not show the symbol name and filename of the referent, even with
9914 the appropriate @code{set print} options turned on.
9915 @end quotation
9916
9917 You can also enable @samp{/a}-like formatting all the time using
9918 @samp{set print symbol on}:
9919
9920 @table @code
9921 @item set print symbol on
9922 Tell @value{GDBN} to print the symbol corresponding to an address, if
9923 one exists.
9924
9925 @item set print symbol off
9926 Tell @value{GDBN} not to print the symbol corresponding to an
9927 address. In this mode, @value{GDBN} will still print the symbol
9928 corresponding to pointers to functions. This is the default.
9929
9930 @item show print symbol
9931 Show whether @value{GDBN} will display the symbol corresponding to an
9932 address.
9933 @end table
9934
9935 Other settings control how different kinds of objects are printed:
9936
9937 @table @code
9938 @item set print array
9939 @itemx set print array on
9940 @cindex pretty print arrays
9941 Pretty print arrays. This format is more convenient to read,
9942 but uses more space. The default is off.
9943
9944 @item set print array off
9945 Return to compressed format for arrays.
9946
9947 @item show print array
9948 Show whether compressed or pretty format is selected for displaying
9949 arrays.
9950
9951 @cindex print array indexes
9952 @item set print array-indexes
9953 @itemx set print array-indexes on
9954 Print the index of each element when displaying arrays. May be more
9955 convenient to locate a given element in the array or quickly find the
9956 index of a given element in that printed array. The default is off.
9957
9958 @item set print array-indexes off
9959 Stop printing element indexes when displaying arrays.
9960
9961 @item show print array-indexes
9962 Show whether the index of each element is printed when displaying
9963 arrays.
9964
9965 @item set print elements @var{number-of-elements}
9966 @itemx set print elements unlimited
9967 @cindex number of array elements to print
9968 @cindex limit on number of printed array elements
9969 Set a limit on how many elements of an array @value{GDBN} will print.
9970 If @value{GDBN} is printing a large array, it stops printing after it has
9971 printed the number of elements set by the @code{set print elements} command.
9972 This limit also applies to the display of strings.
9973 When @value{GDBN} starts, this limit is set to 200.
9974 Setting @var{number-of-elements} to @code{unlimited} or zero means
9975 that the number of elements to print is unlimited.
9976
9977 @item show print elements
9978 Display the number of elements of a large array that @value{GDBN} will print.
9979 If the number is 0, then the printing is unlimited.
9980
9981 @item set print frame-arguments @var{value}
9982 @kindex set print frame-arguments
9983 @cindex printing frame argument values
9984 @cindex print all frame argument values
9985 @cindex print frame argument values for scalars only
9986 @cindex do not print frame argument values
9987 This command allows to control how the values of arguments are printed
9988 when the debugger prints a frame (@pxref{Frames}). The possible
9989 values are:
9990
9991 @table @code
9992 @item all
9993 The values of all arguments are printed.
9994
9995 @item scalars
9996 Print the value of an argument only if it is a scalar. The value of more
9997 complex arguments such as arrays, structures, unions, etc, is replaced
9998 by @code{@dots{}}. This is the default. Here is an example where
9999 only scalar arguments are shown:
10000
10001 @smallexample
10002 #1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
10003 at frame-args.c:23
10004 @end smallexample
10005
10006 @item none
10007 None of the argument values are printed. Instead, the value of each argument
10008 is replaced by @code{@dots{}}. In this case, the example above now becomes:
10009
10010 @smallexample
10011 #1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
10012 at frame-args.c:23
10013 @end smallexample
10014 @end table
10015
10016 By default, only scalar arguments are printed. This command can be used
10017 to configure the debugger to print the value of all arguments, regardless
10018 of their type. However, it is often advantageous to not print the value
10019 of more complex parameters. For instance, it reduces the amount of
10020 information printed in each frame, making the backtrace more readable.
10021 Also, it improves performance when displaying Ada frames, because
10022 the computation of large arguments can sometimes be CPU-intensive,
10023 especially in large applications. Setting @code{print frame-arguments}
10024 to @code{scalars} (the default) or @code{none} avoids this computation,
10025 thus speeding up the display of each Ada frame.
10026
10027 @item show print frame-arguments
10028 Show how the value of arguments should be displayed when printing a frame.
10029
10030 @item set print raw frame-arguments on
10031 Print frame arguments in raw, non pretty-printed, form.
10032
10033 @item set print raw frame-arguments off
10034 Print frame arguments in pretty-printed form, if there is a pretty-printer
10035 for the value (@pxref{Pretty Printing}),
10036 otherwise print the value in raw form.
10037 This is the default.
10038
10039 @item show print raw frame-arguments
10040 Show whether to print frame arguments in raw form.
10041
10042 @anchor{set print entry-values}
10043 @item set print entry-values @var{value}
10044 @kindex set print entry-values
10045 Set printing of frame argument values at function entry. In some cases
10046 @value{GDBN} can determine the value of function argument which was passed by
10047 the function caller, even if the value was modified inside the called function
10048 and therefore is different. With optimized code, the current value could be
10049 unavailable, but the entry value may still be known.
10050
10051 The default value is @code{default} (see below for its description). Older
10052 @value{GDBN} behaved as with the setting @code{no}. Compilers not supporting
10053 this feature will behave in the @code{default} setting the same way as with the
10054 @code{no} setting.
10055
10056 This functionality is currently supported only by DWARF 2 debugging format and
10057 the compiler has to produce @samp{DW_TAG_call_site} tags. With
10058 @value{NGCC}, you need to specify @option{-O -g} during compilation, to get
10059 this information.
10060
10061 The @var{value} parameter can be one of the following:
10062
10063 @table @code
10064 @item no
10065 Print only actual parameter values, never print values from function entry
10066 point.
10067 @smallexample
10068 #0 equal (val=5)
10069 #0 different (val=6)
10070 #0 lost (val=<optimized out>)
10071 #0 born (val=10)
10072 #0 invalid (val=<optimized out>)
10073 @end smallexample
10074
10075 @item only
10076 Print only parameter values from function entry point. The actual parameter
10077 values are never printed.
10078 @smallexample
10079 #0 equal (val@@entry=5)
10080 #0 different (val@@entry=5)
10081 #0 lost (val@@entry=5)
10082 #0 born (val@@entry=<optimized out>)
10083 #0 invalid (val@@entry=<optimized out>)
10084 @end smallexample
10085
10086 @item preferred
10087 Print only parameter values from function entry point. If value from function
10088 entry point is not known while the actual value is known, print the actual
10089 value for such parameter.
10090 @smallexample
10091 #0 equal (val@@entry=5)
10092 #0 different (val@@entry=5)
10093 #0 lost (val@@entry=5)
10094 #0 born (val=10)
10095 #0 invalid (val@@entry=<optimized out>)
10096 @end smallexample
10097
10098 @item if-needed
10099 Print actual parameter values. If actual parameter value is not known while
10100 value from function entry point is known, print the entry point value for such
10101 parameter.
10102 @smallexample
10103 #0 equal (val=5)
10104 #0 different (val=6)
10105 #0 lost (val@@entry=5)
10106 #0 born (val=10)
10107 #0 invalid (val=<optimized out>)
10108 @end smallexample
10109
10110 @item both
10111 Always print both the actual parameter value and its value from function entry
10112 point, even if values of one or both are not available due to compiler
10113 optimizations.
10114 @smallexample
10115 #0 equal (val=5, val@@entry=5)
10116 #0 different (val=6, val@@entry=5)
10117 #0 lost (val=<optimized out>, val@@entry=5)
10118 #0 born (val=10, val@@entry=<optimized out>)
10119 #0 invalid (val=<optimized out>, val@@entry=<optimized out>)
10120 @end smallexample
10121
10122 @item compact
10123 Print the actual parameter value if it is known and also its value from
10124 function entry point if it is known. If neither is known, print for the actual
10125 value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both
10126 values are known and identical, print the shortened
10127 @code{param=param@@entry=VALUE} notation.
10128 @smallexample
10129 #0 equal (val=val@@entry=5)
10130 #0 different (val=6, val@@entry=5)
10131 #0 lost (val@@entry=5)
10132 #0 born (val=10)
10133 #0 invalid (val=<optimized out>)
10134 @end smallexample
10135
10136 @item default
10137 Always print the actual parameter value. Print also its value from function
10138 entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and
10139 if both values are known and identical, print the shortened
10140 @code{param=param@@entry=VALUE} notation.
10141 @smallexample
10142 #0 equal (val=val@@entry=5)
10143 #0 different (val=6, val@@entry=5)
10144 #0 lost (val=<optimized out>, val@@entry=5)
10145 #0 born (val=10)
10146 #0 invalid (val=<optimized out>)
10147 @end smallexample
10148 @end table
10149
10150 For analysis messages on possible failures of frame argument values at function
10151 entry resolution see @ref{set debug entry-values}.
10152
10153 @item show print entry-values
10154 Show the method being used for printing of frame argument values at function
10155 entry.
10156
10157 @item set print repeats @var{number-of-repeats}
10158 @itemx set print repeats unlimited
10159 @cindex repeated array elements
10160 Set the threshold for suppressing display of repeated array
10161 elements. When the number of consecutive identical elements of an
10162 array exceeds the threshold, @value{GDBN} prints the string
10163 @code{"<repeats @var{n} times>"}, where @var{n} is the number of
10164 identical repetitions, instead of displaying the identical elements
10165 themselves. Setting the threshold to @code{unlimited} or zero will
10166 cause all elements to be individually printed. The default threshold
10167 is 10.
10168
10169 @item show print repeats
10170 Display the current threshold for printing repeated identical
10171 elements.
10172
10173 @item set print null-stop
10174 @cindex @sc{null} elements in arrays
10175 Cause @value{GDBN} to stop printing the characters of an array when the first
10176 @sc{null} is encountered. This is useful when large arrays actually
10177 contain only short strings.
10178 The default is off.
10179
10180 @item show print null-stop
10181 Show whether @value{GDBN} stops printing an array on the first
10182 @sc{null} character.
10183
10184 @item set print pretty on
10185 @cindex print structures in indented form
10186 @cindex indentation in structure display
10187 Cause @value{GDBN} to print structures in an indented format with one member
10188 per line, like this:
10189
10190 @smallexample
10191 @group
10192 $1 = @{
10193 next = 0x0,
10194 flags = @{
10195 sweet = 1,
10196 sour = 1
10197 @},
10198 meat = 0x54 "Pork"
10199 @}
10200 @end group
10201 @end smallexample
10202
10203 @item set print pretty off
10204 Cause @value{GDBN} to print structures in a compact format, like this:
10205
10206 @smallexample
10207 @group
10208 $1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
10209 meat = 0x54 "Pork"@}
10210 @end group
10211 @end smallexample
10212
10213 @noindent
10214 This is the default format.
10215
10216 @item show print pretty
10217 Show which format @value{GDBN} is using to print structures.
10218
10219 @item set print sevenbit-strings on
10220 @cindex eight-bit characters in strings
10221 @cindex octal escapes in strings
10222 Print using only seven-bit characters; if this option is set,
10223 @value{GDBN} displays any eight-bit characters (in strings or
10224 character values) using the notation @code{\}@var{nnn}. This setting is
10225 best if you are working in English (@sc{ascii}) and you use the
10226 high-order bit of characters as a marker or ``meta'' bit.
10227
10228 @item set print sevenbit-strings off
10229 Print full eight-bit characters. This allows the use of more
10230 international character sets, and is the default.
10231
10232 @item show print sevenbit-strings
10233 Show whether or not @value{GDBN} is printing only seven-bit characters.
10234
10235 @item set print union on
10236 @cindex unions in structures, printing
10237 Tell @value{GDBN} to print unions which are contained in structures
10238 and other unions. This is the default setting.
10239
10240 @item set print union off
10241 Tell @value{GDBN} not to print unions which are contained in
10242 structures and other unions. @value{GDBN} will print @code{"@{...@}"}
10243 instead.
10244
10245 @item show print union
10246 Ask @value{GDBN} whether or not it will print unions which are contained in
10247 structures and other unions.
10248
10249 For example, given the declarations
10250
10251 @smallexample
10252 typedef enum @{Tree, Bug@} Species;
10253 typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
10254 typedef enum @{Caterpillar, Cocoon, Butterfly@}
10255 Bug_forms;
10256
10257 struct thing @{
10258 Species it;
10259 union @{
10260 Tree_forms tree;
10261 Bug_forms bug;
10262 @} form;
10263 @};
10264
10265 struct thing foo = @{Tree, @{Acorn@}@};
10266 @end smallexample
10267
10268 @noindent
10269 with @code{set print union on} in effect @samp{p foo} would print
10270
10271 @smallexample
10272 $1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
10273 @end smallexample
10274
10275 @noindent
10276 and with @code{set print union off} in effect it would print
10277
10278 @smallexample
10279 $1 = @{it = Tree, form = @{...@}@}
10280 @end smallexample
10281
10282 @noindent
10283 @code{set print union} affects programs written in C-like languages
10284 and in Pascal.
10285 @end table
10286
10287 @need 1000
10288 @noindent
10289 These settings are of interest when debugging C@t{++} programs:
10290
10291 @table @code
10292 @cindex demangling C@t{++} names
10293 @item set print demangle
10294 @itemx set print demangle on
10295 Print C@t{++} names in their source form rather than in the encoded
10296 (``mangled'') form passed to the assembler and linker for type-safe
10297 linkage. The default is on.
10298
10299 @item show print demangle
10300 Show whether C@t{++} names are printed in mangled or demangled form.
10301
10302 @item set print asm-demangle
10303 @itemx set print asm-demangle on
10304 Print C@t{++} names in their source form rather than their mangled form, even
10305 in assembler code printouts such as instruction disassemblies.
10306 The default is off.
10307
10308 @item show print asm-demangle
10309 Show whether C@t{++} names in assembly listings are printed in mangled
10310 or demangled form.
10311
10312 @cindex C@t{++} symbol decoding style
10313 @cindex symbol decoding style, C@t{++}
10314 @kindex set demangle-style
10315 @item set demangle-style @var{style}
10316 Choose among several encoding schemes used by different compilers to
10317 represent C@t{++} names. The choices for @var{style} are currently:
10318
10319 @table @code
10320 @item auto
10321 Allow @value{GDBN} to choose a decoding style by inspecting your program.
10322 This is the default.
10323
10324 @item gnu
10325 Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
10326
10327 @item hp
10328 Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
10329
10330 @item lucid
10331 Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
10332
10333 @item arm
10334 Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
10335 @strong{Warning:} this setting alone is not sufficient to allow
10336 debugging @code{cfront}-generated executables. @value{GDBN} would
10337 require further enhancement to permit that.
10338
10339 @end table
10340 If you omit @var{style}, you will see a list of possible formats.
10341
10342 @item show demangle-style
10343 Display the encoding style currently in use for decoding C@t{++} symbols.
10344
10345 @item set print object
10346 @itemx set print object on
10347 @cindex derived type of an object, printing
10348 @cindex display derived types
10349 When displaying a pointer to an object, identify the @emph{actual}
10350 (derived) type of the object rather than the @emph{declared} type, using
10351 the virtual function table. Note that the virtual function table is
10352 required---this feature can only work for objects that have run-time
10353 type identification; a single virtual method in the object's declared
10354 type is sufficient. Note that this setting is also taken into account when
10355 working with variable objects via MI (@pxref{GDB/MI}).
10356
10357 @item set print object off
10358 Display only the declared type of objects, without reference to the
10359 virtual function table. This is the default setting.
10360
10361 @item show print object
10362 Show whether actual, or declared, object types are displayed.
10363
10364 @item set print static-members
10365 @itemx set print static-members on
10366 @cindex static members of C@t{++} objects
10367 Print static members when displaying a C@t{++} object. The default is on.
10368
10369 @item set print static-members off
10370 Do not print static members when displaying a C@t{++} object.
10371
10372 @item show print static-members
10373 Show whether C@t{++} static members are printed or not.
10374
10375 @item set print pascal_static-members
10376 @itemx set print pascal_static-members on
10377 @cindex static members of Pascal objects
10378 @cindex Pascal objects, static members display
10379 Print static members when displaying a Pascal object. The default is on.
10380
10381 @item set print pascal_static-members off
10382 Do not print static members when displaying a Pascal object.
10383
10384 @item show print pascal_static-members
10385 Show whether Pascal static members are printed or not.
10386
10387 @c These don't work with HP ANSI C++ yet.
10388 @item set print vtbl
10389 @itemx set print vtbl on
10390 @cindex pretty print C@t{++} virtual function tables
10391 @cindex virtual functions (C@t{++}) display
10392 @cindex VTBL display
10393 Pretty print C@t{++} virtual function tables. The default is off.
10394 (The @code{vtbl} commands do not work on programs compiled with the HP
10395 ANSI C@t{++} compiler (@code{aCC}).)
10396
10397 @item set print vtbl off
10398 Do not pretty print C@t{++} virtual function tables.
10399
10400 @item show print vtbl
10401 Show whether C@t{++} virtual function tables are pretty printed, or not.
10402 @end table
10403
10404 @node Pretty Printing
10405 @section Pretty Printing
10406
10407 @value{GDBN} provides a mechanism to allow pretty-printing of values using
10408 Python code. It greatly simplifies the display of complex objects. This
10409 mechanism works for both MI and the CLI.
10410
10411 @menu
10412 * Pretty-Printer Introduction:: Introduction to pretty-printers
10413 * Pretty-Printer Example:: An example pretty-printer
10414 * Pretty-Printer Commands:: Pretty-printer commands
10415 @end menu
10416
10417 @node Pretty-Printer Introduction
10418 @subsection Pretty-Printer Introduction
10419
10420 When @value{GDBN} prints a value, it first sees if there is a pretty-printer
10421 registered for the value. If there is then @value{GDBN} invokes the
10422 pretty-printer to print the value. Otherwise the value is printed normally.
10423
10424 Pretty-printers are normally named. This makes them easy to manage.
10425 The @samp{info pretty-printer} command will list all the installed
10426 pretty-printers with their names.
10427 If a pretty-printer can handle multiple data types, then its
10428 @dfn{subprinters} are the printers for the individual data types.
10429 Each such subprinter has its own name.
10430 The format of the name is @var{printer-name};@var{subprinter-name}.
10431
10432 Pretty-printers are installed by @dfn{registering} them with @value{GDBN}.
10433 Typically they are automatically loaded and registered when the corresponding
10434 debug information is loaded, thus making them available without having to
10435 do anything special.
10436
10437 There are three places where a pretty-printer can be registered.
10438
10439 @itemize @bullet
10440 @item
10441 Pretty-printers registered globally are available when debugging
10442 all inferiors.
10443
10444 @item
10445 Pretty-printers registered with a program space are available only
10446 when debugging that program.
10447 @xref{Progspaces In Python}, for more details on program spaces in Python.
10448
10449 @item
10450 Pretty-printers registered with an objfile are loaded and unloaded
10451 with the corresponding objfile (e.g., shared library).
10452 @xref{Objfiles In Python}, for more details on objfiles in Python.
10453 @end itemize
10454
10455 @xref{Selecting Pretty-Printers}, for further information on how
10456 pretty-printers are selected,
10457
10458 @xref{Writing a Pretty-Printer}, for implementing pretty printers
10459 for new types.
10460
10461 @node Pretty-Printer Example
10462 @subsection Pretty-Printer Example
10463
10464 Here is how a C@t{++} @code{std::string} looks without a pretty-printer:
10465
10466 @smallexample
10467 (@value{GDBP}) print s
10468 $1 = @{
10469 static npos = 4294967295,
10470 _M_dataplus = @{
10471 <std::allocator<char>> = @{
10472 <__gnu_cxx::new_allocator<char>> = @{
10473 <No data fields>@}, <No data fields>
10474 @},
10475 members of std::basic_string<char, std::char_traits<char>,
10476 std::allocator<char> >::_Alloc_hider:
10477 _M_p = 0x804a014 "abcd"
10478 @}
10479 @}
10480 @end smallexample
10481
10482 With a pretty-printer for @code{std::string} only the contents are printed:
10483
10484 @smallexample
10485 (@value{GDBP}) print s
10486 $2 = "abcd"
10487 @end smallexample
10488
10489 @node Pretty-Printer Commands
10490 @subsection Pretty-Printer Commands
10491 @cindex pretty-printer commands
10492
10493 @table @code
10494 @kindex info pretty-printer
10495 @item info pretty-printer [@var{object-regexp} [@var{name-regexp}]]
10496 Print the list of installed pretty-printers.
10497 This includes disabled pretty-printers, which are marked as such.
10498
10499 @var{object-regexp} is a regular expression matching the objects
10500 whose pretty-printers to list.
10501 Objects can be @code{global}, the program space's file
10502 (@pxref{Progspaces In Python}),
10503 and the object files within that program space (@pxref{Objfiles In Python}).
10504 @xref{Selecting Pretty-Printers}, for details on how @value{GDBN}
10505 looks up a printer from these three objects.
10506
10507 @var{name-regexp} is a regular expression matching the name of the printers
10508 to list.
10509
10510 @kindex disable pretty-printer
10511 @item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
10512 Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
10513 A disabled pretty-printer is not forgotten, it may be enabled again later.
10514
10515 @kindex enable pretty-printer
10516 @item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
10517 Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
10518 @end table
10519
10520 Example:
10521
10522 Suppose we have three pretty-printers installed: one from library1.so
10523 named @code{foo} that prints objects of type @code{foo}, and
10524 another from library2.so named @code{bar} that prints two types of objects,
10525 @code{bar1} and @code{bar2}.
10526
10527 @smallexample
10528 (gdb) info pretty-printer
10529 library1.so:
10530 foo
10531 library2.so:
10532 bar
10533 bar1
10534 bar2
10535 (gdb) info pretty-printer library2
10536 library2.so:
10537 bar
10538 bar1
10539 bar2
10540 (gdb) disable pretty-printer library1
10541 1 printer disabled
10542 2 of 3 printers enabled
10543 (gdb) info pretty-printer
10544 library1.so:
10545 foo [disabled]
10546 library2.so:
10547 bar
10548 bar1
10549 bar2
10550 (gdb) disable pretty-printer library2 bar:bar1
10551 1 printer disabled
10552 1 of 3 printers enabled
10553 (gdb) info pretty-printer library2
10554 library1.so:
10555 foo [disabled]
10556 library2.so:
10557 bar
10558 bar1 [disabled]
10559 bar2
10560 (gdb) disable pretty-printer library2 bar
10561 1 printer disabled
10562 0 of 3 printers enabled
10563 (gdb) info pretty-printer library2
10564 library1.so:
10565 foo [disabled]
10566 library2.so:
10567 bar [disabled]
10568 bar1 [disabled]
10569 bar2
10570 @end smallexample
10571
10572 Note that for @code{bar} the entire printer can be disabled,
10573 as can each individual subprinter.
10574
10575 @node Value History
10576 @section Value History
10577
10578 @cindex value history
10579 @cindex history of values printed by @value{GDBN}
10580 Values printed by the @code{print} command are saved in the @value{GDBN}
10581 @dfn{value history}. This allows you to refer to them in other expressions.
10582 Values are kept until the symbol table is re-read or discarded
10583 (for example with the @code{file} or @code{symbol-file} commands).
10584 When the symbol table changes, the value history is discarded,
10585 since the values may contain pointers back to the types defined in the
10586 symbol table.
10587
10588 @cindex @code{$}
10589 @cindex @code{$$}
10590 @cindex history number
10591 The values printed are given @dfn{history numbers} by which you can
10592 refer to them. These are successive integers starting with one.
10593 @code{print} shows you the history number assigned to a value by
10594 printing @samp{$@var{num} = } before the value; here @var{num} is the
10595 history number.
10596
10597 To refer to any previous value, use @samp{$} followed by the value's
10598 history number. The way @code{print} labels its output is designed to
10599 remind you of this. Just @code{$} refers to the most recent value in
10600 the history, and @code{$$} refers to the value before that.
10601 @code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
10602 is the value just prior to @code{$$}, @code{$$1} is equivalent to
10603 @code{$$}, and @code{$$0} is equivalent to @code{$}.
10604
10605 For example, suppose you have just printed a pointer to a structure and
10606 want to see the contents of the structure. It suffices to type
10607
10608 @smallexample
10609 p *$
10610 @end smallexample
10611
10612 If you have a chain of structures where the component @code{next} points
10613 to the next one, you can print the contents of the next one with this:
10614
10615 @smallexample
10616 p *$.next
10617 @end smallexample
10618
10619 @noindent
10620 You can print successive links in the chain by repeating this
10621 command---which you can do by just typing @key{RET}.
10622
10623 Note that the history records values, not expressions. If the value of
10624 @code{x} is 4 and you type these commands:
10625
10626 @smallexample
10627 print x
10628 set x=5
10629 @end smallexample
10630
10631 @noindent
10632 then the value recorded in the value history by the @code{print} command
10633 remains 4 even though the value of @code{x} has changed.
10634
10635 @table @code
10636 @kindex show values
10637 @item show values
10638 Print the last ten values in the value history, with their item numbers.
10639 This is like @samp{p@ $$9} repeated ten times, except that @code{show
10640 values} does not change the history.
10641
10642 @item show values @var{n}
10643 Print ten history values centered on history item number @var{n}.
10644
10645 @item show values +
10646 Print ten history values just after the values last printed. If no more
10647 values are available, @code{show values +} produces no display.
10648 @end table
10649
10650 Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
10651 same effect as @samp{show values +}.
10652
10653 @node Convenience Vars
10654 @section Convenience Variables
10655
10656 @cindex convenience variables
10657 @cindex user-defined variables
10658 @value{GDBN} provides @dfn{convenience variables} that you can use within
10659 @value{GDBN} to hold on to a value and refer to it later. These variables
10660 exist entirely within @value{GDBN}; they are not part of your program, and
10661 setting a convenience variable has no direct effect on further execution
10662 of your program. That is why you can use them freely.
10663
10664 Convenience variables are prefixed with @samp{$}. Any name preceded by
10665 @samp{$} can be used for a convenience variable, unless it is one of
10666 the predefined machine-specific register names (@pxref{Registers, ,Registers}).
10667 (Value history references, in contrast, are @emph{numbers} preceded
10668 by @samp{$}. @xref{Value History, ,Value History}.)
10669
10670 You can save a value in a convenience variable with an assignment
10671 expression, just as you would set a variable in your program.
10672 For example:
10673
10674 @smallexample
10675 set $foo = *object_ptr
10676 @end smallexample
10677
10678 @noindent
10679 would save in @code{$foo} the value contained in the object pointed to by
10680 @code{object_ptr}.
10681
10682 Using a convenience variable for the first time creates it, but its
10683 value is @code{void} until you assign a new value. You can alter the
10684 value with another assignment at any time.
10685
10686 Convenience variables have no fixed types. You can assign a convenience
10687 variable any type of value, including structures and arrays, even if
10688 that variable already has a value of a different type. The convenience
10689 variable, when used as an expression, has the type of its current value.
10690
10691 @table @code
10692 @kindex show convenience
10693 @cindex show all user variables and functions
10694 @item show convenience
10695 Print a list of convenience variables used so far, and their values,
10696 as well as a list of the convenience functions.
10697 Abbreviated @code{show conv}.
10698
10699 @kindex init-if-undefined
10700 @cindex convenience variables, initializing
10701 @item init-if-undefined $@var{variable} = @var{expression}
10702 Set a convenience variable if it has not already been set. This is useful
10703 for user-defined commands that keep some state. It is similar, in concept,
10704 to using local static variables with initializers in C (except that
10705 convenience variables are global). It can also be used to allow users to
10706 override default values used in a command script.
10707
10708 If the variable is already defined then the expression is not evaluated so
10709 any side-effects do not occur.
10710 @end table
10711
10712 One of the ways to use a convenience variable is as a counter to be
10713 incremented or a pointer to be advanced. For example, to print
10714 a field from successive elements of an array of structures:
10715
10716 @smallexample
10717 set $i = 0
10718 print bar[$i++]->contents
10719 @end smallexample
10720
10721 @noindent
10722 Repeat that command by typing @key{RET}.
10723
10724 Some convenience variables are created automatically by @value{GDBN} and given
10725 values likely to be useful.
10726
10727 @table @code
10728 @vindex $_@r{, convenience variable}
10729 @item $_
10730 The variable @code{$_} is automatically set by the @code{x} command to
10731 the last address examined (@pxref{Memory, ,Examining Memory}). Other
10732 commands which provide a default address for @code{x} to examine also
10733 set @code{$_} to that address; these commands include @code{info line}
10734 and @code{info breakpoint}. The type of @code{$_} is @code{void *}
10735 except when set by the @code{x} command, in which case it is a pointer
10736 to the type of @code{$__}.
10737
10738 @vindex $__@r{, convenience variable}
10739 @item $__
10740 The variable @code{$__} is automatically set by the @code{x} command
10741 to the value found in the last address examined. Its type is chosen
10742 to match the format in which the data was printed.
10743
10744 @item $_exitcode
10745 @vindex $_exitcode@r{, convenience variable}
10746 When the program being debugged terminates normally, @value{GDBN}
10747 automatically sets this variable to the exit code of the program, and
10748 resets @code{$_exitsignal} to @code{void}.
10749
10750 @item $_exitsignal
10751 @vindex $_exitsignal@r{, convenience variable}
10752 When the program being debugged dies due to an uncaught signal,
10753 @value{GDBN} automatically sets this variable to that signal's number,
10754 and resets @code{$_exitcode} to @code{void}.
10755
10756 To distinguish between whether the program being debugged has exited
10757 (i.e., @code{$_exitcode} is not @code{void}) or signalled (i.e.,
10758 @code{$_exitsignal} is not @code{void}), the convenience function
10759 @code{$_isvoid} can be used (@pxref{Convenience Funs,, Convenience
10760 Functions}). For example, considering the following source code:
10761
10762 @smallexample
10763 #include <signal.h>
10764
10765 int
10766 main (int argc, char *argv[])
10767 @{
10768 raise (SIGALRM);
10769 return 0;
10770 @}
10771 @end smallexample
10772
10773 A valid way of telling whether the program being debugged has exited
10774 or signalled would be:
10775
10776 @smallexample
10777 (@value{GDBP}) define has_exited_or_signalled
10778 Type commands for definition of ``has_exited_or_signalled''.
10779 End with a line saying just ``end''.
10780 >if $_isvoid ($_exitsignal)
10781 >echo The program has exited\n
10782 >else
10783 >echo The program has signalled\n
10784 >end
10785 >end
10786 (@value{GDBP}) run
10787 Starting program:
10788
10789 Program terminated with signal SIGALRM, Alarm clock.
10790 The program no longer exists.
10791 (@value{GDBP}) has_exited_or_signalled
10792 The program has signalled
10793 @end smallexample
10794
10795 As can be seen, @value{GDBN} correctly informs that the program being
10796 debugged has signalled, since it calls @code{raise} and raises a
10797 @code{SIGALRM} signal. If the program being debugged had not called
10798 @code{raise}, then @value{GDBN} would report a normal exit:
10799
10800 @smallexample
10801 (@value{GDBP}) has_exited_or_signalled
10802 The program has exited
10803 @end smallexample
10804
10805 @item $_exception
10806 The variable @code{$_exception} is set to the exception object being
10807 thrown at an exception-related catchpoint. @xref{Set Catchpoints}.
10808
10809 @item $_probe_argc
10810 @itemx $_probe_arg0@dots{}$_probe_arg11
10811 Arguments to a static probe. @xref{Static Probe Points}.
10812
10813 @item $_sdata
10814 @vindex $_sdata@r{, inspect, convenience variable}
10815 The variable @code{$_sdata} contains extra collected static tracepoint
10816 data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that
10817 @code{$_sdata} could be empty, if not inspecting a trace buffer, or
10818 if extra static tracepoint data has not been collected.
10819
10820 @item $_siginfo
10821 @vindex $_siginfo@r{, convenience variable}
10822 The variable @code{$_siginfo} contains extra signal information
10823 (@pxref{extra signal information}). Note that @code{$_siginfo}
10824 could be empty, if the application has not yet received any signals.
10825 For example, it will be empty before you execute the @code{run} command.
10826
10827 @item $_tlb
10828 @vindex $_tlb@r{, convenience variable}
10829 The variable @code{$_tlb} is automatically set when debugging
10830 applications running on MS-Windows in native mode or connected to
10831 gdbserver that supports the @code{qGetTIBAddr} request.
10832 @xref{General Query Packets}.
10833 This variable contains the address of the thread information block.
10834
10835 @item $_inferior
10836 The number of the current inferior. @xref{Inferiors and
10837 Programs, ,Debugging Multiple Inferiors and Programs}.
10838
10839 @item $_thread
10840 The thread number of the current thread. @xref{thread numbers}.
10841
10842 @item $_gthread
10843 The global number of the current thread. @xref{global thread numbers}.
10844
10845 @end table
10846
10847 @node Convenience Funs
10848 @section Convenience Functions
10849
10850 @cindex convenience functions
10851 @value{GDBN} also supplies some @dfn{convenience functions}. These
10852 have a syntax similar to convenience variables. A convenience
10853 function can be used in an expression just like an ordinary function;
10854 however, a convenience function is implemented internally to
10855 @value{GDBN}.
10856
10857 These functions do not require @value{GDBN} to be configured with
10858 @code{Python} support, which means that they are always available.
10859
10860 @table @code
10861
10862 @item $_isvoid (@var{expr})
10863 @findex $_isvoid@r{, convenience function}
10864 Return one if the expression @var{expr} is @code{void}. Otherwise it
10865 returns zero.
10866
10867 A @code{void} expression is an expression where the type of the result
10868 is @code{void}. For example, you can examine a convenience variable
10869 (see @ref{Convenience Vars,, Convenience Variables}) to check whether
10870 it is @code{void}:
10871
10872 @smallexample
10873 (@value{GDBP}) print $_exitcode
10874 $1 = void
10875 (@value{GDBP}) print $_isvoid ($_exitcode)
10876 $2 = 1
10877 (@value{GDBP}) run
10878 Starting program: ./a.out
10879 [Inferior 1 (process 29572) exited normally]
10880 (@value{GDBP}) print $_exitcode
10881 $3 = 0
10882 (@value{GDBP}) print $_isvoid ($_exitcode)
10883 $4 = 0
10884 @end smallexample
10885
10886 In the example above, we used @code{$_isvoid} to check whether
10887 @code{$_exitcode} is @code{void} before and after the execution of the
10888 program being debugged. Before the execution there is no exit code to
10889 be examined, therefore @code{$_exitcode} is @code{void}. After the
10890 execution the program being debugged returned zero, therefore
10891 @code{$_exitcode} is zero, which means that it is not @code{void}
10892 anymore.
10893
10894 The @code{void} expression can also be a call of a function from the
10895 program being debugged. For example, given the following function:
10896
10897 @smallexample
10898 void
10899 foo (void)
10900 @{
10901 @}
10902 @end smallexample
10903
10904 The result of calling it inside @value{GDBN} is @code{void}:
10905
10906 @smallexample
10907 (@value{GDBP}) print foo ()
10908 $1 = void
10909 (@value{GDBP}) print $_isvoid (foo ())
10910 $2 = 1
10911 (@value{GDBP}) set $v = foo ()
10912 (@value{GDBP}) print $v
10913 $3 = void
10914 (@value{GDBP}) print $_isvoid ($v)
10915 $4 = 1
10916 @end smallexample
10917
10918 @end table
10919
10920 These functions require @value{GDBN} to be configured with
10921 @code{Python} support.
10922
10923 @table @code
10924
10925 @item $_memeq(@var{buf1}, @var{buf2}, @var{length})
10926 @findex $_memeq@r{, convenience function}
10927 Returns one if the @var{length} bytes at the addresses given by
10928 @var{buf1} and @var{buf2} are equal.
10929 Otherwise it returns zero.
10930
10931 @item $_regex(@var{str}, @var{regex})
10932 @findex $_regex@r{, convenience function}
10933 Returns one if the string @var{str} matches the regular expression
10934 @var{regex}. Otherwise it returns zero.
10935 The syntax of the regular expression is that specified by @code{Python}'s
10936 regular expression support.
10937
10938 @item $_streq(@var{str1}, @var{str2})
10939 @findex $_streq@r{, convenience function}
10940 Returns one if the strings @var{str1} and @var{str2} are equal.
10941 Otherwise it returns zero.
10942
10943 @item $_strlen(@var{str})
10944 @findex $_strlen@r{, convenience function}
10945 Returns the length of string @var{str}.
10946
10947 @item $_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]})
10948 @findex $_caller_is@r{, convenience function}
10949 Returns one if the calling function's name is equal to @var{name}.
10950 Otherwise it returns zero.
10951
10952 If the optional argument @var{number_of_frames} is provided,
10953 it is the number of frames up in the stack to look.
10954 The default is 1.
10955
10956 Example:
10957
10958 @smallexample
10959 (gdb) backtrace
10960 #0 bottom_func ()
10961 at testsuite/gdb.python/py-caller-is.c:21
10962 #1 0x00000000004005a0 in middle_func ()
10963 at testsuite/gdb.python/py-caller-is.c:27
10964 #2 0x00000000004005ab in top_func ()
10965 at testsuite/gdb.python/py-caller-is.c:33
10966 #3 0x00000000004005b6 in main ()
10967 at testsuite/gdb.python/py-caller-is.c:39
10968 (gdb) print $_caller_is ("middle_func")
10969 $1 = 1
10970 (gdb) print $_caller_is ("top_func", 2)
10971 $1 = 1
10972 @end smallexample
10973
10974 @item $_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]})
10975 @findex $_caller_matches@r{, convenience function}
10976 Returns one if the calling function's name matches the regular expression
10977 @var{regexp}. Otherwise it returns zero.
10978
10979 If the optional argument @var{number_of_frames} is provided,
10980 it is the number of frames up in the stack to look.
10981 The default is 1.
10982
10983 @item $_any_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]})
10984 @findex $_any_caller_is@r{, convenience function}
10985 Returns one if any calling function's name is equal to @var{name}.
10986 Otherwise it returns zero.
10987
10988 If the optional argument @var{number_of_frames} is provided,
10989 it is the number of frames up in the stack to look.
10990 The default is 1.
10991
10992 This function differs from @code{$_caller_is} in that this function
10993 checks all stack frames from the immediate caller to the frame specified
10994 by @var{number_of_frames}, whereas @code{$_caller_is} only checks the
10995 frame specified by @var{number_of_frames}.
10996
10997 @item $_any_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]})
10998 @findex $_any_caller_matches@r{, convenience function}
10999 Returns one if any calling function's name matches the regular expression
11000 @var{regexp}. Otherwise it returns zero.
11001
11002 If the optional argument @var{number_of_frames} is provided,
11003 it is the number of frames up in the stack to look.
11004 The default is 1.
11005
11006 This function differs from @code{$_caller_matches} in that this function
11007 checks all stack frames from the immediate caller to the frame specified
11008 by @var{number_of_frames}, whereas @code{$_caller_matches} only checks the
11009 frame specified by @var{number_of_frames}.
11010
11011 @item $_as_string(@var{value})
11012 @findex $_as_string@r{, convenience function}
11013 Return the string representation of @var{value}.
11014
11015 This function is useful to obtain the textual label (enumerator) of an
11016 enumeration value. For example, assuming the variable @var{node} is of
11017 an enumerated type:
11018
11019 @smallexample
11020 (gdb) printf "Visiting node of type %s\n", $_as_string(node)
11021 Visiting node of type NODE_INTEGER
11022 @end smallexample
11023
11024 @end table
11025
11026 @value{GDBN} provides the ability to list and get help on
11027 convenience functions.
11028
11029 @table @code
11030 @item help function
11031 @kindex help function
11032 @cindex show all convenience functions
11033 Print a list of all convenience functions.
11034 @end table
11035
11036 @node Registers
11037 @section Registers
11038
11039 @cindex registers
11040 You can refer to machine register contents, in expressions, as variables
11041 with names starting with @samp{$}. The names of registers are different
11042 for each machine; use @code{info registers} to see the names used on
11043 your machine.
11044
11045 @table @code
11046 @kindex info registers
11047 @item info registers
11048 Print the names and values of all registers except floating-point
11049 and vector registers (in the selected stack frame).
11050
11051 @kindex info all-registers
11052 @cindex floating point registers
11053 @item info all-registers
11054 Print the names and values of all registers, including floating-point
11055 and vector registers (in the selected stack frame).
11056
11057 @item info registers @var{reggroup} @dots{}
11058 Print the name and value of the registers in each of the specified
11059 @var{reggroup}s. The @var{reggoup} can be any of those returned by
11060 @code{maint print reggroups} (@pxref{Maintenance Commands}).
11061
11062 @item info registers @var{regname} @dots{}
11063 Print the @dfn{relativized} value of each specified register @var{regname}.
11064 As discussed in detail below, register values are normally relative to
11065 the selected stack frame. The @var{regname} may be any register name valid on
11066 the machine you are using, with or without the initial @samp{$}.
11067 @end table
11068
11069 @anchor{standard registers}
11070 @cindex stack pointer register
11071 @cindex program counter register
11072 @cindex process status register
11073 @cindex frame pointer register
11074 @cindex standard registers
11075 @value{GDBN} has four ``standard'' register names that are available (in
11076 expressions) on most machines---whenever they do not conflict with an
11077 architecture's canonical mnemonics for registers. The register names
11078 @code{$pc} and @code{$sp} are used for the program counter register and
11079 the stack pointer. @code{$fp} is used for a register that contains a
11080 pointer to the current stack frame, and @code{$ps} is used for a
11081 register that contains the processor status. For example,
11082 you could print the program counter in hex with
11083
11084 @smallexample
11085 p/x $pc
11086 @end smallexample
11087
11088 @noindent
11089 or print the instruction to be executed next with
11090
11091 @smallexample
11092 x/i $pc
11093 @end smallexample
11094
11095 @noindent
11096 or add four to the stack pointer@footnote{This is a way of removing
11097 one word from the stack, on machines where stacks grow downward in
11098 memory (most machines, nowadays). This assumes that the innermost
11099 stack frame is selected; setting @code{$sp} is not allowed when other
11100 stack frames are selected. To pop entire frames off the stack,
11101 regardless of machine architecture, use @code{return};
11102 see @ref{Returning, ,Returning from a Function}.} with
11103
11104 @smallexample
11105 set $sp += 4
11106 @end smallexample
11107
11108 Whenever possible, these four standard register names are available on
11109 your machine even though the machine has different canonical mnemonics,
11110 so long as there is no conflict. The @code{info registers} command
11111 shows the canonical names. For example, on the SPARC, @code{info
11112 registers} displays the processor status register as @code{$psr} but you
11113 can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
11114 is an alias for the @sc{eflags} register.
11115
11116 @value{GDBN} always considers the contents of an ordinary register as an
11117 integer when the register is examined in this way. Some machines have
11118 special registers which can hold nothing but floating point; these
11119 registers are considered to have floating point values. There is no way
11120 to refer to the contents of an ordinary register as floating point value
11121 (although you can @emph{print} it as a floating point value with
11122 @samp{print/f $@var{regname}}).
11123
11124 Some registers have distinct ``raw'' and ``virtual'' data formats. This
11125 means that the data format in which the register contents are saved by
11126 the operating system is not the same one that your program normally
11127 sees. For example, the registers of the 68881 floating point
11128 coprocessor are always saved in ``extended'' (raw) format, but all C
11129 programs expect to work with ``double'' (virtual) format. In such
11130 cases, @value{GDBN} normally works with the virtual format only (the format
11131 that makes sense for your program), but the @code{info registers} command
11132 prints the data in both formats.
11133
11134 @cindex SSE registers (x86)
11135 @cindex MMX registers (x86)
11136 Some machines have special registers whose contents can be interpreted
11137 in several different ways. For example, modern x86-based machines
11138 have SSE and MMX registers that can hold several values packed
11139 together in several different formats. @value{GDBN} refers to such
11140 registers in @code{struct} notation:
11141
11142 @smallexample
11143 (@value{GDBP}) print $xmm1
11144 $1 = @{
11145 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
11146 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
11147 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
11148 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
11149 v4_int32 = @{0, 20657912, 11, 13@},
11150 v2_int64 = @{88725056443645952, 55834574859@},
11151 uint128 = 0x0000000d0000000b013b36f800000000
11152 @}
11153 @end smallexample
11154
11155 @noindent
11156 To set values of such registers, you need to tell @value{GDBN} which
11157 view of the register you wish to change, as if you were assigning
11158 value to a @code{struct} member:
11159
11160 @smallexample
11161 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
11162 @end smallexample
11163
11164 Normally, register values are relative to the selected stack frame
11165 (@pxref{Selection, ,Selecting a Frame}). This means that you get the
11166 value that the register would contain if all stack frames farther in
11167 were exited and their saved registers restored. In order to see the
11168 true contents of hardware registers, you must select the innermost
11169 frame (with @samp{frame 0}).
11170
11171 @cindex caller-saved registers
11172 @cindex call-clobbered registers
11173 @cindex volatile registers
11174 @cindex <not saved> values
11175 Usually ABIs reserve some registers as not needed to be saved by the
11176 callee (a.k.a.: ``caller-saved'', ``call-clobbered'' or ``volatile''
11177 registers). It may therefore not be possible for @value{GDBN} to know
11178 the value a register had before the call (in other words, in the outer
11179 frame), if the register value has since been changed by the callee.
11180 @value{GDBN} tries to deduce where the inner frame saved
11181 (``callee-saved'') registers, from the debug info, unwind info, or the
11182 machine code generated by your compiler. If some register is not
11183 saved, and @value{GDBN} knows the register is ``caller-saved'' (via
11184 its own knowledge of the ABI, or because the debug/unwind info
11185 explicitly says the register's value is undefined), @value{GDBN}
11186 displays @w{@samp{<not saved>}} as the register's value. With targets
11187 that @value{GDBN} has no knowledge of the register saving convention,
11188 if a register was not saved by the callee, then its value and location
11189 in the outer frame are assumed to be the same of the inner frame.
11190 This is usually harmless, because if the register is call-clobbered,
11191 the caller either does not care what is in the register after the
11192 call, or has code to restore the value that it does care about. Note,
11193 however, that if you change such a register in the outer frame, you
11194 may also be affecting the inner frame. Also, the more ``outer'' the
11195 frame is you're looking at, the more likely a call-clobbered
11196 register's value is to be wrong, in the sense that it doesn't actually
11197 represent the value the register had just before the call.
11198
11199 @node Floating Point Hardware
11200 @section Floating Point Hardware
11201 @cindex floating point
11202
11203 Depending on the configuration, @value{GDBN} may be able to give
11204 you more information about the status of the floating point hardware.
11205
11206 @table @code
11207 @kindex info float
11208 @item info float
11209 Display hardware-dependent information about the floating
11210 point unit. The exact contents and layout vary depending on the
11211 floating point chip. Currently, @samp{info float} is supported on
11212 the ARM and x86 machines.
11213 @end table
11214
11215 @node Vector Unit
11216 @section Vector Unit
11217 @cindex vector unit
11218
11219 Depending on the configuration, @value{GDBN} may be able to give you
11220 more information about the status of the vector unit.
11221
11222 @table @code
11223 @kindex info vector
11224 @item info vector
11225 Display information about the vector unit. The exact contents and
11226 layout vary depending on the hardware.
11227 @end table
11228
11229 @node OS Information
11230 @section Operating System Auxiliary Information
11231 @cindex OS information
11232
11233 @value{GDBN} provides interfaces to useful OS facilities that can help
11234 you debug your program.
11235
11236 @cindex auxiliary vector
11237 @cindex vector, auxiliary
11238 Some operating systems supply an @dfn{auxiliary vector} to programs at
11239 startup. This is akin to the arguments and environment that you
11240 specify for a program, but contains a system-dependent variety of
11241 binary values that tell system libraries important details about the
11242 hardware, operating system, and process. Each value's purpose is
11243 identified by an integer tag; the meanings are well-known but system-specific.
11244 Depending on the configuration and operating system facilities,
11245 @value{GDBN} may be able to show you this information. For remote
11246 targets, this functionality may further depend on the remote stub's
11247 support of the @samp{qXfer:auxv:read} packet, see
11248 @ref{qXfer auxiliary vector read}.
11249
11250 @table @code
11251 @kindex info auxv
11252 @item info auxv
11253 Display the auxiliary vector of the inferior, which can be either a
11254 live process or a core dump file. @value{GDBN} prints each tag value
11255 numerically, and also shows names and text descriptions for recognized
11256 tags. Some values in the vector are numbers, some bit masks, and some
11257 pointers to strings or other data. @value{GDBN} displays each value in the
11258 most appropriate form for a recognized tag, and in hexadecimal for
11259 an unrecognized tag.
11260 @end table
11261
11262 On some targets, @value{GDBN} can access operating system-specific
11263 information and show it to you. The types of information available
11264 will differ depending on the type of operating system running on the
11265 target. The mechanism used to fetch the data is described in
11266 @ref{Operating System Information}. For remote targets, this
11267 functionality depends on the remote stub's support of the
11268 @samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
11269
11270 @table @code
11271 @kindex info os
11272 @item info os @var{infotype}
11273
11274 Display OS information of the requested type.
11275
11276 On @sc{gnu}/Linux, the following values of @var{infotype} are valid:
11277
11278 @anchor{linux info os infotypes}
11279 @table @code
11280 @kindex info os cpus
11281 @item cpus
11282 Display the list of all CPUs/cores. For each CPU/core, @value{GDBN} prints
11283 the available fields from /proc/cpuinfo. For each supported architecture
11284 different fields are available. Two common entries are processor which gives
11285 CPU number and bogomips; a system constant that is calculated during
11286 kernel initialization.
11287
11288 @kindex info os files
11289 @item files
11290 Display the list of open file descriptors on the target. For each
11291 file descriptor, @value{GDBN} prints the identifier of the process
11292 owning the descriptor, the command of the owning process, the value
11293 of the descriptor, and the target of the descriptor.
11294
11295 @kindex info os modules
11296 @item modules
11297 Display the list of all loaded kernel modules on the target. For each
11298 module, @value{GDBN} prints the module name, the size of the module in
11299 bytes, the number of times the module is used, the dependencies of the
11300 module, the status of the module, and the address of the loaded module
11301 in memory.
11302
11303 @kindex info os msg
11304 @item msg
11305 Display the list of all System V message queues on the target. For each
11306 message queue, @value{GDBN} prints the message queue key, the message
11307 queue identifier, the access permissions, the current number of bytes
11308 on the queue, the current number of messages on the queue, the processes
11309 that last sent and received a message on the queue, the user and group
11310 of the owner and creator of the message queue, the times at which a
11311 message was last sent and received on the queue, and the time at which
11312 the message queue was last changed.
11313
11314 @kindex info os processes
11315 @item processes
11316 Display the list of processes on the target. For each process,
11317 @value{GDBN} prints the process identifier, the name of the user, the
11318 command corresponding to the process, and the list of processor cores
11319 that the process is currently running on. (To understand what these
11320 properties mean, for this and the following info types, please consult
11321 the general @sc{gnu}/Linux documentation.)
11322
11323 @kindex info os procgroups
11324 @item procgroups
11325 Display the list of process groups on the target. For each process,
11326 @value{GDBN} prints the identifier of the process group that it belongs
11327 to, the command corresponding to the process group leader, the process
11328 identifier, and the command line of the process. The list is sorted
11329 first by the process group identifier, then by the process identifier,
11330 so that processes belonging to the same process group are grouped together
11331 and the process group leader is listed first.
11332
11333 @kindex info os semaphores
11334 @item semaphores
11335 Display the list of all System V semaphore sets on the target. For each
11336 semaphore set, @value{GDBN} prints the semaphore set key, the semaphore
11337 set identifier, the access permissions, the number of semaphores in the
11338 set, the user and group of the owner and creator of the semaphore set,
11339 and the times at which the semaphore set was operated upon and changed.
11340
11341 @kindex info os shm
11342 @item shm
11343 Display the list of all System V shared-memory regions on the target.
11344 For each shared-memory region, @value{GDBN} prints the region key,
11345 the shared-memory identifier, the access permissions, the size of the
11346 region, the process that created the region, the process that last
11347 attached to or detached from the region, the current number of live
11348 attaches to the region, and the times at which the region was last
11349 attached to, detach from, and changed.
11350
11351 @kindex info os sockets
11352 @item sockets
11353 Display the list of Internet-domain sockets on the target. For each
11354 socket, @value{GDBN} prints the address and port of the local and
11355 remote endpoints, the current state of the connection, the creator of
11356 the socket, the IP address family of the socket, and the type of the
11357 connection.
11358
11359 @kindex info os threads
11360 @item threads
11361 Display the list of threads running on the target. For each thread,
11362 @value{GDBN} prints the identifier of the process that the thread
11363 belongs to, the command of the process, the thread identifier, and the
11364 processor core that it is currently running on. The main thread of a
11365 process is not listed.
11366 @end table
11367
11368 @item info os
11369 If @var{infotype} is omitted, then list the possible values for
11370 @var{infotype} and the kind of OS information available for each
11371 @var{infotype}. If the target does not return a list of possible
11372 types, this command will report an error.
11373 @end table
11374
11375 @node Memory Region Attributes
11376 @section Memory Region Attributes
11377 @cindex memory region attributes
11378
11379 @dfn{Memory region attributes} allow you to describe special handling
11380 required by regions of your target's memory. @value{GDBN} uses
11381 attributes to determine whether to allow certain types of memory
11382 accesses; whether to use specific width accesses; and whether to cache
11383 target memory. By default the description of memory regions is
11384 fetched from the target (if the current target supports this), but the
11385 user can override the fetched regions.
11386
11387 Defined memory regions can be individually enabled and disabled. When a
11388 memory region is disabled, @value{GDBN} uses the default attributes when
11389 accessing memory in that region. Similarly, if no memory regions have
11390 been defined, @value{GDBN} uses the default attributes when accessing
11391 all memory.
11392
11393 When a memory region is defined, it is given a number to identify it;
11394 to enable, disable, or remove a memory region, you specify that number.
11395
11396 @table @code
11397 @kindex mem
11398 @item mem @var{lower} @var{upper} @var{attributes}@dots{}
11399 Define a memory region bounded by @var{lower} and @var{upper} with
11400 attributes @var{attributes}@dots{}, and add it to the list of regions
11401 monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
11402 case: it is treated as the target's maximum memory address.
11403 (0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
11404
11405 @item mem auto
11406 Discard any user changes to the memory regions and use target-supplied
11407 regions, if available, or no regions if the target does not support.
11408
11409 @kindex delete mem
11410 @item delete mem @var{nums}@dots{}
11411 Remove memory regions @var{nums}@dots{} from the list of regions
11412 monitored by @value{GDBN}.
11413
11414 @kindex disable mem
11415 @item disable mem @var{nums}@dots{}
11416 Disable monitoring of memory regions @var{nums}@dots{}.
11417 A disabled memory region is not forgotten.
11418 It may be enabled again later.
11419
11420 @kindex enable mem
11421 @item enable mem @var{nums}@dots{}
11422 Enable monitoring of memory regions @var{nums}@dots{}.
11423
11424 @kindex info mem
11425 @item info mem
11426 Print a table of all defined memory regions, with the following columns
11427 for each region:
11428
11429 @table @emph
11430 @item Memory Region Number
11431 @item Enabled or Disabled.
11432 Enabled memory regions are marked with @samp{y}.
11433 Disabled memory regions are marked with @samp{n}.
11434
11435 @item Lo Address
11436 The address defining the inclusive lower bound of the memory region.
11437
11438 @item Hi Address
11439 The address defining the exclusive upper bound of the memory region.
11440
11441 @item Attributes
11442 The list of attributes set for this memory region.
11443 @end table
11444 @end table
11445
11446
11447 @subsection Attributes
11448
11449 @subsubsection Memory Access Mode
11450 The access mode attributes set whether @value{GDBN} may make read or
11451 write accesses to a memory region.
11452
11453 While these attributes prevent @value{GDBN} from performing invalid
11454 memory accesses, they do nothing to prevent the target system, I/O DMA,
11455 etc.@: from accessing memory.
11456
11457 @table @code
11458 @item ro
11459 Memory is read only.
11460 @item wo
11461 Memory is write only.
11462 @item rw
11463 Memory is read/write. This is the default.
11464 @end table
11465
11466 @subsubsection Memory Access Size
11467 The access size attribute tells @value{GDBN} to use specific sized
11468 accesses in the memory region. Often memory mapped device registers
11469 require specific sized accesses. If no access size attribute is
11470 specified, @value{GDBN} may use accesses of any size.
11471
11472 @table @code
11473 @item 8
11474 Use 8 bit memory accesses.
11475 @item 16
11476 Use 16 bit memory accesses.
11477 @item 32
11478 Use 32 bit memory accesses.
11479 @item 64
11480 Use 64 bit memory accesses.
11481 @end table
11482
11483 @c @subsubsection Hardware/Software Breakpoints
11484 @c The hardware/software breakpoint attributes set whether @value{GDBN}
11485 @c will use hardware or software breakpoints for the internal breakpoints
11486 @c used by the step, next, finish, until, etc. commands.
11487 @c
11488 @c @table @code
11489 @c @item hwbreak
11490 @c Always use hardware breakpoints
11491 @c @item swbreak (default)
11492 @c @end table
11493
11494 @subsubsection Data Cache
11495 The data cache attributes set whether @value{GDBN} will cache target
11496 memory. While this generally improves performance by reducing debug
11497 protocol overhead, it can lead to incorrect results because @value{GDBN}
11498 does not know about volatile variables or memory mapped device
11499 registers.
11500
11501 @table @code
11502 @item cache
11503 Enable @value{GDBN} to cache target memory.
11504 @item nocache
11505 Disable @value{GDBN} from caching target memory. This is the default.
11506 @end table
11507
11508 @subsection Memory Access Checking
11509 @value{GDBN} can be instructed to refuse accesses to memory that is
11510 not explicitly described. This can be useful if accessing such
11511 regions has undesired effects for a specific target, or to provide
11512 better error checking. The following commands control this behaviour.
11513
11514 @table @code
11515 @kindex set mem inaccessible-by-default
11516 @item set mem inaccessible-by-default [on|off]
11517 If @code{on} is specified, make @value{GDBN} treat memory not
11518 explicitly described by the memory ranges as non-existent and refuse accesses
11519 to such memory. The checks are only performed if there's at least one
11520 memory range defined. If @code{off} is specified, make @value{GDBN}
11521 treat the memory not explicitly described by the memory ranges as RAM.
11522 The default value is @code{on}.
11523 @kindex show mem inaccessible-by-default
11524 @item show mem inaccessible-by-default
11525 Show the current handling of accesses to unknown memory.
11526 @end table
11527
11528
11529 @c @subsubsection Memory Write Verification
11530 @c The memory write verification attributes set whether @value{GDBN}
11531 @c will re-reads data after each write to verify the write was successful.
11532 @c
11533 @c @table @code
11534 @c @item verify
11535 @c @item noverify (default)
11536 @c @end table
11537
11538 @node Dump/Restore Files
11539 @section Copy Between Memory and a File
11540 @cindex dump/restore files
11541 @cindex append data to a file
11542 @cindex dump data to a file
11543 @cindex restore data from a file
11544
11545 You can use the commands @code{dump}, @code{append}, and
11546 @code{restore} to copy data between target memory and a file. The
11547 @code{dump} and @code{append} commands write data to a file, and the
11548 @code{restore} command reads data from a file back into the inferior's
11549 memory. Files may be in binary, Motorola S-record, Intel hex,
11550 Tektronix Hex, or Verilog Hex format; however, @value{GDBN} can only
11551 append to binary files, and cannot read from Verilog Hex files.
11552
11553 @table @code
11554
11555 @kindex dump
11556 @item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
11557 @itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
11558 Dump the contents of memory from @var{start_addr} to @var{end_addr},
11559 or the value of @var{expr}, to @var{filename} in the given format.
11560
11561 The @var{format} parameter may be any one of:
11562 @table @code
11563 @item binary
11564 Raw binary form.
11565 @item ihex
11566 Intel hex format.
11567 @item srec
11568 Motorola S-record format.
11569 @item tekhex
11570 Tektronix Hex format.
11571 @item verilog
11572 Verilog Hex format.
11573 @end table
11574
11575 @value{GDBN} uses the same definitions of these formats as the
11576 @sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
11577 @var{format} is omitted, @value{GDBN} dumps the data in raw binary
11578 form.
11579
11580 @kindex append
11581 @item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
11582 @itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
11583 Append the contents of memory from @var{start_addr} to @var{end_addr},
11584 or the value of @var{expr}, to the file @var{filename}, in raw binary form.
11585 (@value{GDBN} can only append data to files in raw binary form.)
11586
11587 @kindex restore
11588 @item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
11589 Restore the contents of file @var{filename} into memory. The
11590 @code{restore} command can automatically recognize any known @sc{bfd}
11591 file format, except for raw binary. To restore a raw binary file you
11592 must specify the optional keyword @code{binary} after the filename.
11593
11594 If @var{bias} is non-zero, its value will be added to the addresses
11595 contained in the file. Binary files always start at address zero, so
11596 they will be restored at address @var{bias}. Other bfd files have
11597 a built-in location; they will be restored at offset @var{bias}
11598 from that location.
11599
11600 If @var{start} and/or @var{end} are non-zero, then only data between
11601 file offset @var{start} and file offset @var{end} will be restored.
11602 These offsets are relative to the addresses in the file, before
11603 the @var{bias} argument is applied.
11604
11605 @end table
11606
11607 @node Core File Generation
11608 @section How to Produce a Core File from Your Program
11609 @cindex dump core from inferior
11610
11611 A @dfn{core file} or @dfn{core dump} is a file that records the memory
11612 image of a running process and its process status (register values
11613 etc.). Its primary use is post-mortem debugging of a program that
11614 crashed while it ran outside a debugger. A program that crashes
11615 automatically produces a core file, unless this feature is disabled by
11616 the user. @xref{Files}, for information on invoking @value{GDBN} in
11617 the post-mortem debugging mode.
11618
11619 Occasionally, you may wish to produce a core file of the program you
11620 are debugging in order to preserve a snapshot of its state.
11621 @value{GDBN} has a special command for that.
11622
11623 @table @code
11624 @kindex gcore
11625 @kindex generate-core-file
11626 @item generate-core-file [@var{file}]
11627 @itemx gcore [@var{file}]
11628 Produce a core dump of the inferior process. The optional argument
11629 @var{file} specifies the file name where to put the core dump. If not
11630 specified, the file name defaults to @file{core.@var{pid}}, where
11631 @var{pid} is the inferior process ID.
11632
11633 Note that this command is implemented only for some systems (as of
11634 this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390).
11635
11636 On @sc{gnu}/Linux, this command can take into account the value of the
11637 file @file{/proc/@var{pid}/coredump_filter} when generating the core
11638 dump (@pxref{set use-coredump-filter}), and by default honors the
11639 @code{VM_DONTDUMP} flag for mappings where it is present in the file
11640 @file{/proc/@var{pid}/smaps} (@pxref{set dump-excluded-mappings}).
11641
11642 @kindex set use-coredump-filter
11643 @anchor{set use-coredump-filter}
11644 @item set use-coredump-filter on
11645 @itemx set use-coredump-filter off
11646 Enable or disable the use of the file
11647 @file{/proc/@var{pid}/coredump_filter} when generating core dump
11648 files. This file is used by the Linux kernel to decide what types of
11649 memory mappings will be dumped or ignored when generating a core dump
11650 file. @var{pid} is the process ID of a currently running process.
11651
11652 To make use of this feature, you have to write in the
11653 @file{/proc/@var{pid}/coredump_filter} file a value, in hexadecimal,
11654 which is a bit mask representing the memory mapping types. If a bit
11655 is set in the bit mask, then the memory mappings of the corresponding
11656 types will be dumped; otherwise, they will be ignored. This
11657 configuration is inherited by child processes. For more information
11658 about the bits that can be set in the
11659 @file{/proc/@var{pid}/coredump_filter} file, please refer to the
11660 manpage of @code{core(5)}.
11661
11662 By default, this option is @code{on}. If this option is turned
11663 @code{off}, @value{GDBN} does not read the @file{coredump_filter} file
11664 and instead uses the same default value as the Linux kernel in order
11665 to decide which pages will be dumped in the core dump file. This
11666 value is currently @code{0x33}, which means that bits @code{0}
11667 (anonymous private mappings), @code{1} (anonymous shared mappings),
11668 @code{4} (ELF headers) and @code{5} (private huge pages) are active.
11669 This will cause these memory mappings to be dumped automatically.
11670
11671 @kindex set dump-excluded-mappings
11672 @anchor{set dump-excluded-mappings}
11673 @item set dump-excluded-mappings on
11674 @itemx set dump-excluded-mappings off
11675 If @code{on} is specified, @value{GDBN} will dump memory mappings
11676 marked with the @code{VM_DONTDUMP} flag. This flag is represented in
11677 the file @file{/proc/@var{pid}/smaps} with the acronym @code{dd}.
11678
11679 The default value is @code{off}.
11680 @end table
11681
11682 @node Character Sets
11683 @section Character Sets
11684 @cindex character sets
11685 @cindex charset
11686 @cindex translating between character sets
11687 @cindex host character set
11688 @cindex target character set
11689
11690 If the program you are debugging uses a different character set to
11691 represent characters and strings than the one @value{GDBN} uses itself,
11692 @value{GDBN} can automatically translate between the character sets for
11693 you. The character set @value{GDBN} uses we call the @dfn{host
11694 character set}; the one the inferior program uses we call the
11695 @dfn{target character set}.
11696
11697 For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
11698 uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
11699 remote protocol (@pxref{Remote Debugging}) to debug a program
11700 running on an IBM mainframe, which uses the @sc{ebcdic} character set,
11701 then the host character set is Latin-1, and the target character set is
11702 @sc{ebcdic}. If you give @value{GDBN} the command @code{set
11703 target-charset EBCDIC-US}, then @value{GDBN} translates between
11704 @sc{ebcdic} and Latin 1 as you print character or string values, or use
11705 character and string literals in expressions.
11706
11707 @value{GDBN} has no way to automatically recognize which character set
11708 the inferior program uses; you must tell it, using the @code{set
11709 target-charset} command, described below.
11710
11711 Here are the commands for controlling @value{GDBN}'s character set
11712 support:
11713
11714 @table @code
11715 @item set target-charset @var{charset}
11716 @kindex set target-charset
11717 Set the current target character set to @var{charset}. To display the
11718 list of supported target character sets, type
11719 @kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
11720
11721 @item set host-charset @var{charset}
11722 @kindex set host-charset
11723 Set the current host character set to @var{charset}.
11724
11725 By default, @value{GDBN} uses a host character set appropriate to the
11726 system it is running on; you can override that default using the
11727 @code{set host-charset} command. On some systems, @value{GDBN} cannot
11728 automatically determine the appropriate host character set. In this
11729 case, @value{GDBN} uses @samp{UTF-8}.
11730
11731 @value{GDBN} can only use certain character sets as its host character
11732 set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}},
11733 @value{GDBN} will list the host character sets it supports.
11734
11735 @item set charset @var{charset}
11736 @kindex set charset
11737 Set the current host and target character sets to @var{charset}. As
11738 above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
11739 @value{GDBN} will list the names of the character sets that can be used
11740 for both host and target.
11741
11742 @item show charset
11743 @kindex show charset
11744 Show the names of the current host and target character sets.
11745
11746 @item show host-charset
11747 @kindex show host-charset
11748 Show the name of the current host character set.
11749
11750 @item show target-charset
11751 @kindex show target-charset
11752 Show the name of the current target character set.
11753
11754 @item set target-wide-charset @var{charset}
11755 @kindex set target-wide-charset
11756 Set the current target's wide character set to @var{charset}. This is
11757 the character set used by the target's @code{wchar_t} type. To
11758 display the list of supported wide character sets, type
11759 @kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
11760
11761 @item show target-wide-charset
11762 @kindex show target-wide-charset
11763 Show the name of the current target's wide character set.
11764 @end table
11765
11766 Here is an example of @value{GDBN}'s character set support in action.
11767 Assume that the following source code has been placed in the file
11768 @file{charset-test.c}:
11769
11770 @smallexample
11771 #include <stdio.h>
11772
11773 char ascii_hello[]
11774 = @{72, 101, 108, 108, 111, 44, 32, 119,
11775 111, 114, 108, 100, 33, 10, 0@};
11776 char ibm1047_hello[]
11777 = @{200, 133, 147, 147, 150, 107, 64, 166,
11778 150, 153, 147, 132, 90, 37, 0@};
11779
11780 main ()
11781 @{
11782 printf ("Hello, world!\n");
11783 @}
11784 @end smallexample
11785
11786 In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
11787 containing the string @samp{Hello, world!} followed by a newline,
11788 encoded in the @sc{ascii} and @sc{ibm1047} character sets.
11789
11790 We compile the program, and invoke the debugger on it:
11791
11792 @smallexample
11793 $ gcc -g charset-test.c -o charset-test
11794 $ gdb -nw charset-test
11795 GNU gdb 2001-12-19-cvs
11796 Copyright 2001 Free Software Foundation, Inc.
11797 @dots{}
11798 (@value{GDBP})
11799 @end smallexample
11800
11801 We can use the @code{show charset} command to see what character sets
11802 @value{GDBN} is currently using to interpret and display characters and
11803 strings:
11804
11805 @smallexample
11806 (@value{GDBP}) show charset
11807 The current host and target character set is `ISO-8859-1'.
11808 (@value{GDBP})
11809 @end smallexample
11810
11811 For the sake of printing this manual, let's use @sc{ascii} as our
11812 initial character set:
11813 @smallexample
11814 (@value{GDBP}) set charset ASCII
11815 (@value{GDBP}) show charset
11816 The current host and target character set is `ASCII'.
11817 (@value{GDBP})
11818 @end smallexample
11819
11820 Let's assume that @sc{ascii} is indeed the correct character set for our
11821 host system --- in other words, let's assume that if @value{GDBN} prints
11822 characters using the @sc{ascii} character set, our terminal will display
11823 them properly. Since our current target character set is also
11824 @sc{ascii}, the contents of @code{ascii_hello} print legibly:
11825
11826 @smallexample
11827 (@value{GDBP}) print ascii_hello
11828 $1 = 0x401698 "Hello, world!\n"
11829 (@value{GDBP}) print ascii_hello[0]
11830 $2 = 72 'H'
11831 (@value{GDBP})
11832 @end smallexample
11833
11834 @value{GDBN} uses the target character set for character and string
11835 literals you use in expressions:
11836
11837 @smallexample
11838 (@value{GDBP}) print '+'
11839 $3 = 43 '+'
11840 (@value{GDBP})
11841 @end smallexample
11842
11843 The @sc{ascii} character set uses the number 43 to encode the @samp{+}
11844 character.
11845
11846 @value{GDBN} relies on the user to tell it which character set the
11847 target program uses. If we print @code{ibm1047_hello} while our target
11848 character set is still @sc{ascii}, we get jibberish:
11849
11850 @smallexample
11851 (@value{GDBP}) print ibm1047_hello
11852 $4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
11853 (@value{GDBP}) print ibm1047_hello[0]
11854 $5 = 200 '\310'
11855 (@value{GDBP})
11856 @end smallexample
11857
11858 If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
11859 @value{GDBN} tells us the character sets it supports:
11860
11861 @smallexample
11862 (@value{GDBP}) set target-charset
11863 ASCII EBCDIC-US IBM1047 ISO-8859-1
11864 (@value{GDBP}) set target-charset
11865 @end smallexample
11866
11867 We can select @sc{ibm1047} as our target character set, and examine the
11868 program's strings again. Now the @sc{ascii} string is wrong, but
11869 @value{GDBN} translates the contents of @code{ibm1047_hello} from the
11870 target character set, @sc{ibm1047}, to the host character set,
11871 @sc{ascii}, and they display correctly:
11872
11873 @smallexample
11874 (@value{GDBP}) set target-charset IBM1047
11875 (@value{GDBP}) show charset
11876 The current host character set is `ASCII'.
11877 The current target character set is `IBM1047'.
11878 (@value{GDBP}) print ascii_hello
11879 $6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
11880 (@value{GDBP}) print ascii_hello[0]
11881 $7 = 72 '\110'
11882 (@value{GDBP}) print ibm1047_hello
11883 $8 = 0x4016a8 "Hello, world!\n"
11884 (@value{GDBP}) print ibm1047_hello[0]
11885 $9 = 200 'H'
11886 (@value{GDBP})
11887 @end smallexample
11888
11889 As above, @value{GDBN} uses the target character set for character and
11890 string literals you use in expressions:
11891
11892 @smallexample
11893 (@value{GDBP}) print '+'
11894 $10 = 78 '+'
11895 (@value{GDBP})
11896 @end smallexample
11897
11898 The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
11899 character.
11900
11901 @node Caching Target Data
11902 @section Caching Data of Targets
11903 @cindex caching data of targets
11904
11905 @value{GDBN} caches data exchanged between the debugger and a target.
11906 Each cache is associated with the address space of the inferior.
11907 @xref{Inferiors and Programs}, about inferior and address space.
11908 Such caching generally improves performance in remote debugging
11909 (@pxref{Remote Debugging}), because it reduces the overhead of the
11910 remote protocol by bundling memory reads and writes into large chunks.
11911 Unfortunately, simply caching everything would lead to incorrect results,
11912 since @value{GDBN} does not necessarily know anything about volatile
11913 values, memory-mapped I/O addresses, etc. Furthermore, in non-stop mode
11914 (@pxref{Non-Stop Mode}) memory can be changed @emph{while} a gdb command
11915 is executing.
11916 Therefore, by default, @value{GDBN} only caches data
11917 known to be on the stack@footnote{In non-stop mode, it is moderately
11918 rare for a running thread to modify the stack of a stopped thread
11919 in a way that would interfere with a backtrace, and caching of
11920 stack reads provides a significant speed up of remote backtraces.} or
11921 in the code segment.
11922 Other regions of memory can be explicitly marked as
11923 cacheable; @pxref{Memory Region Attributes}.
11924
11925 @table @code
11926 @kindex set remotecache
11927 @item set remotecache on
11928 @itemx set remotecache off
11929 This option no longer does anything; it exists for compatibility
11930 with old scripts.
11931
11932 @kindex show remotecache
11933 @item show remotecache
11934 Show the current state of the obsolete remotecache flag.
11935
11936 @kindex set stack-cache
11937 @item set stack-cache on
11938 @itemx set stack-cache off
11939 Enable or disable caching of stack accesses. When @code{on}, use
11940 caching. By default, this option is @code{on}.
11941
11942 @kindex show stack-cache
11943 @item show stack-cache
11944 Show the current state of data caching for memory accesses.
11945
11946 @kindex set code-cache
11947 @item set code-cache on
11948 @itemx set code-cache off
11949 Enable or disable caching of code segment accesses. When @code{on},
11950 use caching. By default, this option is @code{on}. This improves
11951 performance of disassembly in remote debugging.
11952
11953 @kindex show code-cache
11954 @item show code-cache
11955 Show the current state of target memory cache for code segment
11956 accesses.
11957
11958 @kindex info dcache
11959 @item info dcache @r{[}line@r{]}
11960 Print the information about the performance of data cache of the
11961 current inferior's address space. The information displayed
11962 includes the dcache width and depth, and for each cache line, its
11963 number, address, and how many times it was referenced. This
11964 command is useful for debugging the data cache operation.
11965
11966 If a line number is specified, the contents of that line will be
11967 printed in hex.
11968
11969 @item set dcache size @var{size}
11970 @cindex dcache size
11971 @kindex set dcache size
11972 Set maximum number of entries in dcache (dcache depth above).
11973
11974 @item set dcache line-size @var{line-size}
11975 @cindex dcache line-size
11976 @kindex set dcache line-size
11977 Set number of bytes each dcache entry caches (dcache width above).
11978 Must be a power of 2.
11979
11980 @item show dcache size
11981 @kindex show dcache size
11982 Show maximum number of dcache entries. @xref{Caching Target Data, info dcache}.
11983
11984 @item show dcache line-size
11985 @kindex show dcache line-size
11986 Show default size of dcache lines.
11987
11988 @end table
11989
11990 @node Searching Memory
11991 @section Search Memory
11992 @cindex searching memory
11993
11994 Memory can be searched for a particular sequence of bytes with the
11995 @code{find} command.
11996
11997 @table @code
11998 @kindex find
11999 @item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
12000 @itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
12001 Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
12002 etc. The search begins at address @var{start_addr} and continues for either
12003 @var{len} bytes or through to @var{end_addr} inclusive.
12004 @end table
12005
12006 @var{s} and @var{n} are optional parameters.
12007 They may be specified in either order, apart or together.
12008
12009 @table @r
12010 @item @var{s}, search query size
12011 The size of each search query value.
12012
12013 @table @code
12014 @item b
12015 bytes
12016 @item h
12017 halfwords (two bytes)
12018 @item w
12019 words (four bytes)
12020 @item g
12021 giant words (eight bytes)
12022 @end table
12023
12024 All values are interpreted in the current language.
12025 This means, for example, that if the current source language is C/C@t{++}
12026 then searching for the string ``hello'' includes the trailing '\0'.
12027 The null terminator can be removed from searching by using casts,
12028 e.g.: @samp{@{char[5]@}"hello"}.
12029
12030 If the value size is not specified, it is taken from the
12031 value's type in the current language.
12032 This is useful when one wants to specify the search
12033 pattern as a mixture of types.
12034 Note that this means, for example, that in the case of C-like languages
12035 a search for an untyped 0x42 will search for @samp{(int) 0x42}
12036 which is typically four bytes.
12037
12038 @item @var{n}, maximum number of finds
12039 The maximum number of matches to print. The default is to print all finds.
12040 @end table
12041
12042 You can use strings as search values. Quote them with double-quotes
12043 (@code{"}).
12044 The string value is copied into the search pattern byte by byte,
12045 regardless of the endianness of the target and the size specification.
12046
12047 The address of each match found is printed as well as a count of the
12048 number of matches found.
12049
12050 The address of the last value found is stored in convenience variable
12051 @samp{$_}.
12052 A count of the number of matches is stored in @samp{$numfound}.
12053
12054 For example, if stopped at the @code{printf} in this function:
12055
12056 @smallexample
12057 void
12058 hello ()
12059 @{
12060 static char hello[] = "hello-hello";
12061 static struct @{ char c; short s; int i; @}
12062 __attribute__ ((packed)) mixed
12063 = @{ 'c', 0x1234, 0x87654321 @};
12064 printf ("%s\n", hello);
12065 @}
12066 @end smallexample
12067
12068 @noindent
12069 you get during debugging:
12070
12071 @smallexample
12072 (gdb) find &hello[0], +sizeof(hello), "hello"
12073 0x804956d <hello.1620+6>
12074 1 pattern found
12075 (gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
12076 0x8049567 <hello.1620>
12077 0x804956d <hello.1620+6>
12078 2 patterns found.
12079 (gdb) find &hello[0], +sizeof(hello), @{char[5]@}"hello"
12080 0x8049567 <hello.1620>
12081 0x804956d <hello.1620+6>
12082 2 patterns found.
12083 (gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
12084 0x8049567 <hello.1620>
12085 1 pattern found
12086 (gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
12087 0x8049560 <mixed.1625>
12088 1 pattern found
12089 (gdb) print $numfound
12090 $1 = 1
12091 (gdb) print $_
12092 $2 = (void *) 0x8049560
12093 @end smallexample
12094
12095 @node Value Sizes
12096 @section Value Sizes
12097
12098 Whenever @value{GDBN} prints a value memory will be allocated within
12099 @value{GDBN} to hold the contents of the value. It is possible in
12100 some languages with dynamic typing systems, that an invalid program
12101 may indicate a value that is incorrectly large, this in turn may cause
12102 @value{GDBN} to try and allocate an overly large ammount of memory.
12103
12104 @table @code
12105 @kindex set max-value-size
12106 @item set max-value-size @var{bytes}
12107 @itemx set max-value-size unlimited
12108 Set the maximum size of memory that @value{GDBN} will allocate for the
12109 contents of a value to @var{bytes}, trying to display a value that
12110 requires more memory than that will result in an error.
12111
12112 Setting this variable does not effect values that have already been
12113 allocated within @value{GDBN}, only future allocations.
12114
12115 There's a minimum size that @code{max-value-size} can be set to in
12116 order that @value{GDBN} can still operate correctly, this minimum is
12117 currently 16 bytes.
12118
12119 The limit applies to the results of some subexpressions as well as to
12120 complete expressions. For example, an expression denoting a simple
12121 integer component, such as @code{x.y.z}, may fail if the size of
12122 @var{x.y} is dynamic and exceeds @var{bytes}. On the other hand,
12123 @value{GDBN} is sometimes clever; the expression @code{A[i]}, where
12124 @var{A} is an array variable with non-constant size, will generally
12125 succeed regardless of the bounds on @var{A}, as long as the component
12126 size is less than @var{bytes}.
12127
12128 The default value of @code{max-value-size} is currently 64k.
12129
12130 @kindex show max-value-size
12131 @item show max-value-size
12132 Show the maximum size of memory, in bytes, that @value{GDBN} will
12133 allocate for the contents of a value.
12134 @end table
12135
12136 @node Optimized Code
12137 @chapter Debugging Optimized Code
12138 @cindex optimized code, debugging
12139 @cindex debugging optimized code
12140
12141 Almost all compilers support optimization. With optimization
12142 disabled, the compiler generates assembly code that corresponds
12143 directly to your source code, in a simplistic way. As the compiler
12144 applies more powerful optimizations, the generated assembly code
12145 diverges from your original source code. With help from debugging
12146 information generated by the compiler, @value{GDBN} can map from
12147 the running program back to constructs from your original source.
12148
12149 @value{GDBN} is more accurate with optimization disabled. If you
12150 can recompile without optimization, it is easier to follow the
12151 progress of your program during debugging. But, there are many cases
12152 where you may need to debug an optimized version.
12153
12154 When you debug a program compiled with @samp{-g -O}, remember that the
12155 optimizer has rearranged your code; the debugger shows you what is
12156 really there. Do not be too surprised when the execution path does not
12157 exactly match your source file! An extreme example: if you define a
12158 variable, but never use it, @value{GDBN} never sees that
12159 variable---because the compiler optimizes it out of existence.
12160
12161 Some things do not work as well with @samp{-g -O} as with just
12162 @samp{-g}, particularly on machines with instruction scheduling. If in
12163 doubt, recompile with @samp{-g} alone, and if this fixes the problem,
12164 please report it to us as a bug (including a test case!).
12165 @xref{Variables}, for more information about debugging optimized code.
12166
12167 @menu
12168 * Inline Functions:: How @value{GDBN} presents inlining
12169 * Tail Call Frames:: @value{GDBN} analysis of jumps to functions
12170 @end menu
12171
12172 @node Inline Functions
12173 @section Inline Functions
12174 @cindex inline functions, debugging
12175
12176 @dfn{Inlining} is an optimization that inserts a copy of the function
12177 body directly at each call site, instead of jumping to a shared
12178 routine. @value{GDBN} displays inlined functions just like
12179 non-inlined functions. They appear in backtraces. You can view their
12180 arguments and local variables, step into them with @code{step}, skip
12181 them with @code{next}, and escape from them with @code{finish}.
12182 You can check whether a function was inlined by using the
12183 @code{info frame} command.
12184
12185 For @value{GDBN} to support inlined functions, the compiler must
12186 record information about inlining in the debug information ---
12187 @value{NGCC} using the @sc{dwarf 2} format does this, and several
12188 other compilers do also. @value{GDBN} only supports inlined functions
12189 when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
12190 do not emit two required attributes (@samp{DW_AT_call_file} and
12191 @samp{DW_AT_call_line}); @value{GDBN} does not display inlined
12192 function calls with earlier versions of @value{NGCC}. It instead
12193 displays the arguments and local variables of inlined functions as
12194 local variables in the caller.
12195
12196 The body of an inlined function is directly included at its call site;
12197 unlike a non-inlined function, there are no instructions devoted to
12198 the call. @value{GDBN} still pretends that the call site and the
12199 start of the inlined function are different instructions. Stepping to
12200 the call site shows the call site, and then stepping again shows
12201 the first line of the inlined function, even though no additional
12202 instructions are executed.
12203
12204 This makes source-level debugging much clearer; you can see both the
12205 context of the call and then the effect of the call. Only stepping by
12206 a single instruction using @code{stepi} or @code{nexti} does not do
12207 this; single instruction steps always show the inlined body.
12208
12209 There are some ways that @value{GDBN} does not pretend that inlined
12210 function calls are the same as normal calls:
12211
12212 @itemize @bullet
12213 @item
12214 Setting breakpoints at the call site of an inlined function may not
12215 work, because the call site does not contain any code. @value{GDBN}
12216 may incorrectly move the breakpoint to the next line of the enclosing
12217 function, after the call. This limitation will be removed in a future
12218 version of @value{GDBN}; until then, set a breakpoint on an earlier line
12219 or inside the inlined function instead.
12220
12221 @item
12222 @value{GDBN} cannot locate the return value of inlined calls after
12223 using the @code{finish} command. This is a limitation of compiler-generated
12224 debugging information; after @code{finish}, you can step to the next line
12225 and print a variable where your program stored the return value.
12226
12227 @end itemize
12228
12229 @node Tail Call Frames
12230 @section Tail Call Frames
12231 @cindex tail call frames, debugging
12232
12233 Function @code{B} can call function @code{C} in its very last statement. In
12234 unoptimized compilation the call of @code{C} is immediately followed by return
12235 instruction at the end of @code{B} code. Optimizing compiler may replace the
12236 call and return in function @code{B} into one jump to function @code{C}
12237 instead. Such use of a jump instruction is called @dfn{tail call}.
12238
12239 During execution of function @code{C}, there will be no indication in the
12240 function call stack frames that it was tail-called from @code{B}. If function
12241 @code{A} regularly calls function @code{B} which tail-calls function @code{C},
12242 then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in
12243 some cases @value{GDBN} can determine that @code{C} was tail-called from
12244 @code{B}, and it will then create fictitious call frame for that, with the
12245 return address set up as if @code{B} called @code{C} normally.
12246
12247 This functionality is currently supported only by DWARF 2 debugging format and
12248 the compiler has to produce @samp{DW_TAG_call_site} tags. With
12249 @value{NGCC}, you need to specify @option{-O -g} during compilation, to get
12250 this information.
12251
12252 @kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame
12253 kind by text @code{tail call frame} such as in this sample @value{GDBN} output:
12254
12255 @smallexample
12256 (gdb) x/i $pc - 2
12257 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)>
12258 (gdb) info frame
12259 Stack level 1, frame at 0x7fffffffda30:
12260 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5
12261 tail call frame, caller of frame at 0x7fffffffda30
12262 source language c++.
12263 Arglist at unknown address.
12264 Locals at unknown address, Previous frame's sp is 0x7fffffffda30
12265 @end smallexample
12266
12267 The detection of all the possible code path executions can find them ambiguous.
12268 There is no execution history stored (possible @ref{Reverse Execution} is never
12269 used for this purpose) and the last known caller could have reached the known
12270 callee by multiple different jump sequences. In such case @value{GDBN} still
12271 tries to show at least all the unambiguous top tail callers and all the
12272 unambiguous bottom tail calees, if any.
12273
12274 @table @code
12275 @anchor{set debug entry-values}
12276 @item set debug entry-values
12277 @kindex set debug entry-values
12278 When set to on, enables printing of analysis messages for both frame argument
12279 values at function entry and tail calls. It will show all the possible valid
12280 tail calls code paths it has considered. It will also print the intersection
12281 of them with the final unambiguous (possibly partial or even empty) code path
12282 result.
12283
12284 @item show debug entry-values
12285 @kindex show debug entry-values
12286 Show the current state of analysis messages printing for both frame argument
12287 values at function entry and tail calls.
12288 @end table
12289
12290 The analysis messages for tail calls can for example show why the virtual tail
12291 call frame for function @code{c} has not been recognized (due to the indirect
12292 reference by variable @code{x}):
12293
12294 @smallexample
12295 static void __attribute__((noinline, noclone)) c (void);
12296 void (*x) (void) = c;
12297 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
12298 static void __attribute__((noinline, noclone)) c (void) @{ a (); @}
12299 int main (void) @{ x (); return 0; @}
12300
12301 Breakpoint 1, DW_OP_entry_value resolving cannot find
12302 DW_TAG_call_site 0x40039a in main
12303 a () at t.c:3
12304 3 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
12305 (gdb) bt
12306 #0 a () at t.c:3
12307 #1 0x000000000040039a in main () at t.c:5
12308 @end smallexample
12309
12310 Another possibility is an ambiguous virtual tail call frames resolution:
12311
12312 @smallexample
12313 int i;
12314 static void __attribute__((noinline, noclone)) f (void) @{ i++; @}
12315 static void __attribute__((noinline, noclone)) e (void) @{ f (); @}
12316 static void __attribute__((noinline, noclone)) d (void) @{ f (); @}
12317 static void __attribute__((noinline, noclone)) c (void) @{ d (); @}
12318 static void __attribute__((noinline, noclone)) b (void)
12319 @{ if (i) c (); else e (); @}
12320 static void __attribute__((noinline, noclone)) a (void) @{ b (); @}
12321 int main (void) @{ a (); return 0; @}
12322
12323 tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d)
12324 tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e)
12325 tailcall: reduced: 0x4004d2(a) |
12326 (gdb) bt
12327 #0 f () at t.c:2
12328 #1 0x00000000004004d2 in a () at t.c:8
12329 #2 0x0000000000400395 in main () at t.c:9
12330 @end smallexample
12331
12332 @set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f}
12333 @set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f}
12334
12335 @c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK.
12336 @ifset HAVE_MAKEINFO_CLICK
12337 @set ARROW @click{}
12338 @set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}}
12339 @set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}}
12340 @end ifset
12341 @ifclear HAVE_MAKEINFO_CLICK
12342 @set ARROW ->
12343 @set CALLSEQ1B @value{CALLSEQ1A}
12344 @set CALLSEQ2B @value{CALLSEQ2A}
12345 @end ifclear
12346
12347 Frames #0 and #2 are real, #1 is a virtual tail call frame.
12348 The code can have possible execution paths @value{CALLSEQ1B} or
12349 @value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state.
12350
12351 @code{initial:} state shows some random possible calling sequence @value{GDBN}
12352 has found. It then finds another possible calling sequcen - that one is
12353 prefixed by @code{compare:}. The non-ambiguous intersection of these two is
12354 printed as the @code{reduced:} calling sequence. That one could have many
12355 futher @code{compare:} and @code{reduced:} statements as long as there remain
12356 any non-ambiguous sequence entries.
12357
12358 For the frame of function @code{b} in both cases there are different possible
12359 @code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is
12360 also ambigous. The only non-ambiguous frame is the one for function @code{a},
12361 therefore this one is displayed to the user while the ambiguous frames are
12362 omitted.
12363
12364 There can be also reasons why printing of frame argument values at function
12365 entry may fail:
12366
12367 @smallexample
12368 int v;
12369 static void __attribute__((noinline, noclone)) c (int i) @{ v++; @}
12370 static void __attribute__((noinline, noclone)) a (int i);
12371 static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @}
12372 static void __attribute__((noinline, noclone)) a (int i)
12373 @{ if (i) b (i - 1); else c (0); @}
12374 int main (void) @{ a (5); return 0; @}
12375
12376 (gdb) bt
12377 #0 c (i=i@@entry=0) at t.c:2
12378 #1 0x0000000000400428 in a (DW_OP_entry_value resolving has found
12379 function "a" at 0x400420 can call itself via tail calls
12380 i=<optimized out>) at t.c:6
12381 #2 0x000000000040036e in main () at t.c:7
12382 @end smallexample
12383
12384 @value{GDBN} cannot find out from the inferior state if and how many times did
12385 function @code{a} call itself (via function @code{b}) as these calls would be
12386 tail calls. Such tail calls would modify thue @code{i} variable, therefore
12387 @value{GDBN} cannot be sure the value it knows would be right - @value{GDBN}
12388 prints @code{<optimized out>} instead.
12389
12390 @node Macros
12391 @chapter C Preprocessor Macros
12392
12393 Some languages, such as C and C@t{++}, provide a way to define and invoke
12394 ``preprocessor macros'' which expand into strings of tokens.
12395 @value{GDBN} can evaluate expressions containing macro invocations, show
12396 the result of macro expansion, and show a macro's definition, including
12397 where it was defined.
12398
12399 You may need to compile your program specially to provide @value{GDBN}
12400 with information about preprocessor macros. Most compilers do not
12401 include macros in their debugging information, even when you compile
12402 with the @option{-g} flag. @xref{Compilation}.
12403
12404 A program may define a macro at one point, remove that definition later,
12405 and then provide a different definition after that. Thus, at different
12406 points in the program, a macro may have different definitions, or have
12407 no definition at all. If there is a current stack frame, @value{GDBN}
12408 uses the macros in scope at that frame's source code line. Otherwise,
12409 @value{GDBN} uses the macros in scope at the current listing location;
12410 see @ref{List}.
12411
12412 Whenever @value{GDBN} evaluates an expression, it always expands any
12413 macro invocations present in the expression. @value{GDBN} also provides
12414 the following commands for working with macros explicitly.
12415
12416 @table @code
12417
12418 @kindex macro expand
12419 @cindex macro expansion, showing the results of preprocessor
12420 @cindex preprocessor macro expansion, showing the results of
12421 @cindex expanding preprocessor macros
12422 @item macro expand @var{expression}
12423 @itemx macro exp @var{expression}
12424 Show the results of expanding all preprocessor macro invocations in
12425 @var{expression}. Since @value{GDBN} simply expands macros, but does
12426 not parse the result, @var{expression} need not be a valid expression;
12427 it can be any string of tokens.
12428
12429 @kindex macro exp1
12430 @item macro expand-once @var{expression}
12431 @itemx macro exp1 @var{expression}
12432 @cindex expand macro once
12433 @i{(This command is not yet implemented.)} Show the results of
12434 expanding those preprocessor macro invocations that appear explicitly in
12435 @var{expression}. Macro invocations appearing in that expansion are
12436 left unchanged. This command allows you to see the effect of a
12437 particular macro more clearly, without being confused by further
12438 expansions. Since @value{GDBN} simply expands macros, but does not
12439 parse the result, @var{expression} need not be a valid expression; it
12440 can be any string of tokens.
12441
12442 @kindex info macro
12443 @cindex macro definition, showing
12444 @cindex definition of a macro, showing
12445 @cindex macros, from debug info
12446 @item info macro [-a|-all] [--] @var{macro}
12447 Show the current definition or all definitions of the named @var{macro},
12448 and describe the source location or compiler command-line where that
12449 definition was established. The optional double dash is to signify the end of
12450 argument processing and the beginning of @var{macro} for non C-like macros where
12451 the macro may begin with a hyphen.
12452
12453 @kindex info macros
12454 @item info macros @var{location}
12455 Show all macro definitions that are in effect at the location specified
12456 by @var{location}, and describe the source location or compiler
12457 command-line where those definitions were established.
12458
12459 @kindex macro define
12460 @cindex user-defined macros
12461 @cindex defining macros interactively
12462 @cindex macros, user-defined
12463 @item macro define @var{macro} @var{replacement-list}
12464 @itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
12465 Introduce a definition for a preprocessor macro named @var{macro},
12466 invocations of which are replaced by the tokens given in
12467 @var{replacement-list}. The first form of this command defines an
12468 ``object-like'' macro, which takes no arguments; the second form
12469 defines a ``function-like'' macro, which takes the arguments given in
12470 @var{arglist}.
12471
12472 A definition introduced by this command is in scope in every
12473 expression evaluated in @value{GDBN}, until it is removed with the
12474 @code{macro undef} command, described below. The definition overrides
12475 all definitions for @var{macro} present in the program being debugged,
12476 as well as any previous user-supplied definition.
12477
12478 @kindex macro undef
12479 @item macro undef @var{macro}
12480 Remove any user-supplied definition for the macro named @var{macro}.
12481 This command only affects definitions provided with the @code{macro
12482 define} command, described above; it cannot remove definitions present
12483 in the program being debugged.
12484
12485 @kindex macro list
12486 @item macro list
12487 List all the macros defined using the @code{macro define} command.
12488 @end table
12489
12490 @cindex macros, example of debugging with
12491 Here is a transcript showing the above commands in action. First, we
12492 show our source files:
12493
12494 @smallexample
12495 $ cat sample.c
12496 #include <stdio.h>
12497 #include "sample.h"
12498
12499 #define M 42
12500 #define ADD(x) (M + x)
12501
12502 main ()
12503 @{
12504 #define N 28
12505 printf ("Hello, world!\n");
12506 #undef N
12507 printf ("We're so creative.\n");
12508 #define N 1729
12509 printf ("Goodbye, world!\n");
12510 @}
12511 $ cat sample.h
12512 #define Q <
12513 $
12514 @end smallexample
12515
12516 Now, we compile the program using the @sc{gnu} C compiler,
12517 @value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the
12518 minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3}
12519 and @option{-gdwarf-4}; we recommend always choosing the most recent
12520 version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler
12521 includes information about preprocessor macros in the debugging
12522 information.
12523
12524 @smallexample
12525 $ gcc -gdwarf-2 -g3 sample.c -o sample
12526 $
12527 @end smallexample
12528
12529 Now, we start @value{GDBN} on our sample program:
12530
12531 @smallexample
12532 $ gdb -nw sample
12533 GNU gdb 2002-05-06-cvs
12534 Copyright 2002 Free Software Foundation, Inc.
12535 GDB is free software, @dots{}
12536 (@value{GDBP})
12537 @end smallexample
12538
12539 We can expand macros and examine their definitions, even when the
12540 program is not running. @value{GDBN} uses the current listing position
12541 to decide which macro definitions are in scope:
12542
12543 @smallexample
12544 (@value{GDBP}) list main
12545 3
12546 4 #define M 42
12547 5 #define ADD(x) (M + x)
12548 6
12549 7 main ()
12550 8 @{
12551 9 #define N 28
12552 10 printf ("Hello, world!\n");
12553 11 #undef N
12554 12 printf ("We're so creative.\n");
12555 (@value{GDBP}) info macro ADD
12556 Defined at /home/jimb/gdb/macros/play/sample.c:5
12557 #define ADD(x) (M + x)
12558 (@value{GDBP}) info macro Q
12559 Defined at /home/jimb/gdb/macros/play/sample.h:1
12560 included at /home/jimb/gdb/macros/play/sample.c:2
12561 #define Q <
12562 (@value{GDBP}) macro expand ADD(1)
12563 expands to: (42 + 1)
12564 (@value{GDBP}) macro expand-once ADD(1)
12565 expands to: once (M + 1)
12566 (@value{GDBP})
12567 @end smallexample
12568
12569 In the example above, note that @code{macro expand-once} expands only
12570 the macro invocation explicit in the original text --- the invocation of
12571 @code{ADD} --- but does not expand the invocation of the macro @code{M},
12572 which was introduced by @code{ADD}.
12573
12574 Once the program is running, @value{GDBN} uses the macro definitions in
12575 force at the source line of the current stack frame:
12576
12577 @smallexample
12578 (@value{GDBP}) break main
12579 Breakpoint 1 at 0x8048370: file sample.c, line 10.
12580 (@value{GDBP}) run
12581 Starting program: /home/jimb/gdb/macros/play/sample
12582
12583 Breakpoint 1, main () at sample.c:10
12584 10 printf ("Hello, world!\n");
12585 (@value{GDBP})
12586 @end smallexample
12587
12588 At line 10, the definition of the macro @code{N} at line 9 is in force:
12589
12590 @smallexample
12591 (@value{GDBP}) info macro N
12592 Defined at /home/jimb/gdb/macros/play/sample.c:9
12593 #define N 28
12594 (@value{GDBP}) macro expand N Q M
12595 expands to: 28 < 42
12596 (@value{GDBP}) print N Q M
12597 $1 = 1
12598 (@value{GDBP})
12599 @end smallexample
12600
12601 As we step over directives that remove @code{N}'s definition, and then
12602 give it a new definition, @value{GDBN} finds the definition (or lack
12603 thereof) in force at each point:
12604
12605 @smallexample
12606 (@value{GDBP}) next
12607 Hello, world!
12608 12 printf ("We're so creative.\n");
12609 (@value{GDBP}) info macro N
12610 The symbol `N' has no definition as a C/C++ preprocessor macro
12611 at /home/jimb/gdb/macros/play/sample.c:12
12612 (@value{GDBP}) next
12613 We're so creative.
12614 14 printf ("Goodbye, world!\n");
12615 (@value{GDBP}) info macro N
12616 Defined at /home/jimb/gdb/macros/play/sample.c:13
12617 #define N 1729
12618 (@value{GDBP}) macro expand N Q M
12619 expands to: 1729 < 42
12620 (@value{GDBP}) print N Q M
12621 $2 = 0
12622 (@value{GDBP})
12623 @end smallexample
12624
12625 In addition to source files, macros can be defined on the compilation command
12626 line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
12627 such a way, @value{GDBN} displays the location of their definition as line zero
12628 of the source file submitted to the compiler.
12629
12630 @smallexample
12631 (@value{GDBP}) info macro __STDC__
12632 Defined at /home/jimb/gdb/macros/play/sample.c:0
12633 -D__STDC__=1
12634 (@value{GDBP})
12635 @end smallexample
12636
12637
12638 @node Tracepoints
12639 @chapter Tracepoints
12640 @c This chapter is based on the documentation written by Michael
12641 @c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
12642
12643 @cindex tracepoints
12644 In some applications, it is not feasible for the debugger to interrupt
12645 the program's execution long enough for the developer to learn
12646 anything helpful about its behavior. If the program's correctness
12647 depends on its real-time behavior, delays introduced by a debugger
12648 might cause the program to change its behavior drastically, or perhaps
12649 fail, even when the code itself is correct. It is useful to be able
12650 to observe the program's behavior without interrupting it.
12651
12652 Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
12653 specify locations in the program, called @dfn{tracepoints}, and
12654 arbitrary expressions to evaluate when those tracepoints are reached.
12655 Later, using the @code{tfind} command, you can examine the values
12656 those expressions had when the program hit the tracepoints. The
12657 expressions may also denote objects in memory---structures or arrays,
12658 for example---whose values @value{GDBN} should record; while visiting
12659 a particular tracepoint, you may inspect those objects as if they were
12660 in memory at that moment. However, because @value{GDBN} records these
12661 values without interacting with you, it can do so quickly and
12662 unobtrusively, hopefully not disturbing the program's behavior.
12663
12664 The tracepoint facility is currently available only for remote
12665 targets. @xref{Targets}. In addition, your remote target must know
12666 how to collect trace data. This functionality is implemented in the
12667 remote stub; however, none of the stubs distributed with @value{GDBN}
12668 support tracepoints as of this writing. The format of the remote
12669 packets used to implement tracepoints are described in @ref{Tracepoint
12670 Packets}.
12671
12672 It is also possible to get trace data from a file, in a manner reminiscent
12673 of corefiles; you specify the filename, and use @code{tfind} to search
12674 through the file. @xref{Trace Files}, for more details.
12675
12676 This chapter describes the tracepoint commands and features.
12677
12678 @menu
12679 * Set Tracepoints::
12680 * Analyze Collected Data::
12681 * Tracepoint Variables::
12682 * Trace Files::
12683 @end menu
12684
12685 @node Set Tracepoints
12686 @section Commands to Set Tracepoints
12687
12688 Before running such a @dfn{trace experiment}, an arbitrary number of
12689 tracepoints can be set. A tracepoint is actually a special type of
12690 breakpoint (@pxref{Set Breaks}), so you can manipulate it using
12691 standard breakpoint commands. For instance, as with breakpoints,
12692 tracepoint numbers are successive integers starting from one, and many
12693 of the commands associated with tracepoints take the tracepoint number
12694 as their argument, to identify which tracepoint to work on.
12695
12696 For each tracepoint, you can specify, in advance, some arbitrary set
12697 of data that you want the target to collect in the trace buffer when
12698 it hits that tracepoint. The collected data can include registers,
12699 local variables, or global data. Later, you can use @value{GDBN}
12700 commands to examine the values these data had at the time the
12701 tracepoint was hit.
12702
12703 Tracepoints do not support every breakpoint feature. Ignore counts on
12704 tracepoints have no effect, and tracepoints cannot run @value{GDBN}
12705 commands when they are hit. Tracepoints may not be thread-specific
12706 either.
12707
12708 @cindex fast tracepoints
12709 Some targets may support @dfn{fast tracepoints}, which are inserted in
12710 a different way (such as with a jump instead of a trap), that is
12711 faster but possibly restricted in where they may be installed.
12712
12713 @cindex static tracepoints
12714 @cindex markers, static tracepoints
12715 @cindex probing markers, static tracepoints
12716 Regular and fast tracepoints are dynamic tracing facilities, meaning
12717 that they can be used to insert tracepoints at (almost) any location
12718 in the target. Some targets may also support controlling @dfn{static
12719 tracepoints} from @value{GDBN}. With static tracing, a set of
12720 instrumentation points, also known as @dfn{markers}, are embedded in
12721 the target program, and can be activated or deactivated by name or
12722 address. These are usually placed at locations which facilitate
12723 investigating what the target is actually doing. @value{GDBN}'s
12724 support for static tracing includes being able to list instrumentation
12725 points, and attach them with @value{GDBN} defined high level
12726 tracepoints that expose the whole range of convenience of
12727 @value{GDBN}'s tracepoints support. Namely, support for collecting
12728 registers values and values of global or local (to the instrumentation
12729 point) variables; tracepoint conditions and trace state variables.
12730 The act of installing a @value{GDBN} static tracepoint on an
12731 instrumentation point, or marker, is referred to as @dfn{probing} a
12732 static tracepoint marker.
12733
12734 @code{gdbserver} supports tracepoints on some target systems.
12735 @xref{Server,,Tracepoints support in @code{gdbserver}}.
12736
12737 This section describes commands to set tracepoints and associated
12738 conditions and actions.
12739
12740 @menu
12741 * Create and Delete Tracepoints::
12742 * Enable and Disable Tracepoints::
12743 * Tracepoint Passcounts::
12744 * Tracepoint Conditions::
12745 * Trace State Variables::
12746 * Tracepoint Actions::
12747 * Listing Tracepoints::
12748 * Listing Static Tracepoint Markers::
12749 * Starting and Stopping Trace Experiments::
12750 * Tracepoint Restrictions::
12751 @end menu
12752
12753 @node Create and Delete Tracepoints
12754 @subsection Create and Delete Tracepoints
12755
12756 @table @code
12757 @cindex set tracepoint
12758 @kindex trace
12759 @item trace @var{location}
12760 The @code{trace} command is very similar to the @code{break} command.
12761 Its argument @var{location} can be any valid location.
12762 @xref{Specify Location}. The @code{trace} command defines a tracepoint,
12763 which is a point in the target program where the debugger will briefly stop,
12764 collect some data, and then allow the program to continue. Setting a tracepoint
12765 or changing its actions takes effect immediately if the remote stub
12766 supports the @samp{InstallInTrace} feature (@pxref{install tracepoint
12767 in tracing}).
12768 If remote stub doesn't support the @samp{InstallInTrace} feature, all
12769 these changes don't take effect until the next @code{tstart}
12770 command, and once a trace experiment is running, further changes will
12771 not have any effect until the next trace experiment starts. In addition,
12772 @value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose
12773 address is not yet resolved. (This is similar to pending breakpoints.)
12774 Pending tracepoints are not downloaded to the target and not installed
12775 until they are resolved. The resolution of pending tracepoints requires
12776 @value{GDBN} support---when debugging with the remote target, and
12777 @value{GDBN} disconnects from the remote stub (@pxref{disconnected
12778 tracing}), pending tracepoints can not be resolved (and downloaded to
12779 the remote stub) while @value{GDBN} is disconnected.
12780
12781 Here are some examples of using the @code{trace} command:
12782
12783 @smallexample
12784 (@value{GDBP}) @b{trace foo.c:121} // a source file and line number
12785
12786 (@value{GDBP}) @b{trace +2} // 2 lines forward
12787
12788 (@value{GDBP}) @b{trace my_function} // first source line of function
12789
12790 (@value{GDBP}) @b{trace *my_function} // EXACT start address of function
12791
12792 (@value{GDBP}) @b{trace *0x2117c4} // an address
12793 @end smallexample
12794
12795 @noindent
12796 You can abbreviate @code{trace} as @code{tr}.
12797
12798 @item trace @var{location} if @var{cond}
12799 Set a tracepoint with condition @var{cond}; evaluate the expression
12800 @var{cond} each time the tracepoint is reached, and collect data only
12801 if the value is nonzero---that is, if @var{cond} evaluates as true.
12802 @xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
12803 information on tracepoint conditions.
12804
12805 @item ftrace @var{location} [ if @var{cond} ]
12806 @cindex set fast tracepoint
12807 @cindex fast tracepoints, setting
12808 @kindex ftrace
12809 The @code{ftrace} command sets a fast tracepoint. For targets that
12810 support them, fast tracepoints will use a more efficient but possibly
12811 less general technique to trigger data collection, such as a jump
12812 instruction instead of a trap, or some sort of hardware support. It
12813 may not be possible to create a fast tracepoint at the desired
12814 location, in which case the command will exit with an explanatory
12815 message.
12816
12817 @value{GDBN} handles arguments to @code{ftrace} exactly as for
12818 @code{trace}.
12819
12820 On 32-bit x86-architecture systems, fast tracepoints normally need to
12821 be placed at an instruction that is 5 bytes or longer, but can be
12822 placed at 4-byte instructions if the low 64K of memory of the target
12823 program is available to install trampolines. Some Unix-type systems,
12824 such as @sc{gnu}/Linux, exclude low addresses from the program's
12825 address space; but for instance with the Linux kernel it is possible
12826 to let @value{GDBN} use this area by doing a @command{sysctl} command
12827 to set the @code{mmap_min_addr} kernel parameter, as in
12828
12829 @example
12830 sudo sysctl -w vm.mmap_min_addr=32768
12831 @end example
12832
12833 @noindent
12834 which sets the low address to 32K, which leaves plenty of room for
12835 trampolines. The minimum address should be set to a page boundary.
12836
12837 @item strace @var{location} [ if @var{cond} ]
12838 @cindex set static tracepoint
12839 @cindex static tracepoints, setting
12840 @cindex probe static tracepoint marker
12841 @kindex strace
12842 The @code{strace} command sets a static tracepoint. For targets that
12843 support it, setting a static tracepoint probes a static
12844 instrumentation point, or marker, found at @var{location}. It may not
12845 be possible to set a static tracepoint at the desired location, in
12846 which case the command will exit with an explanatory message.
12847
12848 @value{GDBN} handles arguments to @code{strace} exactly as for
12849 @code{trace}, with the addition that the user can also specify
12850 @code{-m @var{marker}} as @var{location}. This probes the marker
12851 identified by the @var{marker} string identifier. This identifier
12852 depends on the static tracepoint backend library your program is
12853 using. You can find all the marker identifiers in the @samp{ID} field
12854 of the @code{info static-tracepoint-markers} command output.
12855 @xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint
12856 Markers}. For example, in the following small program using the UST
12857 tracing engine:
12858
12859 @smallexample
12860 main ()
12861 @{
12862 trace_mark(ust, bar33, "str %s", "FOOBAZ");
12863 @}
12864 @end smallexample
12865
12866 @noindent
12867 the marker id is composed of joining the first two arguments to the
12868 @code{trace_mark} call with a slash, which translates to:
12869
12870 @smallexample
12871 (@value{GDBP}) info static-tracepoint-markers
12872 Cnt Enb ID Address What
12873 1 n ust/bar33 0x0000000000400ddc in main at stexample.c:22
12874 Data: "str %s"
12875 [etc...]
12876 @end smallexample
12877
12878 @noindent
12879 so you may probe the marker above with:
12880
12881 @smallexample
12882 (@value{GDBP}) strace -m ust/bar33
12883 @end smallexample
12884
12885 Static tracepoints accept an extra collect action --- @code{collect
12886 $_sdata}. This collects arbitrary user data passed in the probe point
12887 call to the tracing library. In the UST example above, you'll see
12888 that the third argument to @code{trace_mark} is a printf-like format
12889 string. The user data is then the result of running that formating
12890 string against the following arguments. Note that @code{info
12891 static-tracepoint-markers} command output lists that format string in
12892 the @samp{Data:} field.
12893
12894 You can inspect this data when analyzing the trace buffer, by printing
12895 the $_sdata variable like any other variable available to
12896 @value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}.
12897
12898 @vindex $tpnum
12899 @cindex last tracepoint number
12900 @cindex recent tracepoint number
12901 @cindex tracepoint number
12902 The convenience variable @code{$tpnum} records the tracepoint number
12903 of the most recently set tracepoint.
12904
12905 @kindex delete tracepoint
12906 @cindex tracepoint deletion
12907 @item delete tracepoint @r{[}@var{num}@r{]}
12908 Permanently delete one or more tracepoints. With no argument, the
12909 default is to delete all tracepoints. Note that the regular
12910 @code{delete} command can remove tracepoints also.
12911
12912 Examples:
12913
12914 @smallexample
12915 (@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
12916
12917 (@value{GDBP}) @b{delete trace} // remove all tracepoints
12918 @end smallexample
12919
12920 @noindent
12921 You can abbreviate this command as @code{del tr}.
12922 @end table
12923
12924 @node Enable and Disable Tracepoints
12925 @subsection Enable and Disable Tracepoints
12926
12927 These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
12928
12929 @table @code
12930 @kindex disable tracepoint
12931 @item disable tracepoint @r{[}@var{num}@r{]}
12932 Disable tracepoint @var{num}, or all tracepoints if no argument
12933 @var{num} is given. A disabled tracepoint will have no effect during
12934 a trace experiment, but it is not forgotten. You can re-enable
12935 a disabled tracepoint using the @code{enable tracepoint} command.
12936 If the command is issued during a trace experiment and the debug target
12937 has support for disabling tracepoints during a trace experiment, then the
12938 change will be effective immediately. Otherwise, it will be applied to the
12939 next trace experiment.
12940
12941 @kindex enable tracepoint
12942 @item enable tracepoint @r{[}@var{num}@r{]}
12943 Enable tracepoint @var{num}, or all tracepoints. If this command is
12944 issued during a trace experiment and the debug target supports enabling
12945 tracepoints during a trace experiment, then the enabled tracepoints will
12946 become effective immediately. Otherwise, they will become effective the
12947 next time a trace experiment is run.
12948 @end table
12949
12950 @node Tracepoint Passcounts
12951 @subsection Tracepoint Passcounts
12952
12953 @table @code
12954 @kindex passcount
12955 @cindex tracepoint pass count
12956 @item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
12957 Set the @dfn{passcount} of a tracepoint. The passcount is a way to
12958 automatically stop a trace experiment. If a tracepoint's passcount is
12959 @var{n}, then the trace experiment will be automatically stopped on
12960 the @var{n}'th time that tracepoint is hit. If the tracepoint number
12961 @var{num} is not specified, the @code{passcount} command sets the
12962 passcount of the most recently defined tracepoint. If no passcount is
12963 given, the trace experiment will run until stopped explicitly by the
12964 user.
12965
12966 Examples:
12967
12968 @smallexample
12969 (@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
12970 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
12971
12972 (@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
12973 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
12974 (@value{GDBP}) @b{trace foo}
12975 (@value{GDBP}) @b{pass 3}
12976 (@value{GDBP}) @b{trace bar}
12977 (@value{GDBP}) @b{pass 2}
12978 (@value{GDBP}) @b{trace baz}
12979 (@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
12980 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
12981 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
12982 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
12983 @end smallexample
12984 @end table
12985
12986 @node Tracepoint Conditions
12987 @subsection Tracepoint Conditions
12988 @cindex conditional tracepoints
12989 @cindex tracepoint conditions
12990
12991 The simplest sort of tracepoint collects data every time your program
12992 reaches a specified place. You can also specify a @dfn{condition} for
12993 a tracepoint. A condition is just a Boolean expression in your
12994 programming language (@pxref{Expressions, ,Expressions}). A
12995 tracepoint with a condition evaluates the expression each time your
12996 program reaches it, and data collection happens only if the condition
12997 is true.
12998
12999 Tracepoint conditions can be specified when a tracepoint is set, by
13000 using @samp{if} in the arguments to the @code{trace} command.
13001 @xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
13002 also be set or changed at any time with the @code{condition} command,
13003 just as with breakpoints.
13004
13005 Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
13006 the conditional expression itself. Instead, @value{GDBN} encodes the
13007 expression into an agent expression (@pxref{Agent Expressions})
13008 suitable for execution on the target, independently of @value{GDBN}.
13009 Global variables become raw memory locations, locals become stack
13010 accesses, and so forth.
13011
13012 For instance, suppose you have a function that is usually called
13013 frequently, but should not be called after an error has occurred. You
13014 could use the following tracepoint command to collect data about calls
13015 of that function that happen while the error code is propagating
13016 through the program; an unconditional tracepoint could end up
13017 collecting thousands of useless trace frames that you would have to
13018 search through.
13019
13020 @smallexample
13021 (@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
13022 @end smallexample
13023
13024 @node Trace State Variables
13025 @subsection Trace State Variables
13026 @cindex trace state variables
13027
13028 A @dfn{trace state variable} is a special type of variable that is
13029 created and managed by target-side code. The syntax is the same as
13030 that for GDB's convenience variables (a string prefixed with ``$''),
13031 but they are stored on the target. They must be created explicitly,
13032 using a @code{tvariable} command. They are always 64-bit signed
13033 integers.
13034
13035 Trace state variables are remembered by @value{GDBN}, and downloaded
13036 to the target along with tracepoint information when the trace
13037 experiment starts. There are no intrinsic limits on the number of
13038 trace state variables, beyond memory limitations of the target.
13039
13040 @cindex convenience variables, and trace state variables
13041 Although trace state variables are managed by the target, you can use
13042 them in print commands and expressions as if they were convenience
13043 variables; @value{GDBN} will get the current value from the target
13044 while the trace experiment is running. Trace state variables share
13045 the same namespace as other ``$'' variables, which means that you
13046 cannot have trace state variables with names like @code{$23} or
13047 @code{$pc}, nor can you have a trace state variable and a convenience
13048 variable with the same name.
13049
13050 @table @code
13051
13052 @item tvariable $@var{name} [ = @var{expression} ]
13053 @kindex tvariable
13054 The @code{tvariable} command creates a new trace state variable named
13055 @code{$@var{name}}, and optionally gives it an initial value of
13056 @var{expression}. The @var{expression} is evaluated when this command is
13057 entered; the result will be converted to an integer if possible,
13058 otherwise @value{GDBN} will report an error. A subsequent
13059 @code{tvariable} command specifying the same name does not create a
13060 variable, but instead assigns the supplied initial value to the
13061 existing variable of that name, overwriting any previous initial
13062 value. The default initial value is 0.
13063
13064 @item info tvariables
13065 @kindex info tvariables
13066 List all the trace state variables along with their initial values.
13067 Their current values may also be displayed, if the trace experiment is
13068 currently running.
13069
13070 @item delete tvariable @r{[} $@var{name} @dots{} @r{]}
13071 @kindex delete tvariable
13072 Delete the given trace state variables, or all of them if no arguments
13073 are specified.
13074
13075 @end table
13076
13077 @node Tracepoint Actions
13078 @subsection Tracepoint Action Lists
13079
13080 @table @code
13081 @kindex actions
13082 @cindex tracepoint actions
13083 @item actions @r{[}@var{num}@r{]}
13084 This command will prompt for a list of actions to be taken when the
13085 tracepoint is hit. If the tracepoint number @var{num} is not
13086 specified, this command sets the actions for the one that was most
13087 recently defined (so that you can define a tracepoint and then say
13088 @code{actions} without bothering about its number). You specify the
13089 actions themselves on the following lines, one action at a time, and
13090 terminate the actions list with a line containing just @code{end}. So
13091 far, the only defined actions are @code{collect}, @code{teval}, and
13092 @code{while-stepping}.
13093
13094 @code{actions} is actually equivalent to @code{commands} (@pxref{Break
13095 Commands, ,Breakpoint Command Lists}), except that only the defined
13096 actions are allowed; any other @value{GDBN} command is rejected.
13097
13098 @cindex remove actions from a tracepoint
13099 To remove all actions from a tracepoint, type @samp{actions @var{num}}
13100 and follow it immediately with @samp{end}.
13101
13102 @smallexample
13103 (@value{GDBP}) @b{collect @var{data}} // collect some data
13104
13105 (@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
13106
13107 (@value{GDBP}) @b{end} // signals the end of actions.
13108 @end smallexample
13109
13110 In the following example, the action list begins with @code{collect}
13111 commands indicating the things to be collected when the tracepoint is
13112 hit. Then, in order to single-step and collect additional data
13113 following the tracepoint, a @code{while-stepping} command is used,
13114 followed by the list of things to be collected after each step in a
13115 sequence of single steps. The @code{while-stepping} command is
13116 terminated by its own separate @code{end} command. Lastly, the action
13117 list is terminated by an @code{end} command.
13118
13119 @smallexample
13120 (@value{GDBP}) @b{trace foo}
13121 (@value{GDBP}) @b{actions}
13122 Enter actions for tracepoint 1, one per line:
13123 > collect bar,baz
13124 > collect $regs
13125 > while-stepping 12
13126 > collect $pc, arr[i]
13127 > end
13128 end
13129 @end smallexample
13130
13131 @kindex collect @r{(tracepoints)}
13132 @item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{}
13133 Collect values of the given expressions when the tracepoint is hit.
13134 This command accepts a comma-separated list of any valid expressions.
13135 In addition to global, static, or local variables, the following
13136 special arguments are supported:
13137
13138 @table @code
13139 @item $regs
13140 Collect all registers.
13141
13142 @item $args
13143 Collect all function arguments.
13144
13145 @item $locals
13146 Collect all local variables.
13147
13148 @item $_ret
13149 Collect the return address. This is helpful if you want to see more
13150 of a backtrace.
13151
13152 @emph{Note:} The return address location can not always be reliably
13153 determined up front, and the wrong address / registers may end up
13154 collected instead. On some architectures the reliability is higher
13155 for tracepoints at function entry, while on others it's the opposite.
13156 When this happens, backtracing will stop because the return address is
13157 found unavailable (unless another collect rule happened to match it).
13158
13159 @item $_probe_argc
13160 Collects the number of arguments from the static probe at which the
13161 tracepoint is located.
13162 @xref{Static Probe Points}.
13163
13164 @item $_probe_arg@var{n}
13165 @var{n} is an integer between 0 and 11. Collects the @var{n}th argument
13166 from the static probe at which the tracepoint is located.
13167 @xref{Static Probe Points}.
13168
13169 @item $_sdata
13170 @vindex $_sdata@r{, collect}
13171 Collect static tracepoint marker specific data. Only available for
13172 static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action
13173 Lists}. On the UST static tracepoints library backend, an
13174 instrumentation point resembles a @code{printf} function call. The
13175 tracing library is able to collect user specified data formatted to a
13176 character string using the format provided by the programmer that
13177 instrumented the program. Other backends have similar mechanisms.
13178 Here's an example of a UST marker call:
13179
13180 @smallexample
13181 const char master_name[] = "$your_name";
13182 trace_mark(channel1, marker1, "hello %s", master_name)
13183 @end smallexample
13184
13185 In this case, collecting @code{$_sdata} collects the string
13186 @samp{hello $yourname}. When analyzing the trace buffer, you can
13187 inspect @samp{$_sdata} like any other variable available to
13188 @value{GDBN}.
13189 @end table
13190
13191 You can give several consecutive @code{collect} commands, each one
13192 with a single argument, or one @code{collect} command with several
13193 arguments separated by commas; the effect is the same.
13194
13195 The optional @var{mods} changes the usual handling of the arguments.
13196 @code{s} requests that pointers to chars be handled as strings, in
13197 particular collecting the contents of the memory being pointed at, up
13198 to the first zero. The upper bound is by default the value of the
13199 @code{print elements} variable; if @code{s} is followed by a decimal
13200 number, that is the upper bound instead. So for instance
13201 @samp{collect/s25 mystr} collects as many as 25 characters at
13202 @samp{mystr}.
13203
13204 The command @code{info scope} (@pxref{Symbols, info scope}) is
13205 particularly useful for figuring out what data to collect.
13206
13207 @kindex teval @r{(tracepoints)}
13208 @item teval @var{expr1}, @var{expr2}, @dots{}
13209 Evaluate the given expressions when the tracepoint is hit. This
13210 command accepts a comma-separated list of expressions. The results
13211 are discarded, so this is mainly useful for assigning values to trace
13212 state variables (@pxref{Trace State Variables}) without adding those
13213 values to the trace buffer, as would be the case if the @code{collect}
13214 action were used.
13215
13216 @kindex while-stepping @r{(tracepoints)}
13217 @item while-stepping @var{n}
13218 Perform @var{n} single-step instruction traces after the tracepoint,
13219 collecting new data after each step. The @code{while-stepping}
13220 command is followed by the list of what to collect while stepping
13221 (followed by its own @code{end} command):
13222
13223 @smallexample
13224 > while-stepping 12
13225 > collect $regs, myglobal
13226 > end
13227 >
13228 @end smallexample
13229
13230 @noindent
13231 Note that @code{$pc} is not automatically collected by
13232 @code{while-stepping}; you need to explicitly collect that register if
13233 you need it. You may abbreviate @code{while-stepping} as @code{ws} or
13234 @code{stepping}.
13235
13236 @item set default-collect @var{expr1}, @var{expr2}, @dots{}
13237 @kindex set default-collect
13238 @cindex default collection action
13239 This variable is a list of expressions to collect at each tracepoint
13240 hit. It is effectively an additional @code{collect} action prepended
13241 to every tracepoint action list. The expressions are parsed
13242 individually for each tracepoint, so for instance a variable named
13243 @code{xyz} may be interpreted as a global for one tracepoint, and a
13244 local for another, as appropriate to the tracepoint's location.
13245
13246 @item show default-collect
13247 @kindex show default-collect
13248 Show the list of expressions that are collected by default at each
13249 tracepoint hit.
13250
13251 @end table
13252
13253 @node Listing Tracepoints
13254 @subsection Listing Tracepoints
13255
13256 @table @code
13257 @kindex info tracepoints @r{[}@var{n}@dots{}@r{]}
13258 @kindex info tp @r{[}@var{n}@dots{}@r{]}
13259 @cindex information about tracepoints
13260 @item info tracepoints @r{[}@var{num}@dots{}@r{]}
13261 Display information about the tracepoint @var{num}. If you don't
13262 specify a tracepoint number, displays information about all the
13263 tracepoints defined so far. The format is similar to that used for
13264 @code{info breakpoints}; in fact, @code{info tracepoints} is the same
13265 command, simply restricting itself to tracepoints.
13266
13267 A tracepoint's listing may include additional information specific to
13268 tracing:
13269
13270 @itemize @bullet
13271 @item
13272 its passcount as given by the @code{passcount @var{n}} command
13273
13274 @item
13275 the state about installed on target of each location
13276 @end itemize
13277
13278 @smallexample
13279 (@value{GDBP}) @b{info trace}
13280 Num Type Disp Enb Address What
13281 1 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
13282 while-stepping 20
13283 collect globfoo, $regs
13284 end
13285 collect globfoo2
13286 end
13287 pass count 1200
13288 2 tracepoint keep y <MULTIPLE>
13289 collect $eip
13290 2.1 y 0x0804859c in func4 at change-loc.h:35
13291 installed on target
13292 2.2 y 0xb7ffc480 in func4 at change-loc.h:35
13293 installed on target
13294 2.3 y <PENDING> set_tracepoint
13295 3 tracepoint keep y 0x080485b1 in foo at change-loc.c:29
13296 not installed on target
13297 (@value{GDBP})
13298 @end smallexample
13299
13300 @noindent
13301 This command can be abbreviated @code{info tp}.
13302 @end table
13303
13304 @node Listing Static Tracepoint Markers
13305 @subsection Listing Static Tracepoint Markers
13306
13307 @table @code
13308 @kindex info static-tracepoint-markers
13309 @cindex information about static tracepoint markers
13310 @item info static-tracepoint-markers
13311 Display information about all static tracepoint markers defined in the
13312 program.
13313
13314 For each marker, the following columns are printed:
13315
13316 @table @emph
13317 @item Count
13318 An incrementing counter, output to help readability. This is not a
13319 stable identifier.
13320 @item ID
13321 The marker ID, as reported by the target.
13322 @item Enabled or Disabled
13323 Probed markers are tagged with @samp{y}. @samp{n} identifies marks
13324 that are not enabled.
13325 @item Address
13326 Where the marker is in your program, as a memory address.
13327 @item What
13328 Where the marker is in the source for your program, as a file and line
13329 number. If the debug information included in the program does not
13330 allow @value{GDBN} to locate the source of the marker, this column
13331 will be left blank.
13332 @end table
13333
13334 @noindent
13335 In addition, the following information may be printed for each marker:
13336
13337 @table @emph
13338 @item Data
13339 User data passed to the tracing library by the marker call. In the
13340 UST backend, this is the format string passed as argument to the
13341 marker call.
13342 @item Static tracepoints probing the marker
13343 The list of static tracepoints attached to the marker.
13344 @end table
13345
13346 @smallexample
13347 (@value{GDBP}) info static-tracepoint-markers
13348 Cnt ID Enb Address What
13349 1 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25
13350 Data: number1 %d number2 %d
13351 Probed by static tracepoints: #2
13352 2 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24
13353 Data: str %s
13354 (@value{GDBP})
13355 @end smallexample
13356 @end table
13357
13358 @node Starting and Stopping Trace Experiments
13359 @subsection Starting and Stopping Trace Experiments
13360
13361 @table @code
13362 @kindex tstart [ @var{notes} ]
13363 @cindex start a new trace experiment
13364 @cindex collected data discarded
13365 @item tstart
13366 This command starts the trace experiment, and begins collecting data.
13367 It has the side effect of discarding all the data collected in the
13368 trace buffer during the previous trace experiment. If any arguments
13369 are supplied, they are taken as a note and stored with the trace
13370 experiment's state. The notes may be arbitrary text, and are
13371 especially useful with disconnected tracing in a multi-user context;
13372 the notes can explain what the trace is doing, supply user contact
13373 information, and so forth.
13374
13375 @kindex tstop [ @var{notes} ]
13376 @cindex stop a running trace experiment
13377 @item tstop
13378 This command stops the trace experiment. If any arguments are
13379 supplied, they are recorded with the experiment as a note. This is
13380 useful if you are stopping a trace started by someone else, for
13381 instance if the trace is interfering with the system's behavior and
13382 needs to be stopped quickly.
13383
13384 @strong{Note}: a trace experiment and data collection may stop
13385 automatically if any tracepoint's passcount is reached
13386 (@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
13387
13388 @kindex tstatus
13389 @cindex status of trace data collection
13390 @cindex trace experiment, status of
13391 @item tstatus
13392 This command displays the status of the current trace data
13393 collection.
13394 @end table
13395
13396 Here is an example of the commands we described so far:
13397
13398 @smallexample
13399 (@value{GDBP}) @b{trace gdb_c_test}
13400 (@value{GDBP}) @b{actions}
13401 Enter actions for tracepoint #1, one per line.
13402 > collect $regs,$locals,$args
13403 > while-stepping 11
13404 > collect $regs
13405 > end
13406 > end
13407 (@value{GDBP}) @b{tstart}
13408 [time passes @dots{}]
13409 (@value{GDBP}) @b{tstop}
13410 @end smallexample
13411
13412 @anchor{disconnected tracing}
13413 @cindex disconnected tracing
13414 You can choose to continue running the trace experiment even if
13415 @value{GDBN} disconnects from the target, voluntarily or
13416 involuntarily. For commands such as @code{detach}, the debugger will
13417 ask what you want to do with the trace. But for unexpected
13418 terminations (@value{GDBN} crash, network outage), it would be
13419 unfortunate to lose hard-won trace data, so the variable
13420 @code{disconnected-tracing} lets you decide whether the trace should
13421 continue running without @value{GDBN}.
13422
13423 @table @code
13424 @item set disconnected-tracing on
13425 @itemx set disconnected-tracing off
13426 @kindex set disconnected-tracing
13427 Choose whether a tracing run should continue to run if @value{GDBN}
13428 has disconnected from the target. Note that @code{detach} or
13429 @code{quit} will ask you directly what to do about a running trace no
13430 matter what this variable's setting, so the variable is mainly useful
13431 for handling unexpected situations, such as loss of the network.
13432
13433 @item show disconnected-tracing
13434 @kindex show disconnected-tracing
13435 Show the current choice for disconnected tracing.
13436
13437 @end table
13438
13439 When you reconnect to the target, the trace experiment may or may not
13440 still be running; it might have filled the trace buffer in the
13441 meantime, or stopped for one of the other reasons. If it is running,
13442 it will continue after reconnection.
13443
13444 Upon reconnection, the target will upload information about the
13445 tracepoints in effect. @value{GDBN} will then compare that
13446 information to the set of tracepoints currently defined, and attempt
13447 to match them up, allowing for the possibility that the numbers may
13448 have changed due to creation and deletion in the meantime. If one of
13449 the target's tracepoints does not match any in @value{GDBN}, the
13450 debugger will create a new tracepoint, so that you have a number with
13451 which to specify that tracepoint. This matching-up process is
13452 necessarily heuristic, and it may result in useless tracepoints being
13453 created; you may simply delete them if they are of no use.
13454
13455 @cindex circular trace buffer
13456 If your target agent supports a @dfn{circular trace buffer}, then you
13457 can run a trace experiment indefinitely without filling the trace
13458 buffer; when space runs out, the agent deletes already-collected trace
13459 frames, oldest first, until there is enough room to continue
13460 collecting. This is especially useful if your tracepoints are being
13461 hit too often, and your trace gets terminated prematurely because the
13462 buffer is full. To ask for a circular trace buffer, simply set
13463 @samp{circular-trace-buffer} to on. You can set this at any time,
13464 including during tracing; if the agent can do it, it will change
13465 buffer handling on the fly, otherwise it will not take effect until
13466 the next run.
13467
13468 @table @code
13469 @item set circular-trace-buffer on
13470 @itemx set circular-trace-buffer off
13471 @kindex set circular-trace-buffer
13472 Choose whether a tracing run should use a linear or circular buffer
13473 for trace data. A linear buffer will not lose any trace data, but may
13474 fill up prematurely, while a circular buffer will discard old trace
13475 data, but it will have always room for the latest tracepoint hits.
13476
13477 @item show circular-trace-buffer
13478 @kindex show circular-trace-buffer
13479 Show the current choice for the trace buffer. Note that this may not
13480 match the agent's current buffer handling, nor is it guaranteed to
13481 match the setting that might have been in effect during a past run,
13482 for instance if you are looking at frames from a trace file.
13483
13484 @end table
13485
13486 @table @code
13487 @item set trace-buffer-size @var{n}
13488 @itemx set trace-buffer-size unlimited
13489 @kindex set trace-buffer-size
13490 Request that the target use a trace buffer of @var{n} bytes. Not all
13491 targets will honor the request; they may have a compiled-in size for
13492 the trace buffer, or some other limitation. Set to a value of
13493 @code{unlimited} or @code{-1} to let the target use whatever size it
13494 likes. This is also the default.
13495
13496 @item show trace-buffer-size
13497 @kindex show trace-buffer-size
13498 Show the current requested size for the trace buffer. Note that this
13499 will only match the actual size if the target supports size-setting,
13500 and was able to handle the requested size. For instance, if the
13501 target can only change buffer size between runs, this variable will
13502 not reflect the change until the next run starts. Use @code{tstatus}
13503 to get a report of the actual buffer size.
13504 @end table
13505
13506 @table @code
13507 @item set trace-user @var{text}
13508 @kindex set trace-user
13509
13510 @item show trace-user
13511 @kindex show trace-user
13512
13513 @item set trace-notes @var{text}
13514 @kindex set trace-notes
13515 Set the trace run's notes.
13516
13517 @item show trace-notes
13518 @kindex show trace-notes
13519 Show the trace run's notes.
13520
13521 @item set trace-stop-notes @var{text}
13522 @kindex set trace-stop-notes
13523 Set the trace run's stop notes. The handling of the note is as for
13524 @code{tstop} arguments; the set command is convenient way to fix a
13525 stop note that is mistaken or incomplete.
13526
13527 @item show trace-stop-notes
13528 @kindex show trace-stop-notes
13529 Show the trace run's stop notes.
13530
13531 @end table
13532
13533 @node Tracepoint Restrictions
13534 @subsection Tracepoint Restrictions
13535
13536 @cindex tracepoint restrictions
13537 There are a number of restrictions on the use of tracepoints. As
13538 described above, tracepoint data gathering occurs on the target
13539 without interaction from @value{GDBN}. Thus the full capabilities of
13540 the debugger are not available during data gathering, and then at data
13541 examination time, you will be limited by only having what was
13542 collected. The following items describe some common problems, but it
13543 is not exhaustive, and you may run into additional difficulties not
13544 mentioned here.
13545
13546 @itemize @bullet
13547
13548 @item
13549 Tracepoint expressions are intended to gather objects (lvalues). Thus
13550 the full flexibility of GDB's expression evaluator is not available.
13551 You cannot call functions, cast objects to aggregate types, access
13552 convenience variables or modify values (except by assignment to trace
13553 state variables). Some language features may implicitly call
13554 functions (for instance Objective-C fields with accessors), and therefore
13555 cannot be collected either.
13556
13557 @item
13558 Collection of local variables, either individually or in bulk with
13559 @code{$locals} or @code{$args}, during @code{while-stepping} may
13560 behave erratically. The stepping action may enter a new scope (for
13561 instance by stepping into a function), or the location of the variable
13562 may change (for instance it is loaded into a register). The
13563 tracepoint data recorded uses the location information for the
13564 variables that is correct for the tracepoint location. When the
13565 tracepoint is created, it is not possible, in general, to determine
13566 where the steps of a @code{while-stepping} sequence will advance the
13567 program---particularly if a conditional branch is stepped.
13568
13569 @item
13570 Collection of an incompletely-initialized or partially-destroyed object
13571 may result in something that @value{GDBN} cannot display, or displays
13572 in a misleading way.
13573
13574 @item
13575 When @value{GDBN} displays a pointer to character it automatically
13576 dereferences the pointer to also display characters of the string
13577 being pointed to. However, collecting the pointer during tracing does
13578 not automatically collect the string. You need to explicitly
13579 dereference the pointer and provide size information if you want to
13580 collect not only the pointer, but the memory pointed to. For example,
13581 @code{*ptr@@50} can be used to collect the 50 element array pointed to
13582 by @code{ptr}.
13583
13584 @item
13585 It is not possible to collect a complete stack backtrace at a
13586 tracepoint. Instead, you may collect the registers and a few hundred
13587 bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300}
13588 (adjust to use the name of the actual stack pointer register on your
13589 target architecture, and the amount of stack you wish to capture).
13590 Then the @code{backtrace} command will show a partial backtrace when
13591 using a trace frame. The number of stack frames that can be examined
13592 depends on the sizes of the frames in the collected stack. Note that
13593 if you ask for a block so large that it goes past the bottom of the
13594 stack, the target agent may report an error trying to read from an
13595 invalid address.
13596
13597 @item
13598 If you do not collect registers at a tracepoint, @value{GDBN} can
13599 infer that the value of @code{$pc} must be the same as the address of
13600 the tracepoint and use that when you are looking at a trace frame
13601 for that tracepoint. However, this cannot work if the tracepoint has
13602 multiple locations (for instance if it was set in a function that was
13603 inlined), or if it has a @code{while-stepping} loop. In those cases
13604 @value{GDBN} will warn you that it can't infer @code{$pc}, and default
13605 it to zero.
13606
13607 @end itemize
13608
13609 @node Analyze Collected Data
13610 @section Using the Collected Data
13611
13612 After the tracepoint experiment ends, you use @value{GDBN} commands
13613 for examining the trace data. The basic idea is that each tracepoint
13614 collects a trace @dfn{snapshot} every time it is hit and another
13615 snapshot every time it single-steps. All these snapshots are
13616 consecutively numbered from zero and go into a buffer, and you can
13617 examine them later. The way you examine them is to @dfn{focus} on a
13618 specific trace snapshot. When the remote stub is focused on a trace
13619 snapshot, it will respond to all @value{GDBN} requests for memory and
13620 registers by reading from the buffer which belongs to that snapshot,
13621 rather than from @emph{real} memory or registers of the program being
13622 debugged. This means that @strong{all} @value{GDBN} commands
13623 (@code{print}, @code{info registers}, @code{backtrace}, etc.) will
13624 behave as if we were currently debugging the program state as it was
13625 when the tracepoint occurred. Any requests for data that are not in
13626 the buffer will fail.
13627
13628 @menu
13629 * tfind:: How to select a trace snapshot
13630 * tdump:: How to display all data for a snapshot
13631 * save tracepoints:: How to save tracepoints for a future run
13632 @end menu
13633
13634 @node tfind
13635 @subsection @code{tfind @var{n}}
13636
13637 @kindex tfind
13638 @cindex select trace snapshot
13639 @cindex find trace snapshot
13640 The basic command for selecting a trace snapshot from the buffer is
13641 @code{tfind @var{n}}, which finds trace snapshot number @var{n},
13642 counting from zero. If no argument @var{n} is given, the next
13643 snapshot is selected.
13644
13645 Here are the various forms of using the @code{tfind} command.
13646
13647 @table @code
13648 @item tfind start
13649 Find the first snapshot in the buffer. This is a synonym for
13650 @code{tfind 0} (since 0 is the number of the first snapshot).
13651
13652 @item tfind none
13653 Stop debugging trace snapshots, resume @emph{live} debugging.
13654
13655 @item tfind end
13656 Same as @samp{tfind none}.
13657
13658 @item tfind
13659 No argument means find the next trace snapshot or find the first
13660 one if no trace snapshot is selected.
13661
13662 @item tfind -
13663 Find the previous trace snapshot before the current one. This permits
13664 retracing earlier steps.
13665
13666 @item tfind tracepoint @var{num}
13667 Find the next snapshot associated with tracepoint @var{num}. Search
13668 proceeds forward from the last examined trace snapshot. If no
13669 argument @var{num} is given, it means find the next snapshot collected
13670 for the same tracepoint as the current snapshot.
13671
13672 @item tfind pc @var{addr}
13673 Find the next snapshot associated with the value @var{addr} of the
13674 program counter. Search proceeds forward from the last examined trace
13675 snapshot. If no argument @var{addr} is given, it means find the next
13676 snapshot with the same value of PC as the current snapshot.
13677
13678 @item tfind outside @var{addr1}, @var{addr2}
13679 Find the next snapshot whose PC is outside the given range of
13680 addresses (exclusive).
13681
13682 @item tfind range @var{addr1}, @var{addr2}
13683 Find the next snapshot whose PC is between @var{addr1} and
13684 @var{addr2} (inclusive).
13685
13686 @item tfind line @r{[}@var{file}:@r{]}@var{n}
13687 Find the next snapshot associated with the source line @var{n}. If
13688 the optional argument @var{file} is given, refer to line @var{n} in
13689 that source file. Search proceeds forward from the last examined
13690 trace snapshot. If no argument @var{n} is given, it means find the
13691 next line other than the one currently being examined; thus saying
13692 @code{tfind line} repeatedly can appear to have the same effect as
13693 stepping from line to line in a @emph{live} debugging session.
13694 @end table
13695
13696 The default arguments for the @code{tfind} commands are specifically
13697 designed to make it easy to scan through the trace buffer. For
13698 instance, @code{tfind} with no argument selects the next trace
13699 snapshot, and @code{tfind -} with no argument selects the previous
13700 trace snapshot. So, by giving one @code{tfind} command, and then
13701 simply hitting @key{RET} repeatedly you can examine all the trace
13702 snapshots in order. Or, by saying @code{tfind -} and then hitting
13703 @key{RET} repeatedly you can examine the snapshots in reverse order.
13704 The @code{tfind line} command with no argument selects the snapshot
13705 for the next source line executed. The @code{tfind pc} command with
13706 no argument selects the next snapshot with the same program counter
13707 (PC) as the current frame. The @code{tfind tracepoint} command with
13708 no argument selects the next trace snapshot collected by the same
13709 tracepoint as the current one.
13710
13711 In addition to letting you scan through the trace buffer manually,
13712 these commands make it easy to construct @value{GDBN} scripts that
13713 scan through the trace buffer and print out whatever collected data
13714 you are interested in. Thus, if we want to examine the PC, FP, and SP
13715 registers from each trace frame in the buffer, we can say this:
13716
13717 @smallexample
13718 (@value{GDBP}) @b{tfind start}
13719 (@value{GDBP}) @b{while ($trace_frame != -1)}
13720 > printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
13721 $trace_frame, $pc, $sp, $fp
13722 > tfind
13723 > end
13724
13725 Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
13726 Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
13727 Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
13728 Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
13729 Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
13730 Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
13731 Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
13732 Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
13733 Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
13734 Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
13735 Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
13736 @end smallexample
13737
13738 Or, if we want to examine the variable @code{X} at each source line in
13739 the buffer:
13740
13741 @smallexample
13742 (@value{GDBP}) @b{tfind start}
13743 (@value{GDBP}) @b{while ($trace_frame != -1)}
13744 > printf "Frame %d, X == %d\n", $trace_frame, X
13745 > tfind line
13746 > end
13747
13748 Frame 0, X = 1
13749 Frame 7, X = 2
13750 Frame 13, X = 255
13751 @end smallexample
13752
13753 @node tdump
13754 @subsection @code{tdump}
13755 @kindex tdump
13756 @cindex dump all data collected at tracepoint
13757 @cindex tracepoint data, display
13758
13759 This command takes no arguments. It prints all the data collected at
13760 the current trace snapshot.
13761
13762 @smallexample
13763 (@value{GDBP}) @b{trace 444}
13764 (@value{GDBP}) @b{actions}
13765 Enter actions for tracepoint #2, one per line:
13766 > collect $regs, $locals, $args, gdb_long_test
13767 > end
13768
13769 (@value{GDBP}) @b{tstart}
13770
13771 (@value{GDBP}) @b{tfind line 444}
13772 #0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
13773 at gdb_test.c:444
13774 444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
13775
13776 (@value{GDBP}) @b{tdump}
13777 Data collected at tracepoint 2, trace frame 1:
13778 d0 0xc4aa0085 -995491707
13779 d1 0x18 24
13780 d2 0x80 128
13781 d3 0x33 51
13782 d4 0x71aea3d 119204413
13783 d5 0x22 34
13784 d6 0xe0 224
13785 d7 0x380035 3670069
13786 a0 0x19e24a 1696330
13787 a1 0x3000668 50333288
13788 a2 0x100 256
13789 a3 0x322000 3284992
13790 a4 0x3000698 50333336
13791 a5 0x1ad3cc 1758156
13792 fp 0x30bf3c 0x30bf3c
13793 sp 0x30bf34 0x30bf34
13794 ps 0x0 0
13795 pc 0x20b2c8 0x20b2c8
13796 fpcontrol 0x0 0
13797 fpstatus 0x0 0
13798 fpiaddr 0x0 0
13799 p = 0x20e5b4 "gdb-test"
13800 p1 = (void *) 0x11
13801 p2 = (void *) 0x22
13802 p3 = (void *) 0x33
13803 p4 = (void *) 0x44
13804 p5 = (void *) 0x55
13805 p6 = (void *) 0x66
13806 gdb_long_test = 17 '\021'
13807
13808 (@value{GDBP})
13809 @end smallexample
13810
13811 @code{tdump} works by scanning the tracepoint's current collection
13812 actions and printing the value of each expression listed. So
13813 @code{tdump} can fail, if after a run, you change the tracepoint's
13814 actions to mention variables that were not collected during the run.
13815
13816 Also, for tracepoints with @code{while-stepping} loops, @code{tdump}
13817 uses the collected value of @code{$pc} to distinguish between trace
13818 frames that were collected at the tracepoint hit, and frames that were
13819 collected while stepping. This allows it to correctly choose whether
13820 to display the basic list of collections, or the collections from the
13821 body of the while-stepping loop. However, if @code{$pc} was not collected,
13822 then @code{tdump} will always attempt to dump using the basic collection
13823 list, and may fail if a while-stepping frame does not include all the
13824 same data that is collected at the tracepoint hit.
13825 @c This is getting pretty arcane, example would be good.
13826
13827 @node save tracepoints
13828 @subsection @code{save tracepoints @var{filename}}
13829 @kindex save tracepoints
13830 @kindex save-tracepoints
13831 @cindex save tracepoints for future sessions
13832
13833 This command saves all current tracepoint definitions together with
13834 their actions and passcounts, into a file @file{@var{filename}}
13835 suitable for use in a later debugging session. To read the saved
13836 tracepoint definitions, use the @code{source} command (@pxref{Command
13837 Files}). The @w{@code{save-tracepoints}} command is a deprecated
13838 alias for @w{@code{save tracepoints}}
13839
13840 @node Tracepoint Variables
13841 @section Convenience Variables for Tracepoints
13842 @cindex tracepoint variables
13843 @cindex convenience variables for tracepoints
13844
13845 @table @code
13846 @vindex $trace_frame
13847 @item (int) $trace_frame
13848 The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
13849 snapshot is selected.
13850
13851 @vindex $tracepoint
13852 @item (int) $tracepoint
13853 The tracepoint for the current trace snapshot.
13854
13855 @vindex $trace_line
13856 @item (int) $trace_line
13857 The line number for the current trace snapshot.
13858
13859 @vindex $trace_file
13860 @item (char []) $trace_file
13861 The source file for the current trace snapshot.
13862
13863 @vindex $trace_func
13864 @item (char []) $trace_func
13865 The name of the function containing @code{$tracepoint}.
13866 @end table
13867
13868 Note: @code{$trace_file} is not suitable for use in @code{printf},
13869 use @code{output} instead.
13870
13871 Here's a simple example of using these convenience variables for
13872 stepping through all the trace snapshots and printing some of their
13873 data. Note that these are not the same as trace state variables,
13874 which are managed by the target.
13875
13876 @smallexample
13877 (@value{GDBP}) @b{tfind start}
13878
13879 (@value{GDBP}) @b{while $trace_frame != -1}
13880 > output $trace_file
13881 > printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
13882 > tfind
13883 > end
13884 @end smallexample
13885
13886 @node Trace Files
13887 @section Using Trace Files
13888 @cindex trace files
13889
13890 In some situations, the target running a trace experiment may no
13891 longer be available; perhaps it crashed, or the hardware was needed
13892 for a different activity. To handle these cases, you can arrange to
13893 dump the trace data into a file, and later use that file as a source
13894 of trace data, via the @code{target tfile} command.
13895
13896 @table @code
13897
13898 @kindex tsave
13899 @item tsave [ -r ] @var{filename}
13900 @itemx tsave [-ctf] @var{dirname}
13901 Save the trace data to @var{filename}. By default, this command
13902 assumes that @var{filename} refers to the host filesystem, so if
13903 necessary @value{GDBN} will copy raw trace data up from the target and
13904 then save it. If the target supports it, you can also supply the
13905 optional argument @code{-r} (``remote'') to direct the target to save
13906 the data directly into @var{filename} in its own filesystem, which may be
13907 more efficient if the trace buffer is very large. (Note, however, that
13908 @code{target tfile} can only read from files accessible to the host.)
13909 By default, this command will save trace frame in tfile format.
13910 You can supply the optional argument @code{-ctf} to save data in CTF
13911 format. The @dfn{Common Trace Format} (CTF) is proposed as a trace format
13912 that can be shared by multiple debugging and tracing tools. Please go to
13913 @indicateurl{http://www.efficios.com/ctf} to get more information.
13914
13915 @kindex target tfile
13916 @kindex tfile
13917 @kindex target ctf
13918 @kindex ctf
13919 @item target tfile @var{filename}
13920 @itemx target ctf @var{dirname}
13921 Use the file named @var{filename} or directory named @var{dirname} as
13922 a source of trace data. Commands that examine data work as they do with
13923 a live target, but it is not possible to run any new trace experiments.
13924 @code{tstatus} will report the state of the trace run at the moment
13925 the data was saved, as well as the current trace frame you are examining.
13926 Both @var{filename} and @var{dirname} must be on a filesystem accessible to
13927 the host.
13928
13929 @smallexample
13930 (@value{GDBP}) target ctf ctf.ctf
13931 (@value{GDBP}) tfind
13932 Found trace frame 0, tracepoint 2
13933 39 ++a; /* set tracepoint 1 here */
13934 (@value{GDBP}) tdump
13935 Data collected at tracepoint 2, trace frame 0:
13936 i = 0
13937 a = 0
13938 b = 1 '\001'
13939 c = @{"123", "456", "789", "123", "456", "789"@}
13940 d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@}
13941 (@value{GDBP}) p b
13942 $1 = 1
13943 @end smallexample
13944
13945 @end table
13946
13947 @node Overlays
13948 @chapter Debugging Programs That Use Overlays
13949 @cindex overlays
13950
13951 If your program is too large to fit completely in your target system's
13952 memory, you can sometimes use @dfn{overlays} to work around this
13953 problem. @value{GDBN} provides some support for debugging programs that
13954 use overlays.
13955
13956 @menu
13957 * How Overlays Work:: A general explanation of overlays.
13958 * Overlay Commands:: Managing overlays in @value{GDBN}.
13959 * Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
13960 mapped by asking the inferior.
13961 * Overlay Sample Program:: A sample program using overlays.
13962 @end menu
13963
13964 @node How Overlays Work
13965 @section How Overlays Work
13966 @cindex mapped overlays
13967 @cindex unmapped overlays
13968 @cindex load address, overlay's
13969 @cindex mapped address
13970 @cindex overlay area
13971
13972 Suppose you have a computer whose instruction address space is only 64
13973 kilobytes long, but which has much more memory which can be accessed by
13974 other means: special instructions, segment registers, or memory
13975 management hardware, for example. Suppose further that you want to
13976 adapt a program which is larger than 64 kilobytes to run on this system.
13977
13978 One solution is to identify modules of your program which are relatively
13979 independent, and need not call each other directly; call these modules
13980 @dfn{overlays}. Separate the overlays from the main program, and place
13981 their machine code in the larger memory. Place your main program in
13982 instruction memory, but leave at least enough space there to hold the
13983 largest overlay as well.
13984
13985 Now, to call a function located in an overlay, you must first copy that
13986 overlay's machine code from the large memory into the space set aside
13987 for it in the instruction memory, and then jump to its entry point
13988 there.
13989
13990 @c NB: In the below the mapped area's size is greater or equal to the
13991 @c size of all overlays. This is intentional to remind the developer
13992 @c that overlays don't necessarily need to be the same size.
13993
13994 @smallexample
13995 @group
13996 Data Instruction Larger
13997 Address Space Address Space Address Space
13998 +-----------+ +-----------+ +-----------+
13999 | | | | | |
14000 +-----------+ +-----------+ +-----------+<-- overlay 1
14001 | program | | main | .----| overlay 1 | load address
14002 | variables | | program | | +-----------+
14003 | and heap | | | | | |
14004 +-----------+ | | | +-----------+<-- overlay 2
14005 | | +-----------+ | | | load address
14006 +-----------+ | | | .-| overlay 2 |
14007 | | | | | |
14008 mapped --->+-----------+ | | +-----------+
14009 address | | | | | |
14010 | overlay | <-' | | |
14011 | area | <---' +-----------+<-- overlay 3
14012 | | <---. | | load address
14013 +-----------+ `--| overlay 3 |
14014 | | | |
14015 +-----------+ | |
14016 +-----------+
14017 | |
14018 +-----------+
14019
14020 @anchor{A code overlay}A code overlay
14021 @end group
14022 @end smallexample
14023
14024 The diagram (@pxref{A code overlay}) shows a system with separate data
14025 and instruction address spaces. To map an overlay, the program copies
14026 its code from the larger address space to the instruction address space.
14027 Since the overlays shown here all use the same mapped address, only one
14028 may be mapped at a time. For a system with a single address space for
14029 data and instructions, the diagram would be similar, except that the
14030 program variables and heap would share an address space with the main
14031 program and the overlay area.
14032
14033 An overlay loaded into instruction memory and ready for use is called a
14034 @dfn{mapped} overlay; its @dfn{mapped address} is its address in the
14035 instruction memory. An overlay not present (or only partially present)
14036 in instruction memory is called @dfn{unmapped}; its @dfn{load address}
14037 is its address in the larger memory. The mapped address is also called
14038 the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
14039 called the @dfn{load memory address}, or @dfn{LMA}.
14040
14041 Unfortunately, overlays are not a completely transparent way to adapt a
14042 program to limited instruction memory. They introduce a new set of
14043 global constraints you must keep in mind as you design your program:
14044
14045 @itemize @bullet
14046
14047 @item
14048 Before calling or returning to a function in an overlay, your program
14049 must make sure that overlay is actually mapped. Otherwise, the call or
14050 return will transfer control to the right address, but in the wrong
14051 overlay, and your program will probably crash.
14052
14053 @item
14054 If the process of mapping an overlay is expensive on your system, you
14055 will need to choose your overlays carefully to minimize their effect on
14056 your program's performance.
14057
14058 @item
14059 The executable file you load onto your system must contain each
14060 overlay's instructions, appearing at the overlay's load address, not its
14061 mapped address. However, each overlay's instructions must be relocated
14062 and its symbols defined as if the overlay were at its mapped address.
14063 You can use GNU linker scripts to specify different load and relocation
14064 addresses for pieces of your program; see @ref{Overlay Description,,,
14065 ld.info, Using ld: the GNU linker}.
14066
14067 @item
14068 The procedure for loading executable files onto your system must be able
14069 to load their contents into the larger address space as well as the
14070 instruction and data spaces.
14071
14072 @end itemize
14073
14074 The overlay system described above is rather simple, and could be
14075 improved in many ways:
14076
14077 @itemize @bullet
14078
14079 @item
14080 If your system has suitable bank switch registers or memory management
14081 hardware, you could use those facilities to make an overlay's load area
14082 contents simply appear at their mapped address in instruction space.
14083 This would probably be faster than copying the overlay to its mapped
14084 area in the usual way.
14085
14086 @item
14087 If your overlays are small enough, you could set aside more than one
14088 overlay area, and have more than one overlay mapped at a time.
14089
14090 @item
14091 You can use overlays to manage data, as well as instructions. In
14092 general, data overlays are even less transparent to your design than
14093 code overlays: whereas code overlays only require care when you call or
14094 return to functions, data overlays require care every time you access
14095 the data. Also, if you change the contents of a data overlay, you
14096 must copy its contents back out to its load address before you can copy a
14097 different data overlay into the same mapped area.
14098
14099 @end itemize
14100
14101
14102 @node Overlay Commands
14103 @section Overlay Commands
14104
14105 To use @value{GDBN}'s overlay support, each overlay in your program must
14106 correspond to a separate section of the executable file. The section's
14107 virtual memory address and load memory address must be the overlay's
14108 mapped and load addresses. Identifying overlays with sections allows
14109 @value{GDBN} to determine the appropriate address of a function or
14110 variable, depending on whether the overlay is mapped or not.
14111
14112 @value{GDBN}'s overlay commands all start with the word @code{overlay};
14113 you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
14114
14115 @table @code
14116 @item overlay off
14117 @kindex overlay
14118 Disable @value{GDBN}'s overlay support. When overlay support is
14119 disabled, @value{GDBN} assumes that all functions and variables are
14120 always present at their mapped addresses. By default, @value{GDBN}'s
14121 overlay support is disabled.
14122
14123 @item overlay manual
14124 @cindex manual overlay debugging
14125 Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
14126 relies on you to tell it which overlays are mapped, and which are not,
14127 using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
14128 commands described below.
14129
14130 @item overlay map-overlay @var{overlay}
14131 @itemx overlay map @var{overlay}
14132 @cindex map an overlay
14133 Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
14134 be the name of the object file section containing the overlay. When an
14135 overlay is mapped, @value{GDBN} assumes it can find the overlay's
14136 functions and variables at their mapped addresses. @value{GDBN} assumes
14137 that any other overlays whose mapped ranges overlap that of
14138 @var{overlay} are now unmapped.
14139
14140 @item overlay unmap-overlay @var{overlay}
14141 @itemx overlay unmap @var{overlay}
14142 @cindex unmap an overlay
14143 Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
14144 must be the name of the object file section containing the overlay.
14145 When an overlay is unmapped, @value{GDBN} assumes it can find the
14146 overlay's functions and variables at their load addresses.
14147
14148 @item overlay auto
14149 Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
14150 consults a data structure the overlay manager maintains in the inferior
14151 to see which overlays are mapped. For details, see @ref{Automatic
14152 Overlay Debugging}.
14153
14154 @item overlay load-target
14155 @itemx overlay load
14156 @cindex reloading the overlay table
14157 Re-read the overlay table from the inferior. Normally, @value{GDBN}
14158 re-reads the table @value{GDBN} automatically each time the inferior
14159 stops, so this command should only be necessary if you have changed the
14160 overlay mapping yourself using @value{GDBN}. This command is only
14161 useful when using automatic overlay debugging.
14162
14163 @item overlay list-overlays
14164 @itemx overlay list
14165 @cindex listing mapped overlays
14166 Display a list of the overlays currently mapped, along with their mapped
14167 addresses, load addresses, and sizes.
14168
14169 @end table
14170
14171 Normally, when @value{GDBN} prints a code address, it includes the name
14172 of the function the address falls in:
14173
14174 @smallexample
14175 (@value{GDBP}) print main
14176 $3 = @{int ()@} 0x11a0 <main>
14177 @end smallexample
14178 @noindent
14179 When overlay debugging is enabled, @value{GDBN} recognizes code in
14180 unmapped overlays, and prints the names of unmapped functions with
14181 asterisks around them. For example, if @code{foo} is a function in an
14182 unmapped overlay, @value{GDBN} prints it this way:
14183
14184 @smallexample
14185 (@value{GDBP}) overlay list
14186 No sections are mapped.
14187 (@value{GDBP}) print foo
14188 $5 = @{int (int)@} 0x100000 <*foo*>
14189 @end smallexample
14190 @noindent
14191 When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
14192 name normally:
14193
14194 @smallexample
14195 (@value{GDBP}) overlay list
14196 Section .ov.foo.text, loaded at 0x100000 - 0x100034,
14197 mapped at 0x1016 - 0x104a
14198 (@value{GDBP}) print foo
14199 $6 = @{int (int)@} 0x1016 <foo>
14200 @end smallexample
14201
14202 When overlay debugging is enabled, @value{GDBN} can find the correct
14203 address for functions and variables in an overlay, whether or not the
14204 overlay is mapped. This allows most @value{GDBN} commands, like
14205 @code{break} and @code{disassemble}, to work normally, even on unmapped
14206 code. However, @value{GDBN}'s breakpoint support has some limitations:
14207
14208 @itemize @bullet
14209 @item
14210 @cindex breakpoints in overlays
14211 @cindex overlays, setting breakpoints in
14212 You can set breakpoints in functions in unmapped overlays, as long as
14213 @value{GDBN} can write to the overlay at its load address.
14214 @item
14215 @value{GDBN} can not set hardware or simulator-based breakpoints in
14216 unmapped overlays. However, if you set a breakpoint at the end of your
14217 overlay manager (and tell @value{GDBN} which overlays are now mapped, if
14218 you are using manual overlay management), @value{GDBN} will re-set its
14219 breakpoints properly.
14220 @end itemize
14221
14222
14223 @node Automatic Overlay Debugging
14224 @section Automatic Overlay Debugging
14225 @cindex automatic overlay debugging
14226
14227 @value{GDBN} can automatically track which overlays are mapped and which
14228 are not, given some simple co-operation from the overlay manager in the
14229 inferior. If you enable automatic overlay debugging with the
14230 @code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
14231 looks in the inferior's memory for certain variables describing the
14232 current state of the overlays.
14233
14234 Here are the variables your overlay manager must define to support
14235 @value{GDBN}'s automatic overlay debugging:
14236
14237 @table @asis
14238
14239 @item @code{_ovly_table}:
14240 This variable must be an array of the following structures:
14241
14242 @smallexample
14243 struct
14244 @{
14245 /* The overlay's mapped address. */
14246 unsigned long vma;
14247
14248 /* The size of the overlay, in bytes. */
14249 unsigned long size;
14250
14251 /* The overlay's load address. */
14252 unsigned long lma;
14253
14254 /* Non-zero if the overlay is currently mapped;
14255 zero otherwise. */
14256 unsigned long mapped;
14257 @}
14258 @end smallexample
14259
14260 @item @code{_novlys}:
14261 This variable must be a four-byte signed integer, holding the total
14262 number of elements in @code{_ovly_table}.
14263
14264 @end table
14265
14266 To decide whether a particular overlay is mapped or not, @value{GDBN}
14267 looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
14268 @code{lma} members equal the VMA and LMA of the overlay's section in the
14269 executable file. When @value{GDBN} finds a matching entry, it consults
14270 the entry's @code{mapped} member to determine whether the overlay is
14271 currently mapped.
14272
14273 In addition, your overlay manager may define a function called
14274 @code{_ovly_debug_event}. If this function is defined, @value{GDBN}
14275 will silently set a breakpoint there. If the overlay manager then
14276 calls this function whenever it has changed the overlay table, this
14277 will enable @value{GDBN} to accurately keep track of which overlays
14278 are in program memory, and update any breakpoints that may be set
14279 in overlays. This will allow breakpoints to work even if the
14280 overlays are kept in ROM or other non-writable memory while they
14281 are not being executed.
14282
14283 @node Overlay Sample Program
14284 @section Overlay Sample Program
14285 @cindex overlay example program
14286
14287 When linking a program which uses overlays, you must place the overlays
14288 at their load addresses, while relocating them to run at their mapped
14289 addresses. To do this, you must write a linker script (@pxref{Overlay
14290 Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
14291 since linker scripts are specific to a particular host system, target
14292 architecture, and target memory layout, this manual cannot provide
14293 portable sample code demonstrating @value{GDBN}'s overlay support.
14294
14295 However, the @value{GDBN} source distribution does contain an overlaid
14296 program, with linker scripts for a few systems, as part of its test
14297 suite. The program consists of the following files from
14298 @file{gdb/testsuite/gdb.base}:
14299
14300 @table @file
14301 @item overlays.c
14302 The main program file.
14303 @item ovlymgr.c
14304 A simple overlay manager, used by @file{overlays.c}.
14305 @item foo.c
14306 @itemx bar.c
14307 @itemx baz.c
14308 @itemx grbx.c
14309 Overlay modules, loaded and used by @file{overlays.c}.
14310 @item d10v.ld
14311 @itemx m32r.ld
14312 Linker scripts for linking the test program on the @code{d10v-elf}
14313 and @code{m32r-elf} targets.
14314 @end table
14315
14316 You can build the test program using the @code{d10v-elf} GCC
14317 cross-compiler like this:
14318
14319 @smallexample
14320 $ d10v-elf-gcc -g -c overlays.c
14321 $ d10v-elf-gcc -g -c ovlymgr.c
14322 $ d10v-elf-gcc -g -c foo.c
14323 $ d10v-elf-gcc -g -c bar.c
14324 $ d10v-elf-gcc -g -c baz.c
14325 $ d10v-elf-gcc -g -c grbx.c
14326 $ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
14327 baz.o grbx.o -Wl,-Td10v.ld -o overlays
14328 @end smallexample
14329
14330 The build process is identical for any other architecture, except that
14331 you must substitute the appropriate compiler and linker script for the
14332 target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
14333
14334
14335 @node Languages
14336 @chapter Using @value{GDBN} with Different Languages
14337 @cindex languages
14338
14339 Although programming languages generally have common aspects, they are
14340 rarely expressed in the same manner. For instance, in ANSI C,
14341 dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
14342 Modula-2, it is accomplished by @code{p^}. Values can also be
14343 represented (and displayed) differently. Hex numbers in C appear as
14344 @samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
14345
14346 @cindex working language
14347 Language-specific information is built into @value{GDBN} for some languages,
14348 allowing you to express operations like the above in your program's
14349 native language, and allowing @value{GDBN} to output values in a manner
14350 consistent with the syntax of your program's native language. The
14351 language you use to build expressions is called the @dfn{working
14352 language}.
14353
14354 @menu
14355 * Setting:: Switching between source languages
14356 * Show:: Displaying the language
14357 * Checks:: Type and range checks
14358 * Supported Languages:: Supported languages
14359 * Unsupported Languages:: Unsupported languages
14360 @end menu
14361
14362 @node Setting
14363 @section Switching Between Source Languages
14364
14365 There are two ways to control the working language---either have @value{GDBN}
14366 set it automatically, or select it manually yourself. You can use the
14367 @code{set language} command for either purpose. On startup, @value{GDBN}
14368 defaults to setting the language automatically. The working language is
14369 used to determine how expressions you type are interpreted, how values
14370 are printed, etc.
14371
14372 In addition to the working language, every source file that
14373 @value{GDBN} knows about has its own working language. For some object
14374 file formats, the compiler might indicate which language a particular
14375 source file is in. However, most of the time @value{GDBN} infers the
14376 language from the name of the file. The language of a source file
14377 controls whether C@t{++} names are demangled---this way @code{backtrace} can
14378 show each frame appropriately for its own language. There is no way to
14379 set the language of a source file from within @value{GDBN}, but you can
14380 set the language associated with a filename extension. @xref{Show, ,
14381 Displaying the Language}.
14382
14383 This is most commonly a problem when you use a program, such
14384 as @code{cfront} or @code{f2c}, that generates C but is written in
14385 another language. In that case, make the
14386 program use @code{#line} directives in its C output; that way
14387 @value{GDBN} will know the correct language of the source code of the original
14388 program, and will display that source code, not the generated C code.
14389
14390 @menu
14391 * Filenames:: Filename extensions and languages.
14392 * Manually:: Setting the working language manually
14393 * Automatically:: Having @value{GDBN} infer the source language
14394 @end menu
14395
14396 @node Filenames
14397 @subsection List of Filename Extensions and Languages
14398
14399 If a source file name ends in one of the following extensions, then
14400 @value{GDBN} infers that its language is the one indicated.
14401
14402 @table @file
14403 @item .ada
14404 @itemx .ads
14405 @itemx .adb
14406 @itemx .a
14407 Ada source file.
14408
14409 @item .c
14410 C source file
14411
14412 @item .C
14413 @itemx .cc
14414 @itemx .cp
14415 @itemx .cpp
14416 @itemx .cxx
14417 @itemx .c++
14418 C@t{++} source file
14419
14420 @item .d
14421 D source file
14422
14423 @item .m
14424 Objective-C source file
14425
14426 @item .f
14427 @itemx .F
14428 Fortran source file
14429
14430 @item .mod
14431 Modula-2 source file
14432
14433 @item .s
14434 @itemx .S
14435 Assembler source file. This actually behaves almost like C, but
14436 @value{GDBN} does not skip over function prologues when stepping.
14437 @end table
14438
14439 In addition, you may set the language associated with a filename
14440 extension. @xref{Show, , Displaying the Language}.
14441
14442 @node Manually
14443 @subsection Setting the Working Language
14444
14445 If you allow @value{GDBN} to set the language automatically,
14446 expressions are interpreted the same way in your debugging session and
14447 your program.
14448
14449 @kindex set language
14450 If you wish, you may set the language manually. To do this, issue the
14451 command @samp{set language @var{lang}}, where @var{lang} is the name of
14452 a language, such as
14453 @code{c} or @code{modula-2}.
14454 For a list of the supported languages, type @samp{set language}.
14455
14456 Setting the language manually prevents @value{GDBN} from updating the working
14457 language automatically. This can lead to confusion if you try
14458 to debug a program when the working language is not the same as the
14459 source language, when an expression is acceptable to both
14460 languages---but means different things. For instance, if the current
14461 source file were written in C, and @value{GDBN} was parsing Modula-2, a
14462 command such as:
14463
14464 @smallexample
14465 print a = b + c
14466 @end smallexample
14467
14468 @noindent
14469 might not have the effect you intended. In C, this means to add
14470 @code{b} and @code{c} and place the result in @code{a}. The result
14471 printed would be the value of @code{a}. In Modula-2, this means to compare
14472 @code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
14473
14474 @node Automatically
14475 @subsection Having @value{GDBN} Infer the Source Language
14476
14477 To have @value{GDBN} set the working language automatically, use
14478 @samp{set language local} or @samp{set language auto}. @value{GDBN}
14479 then infers the working language. That is, when your program stops in a
14480 frame (usually by encountering a breakpoint), @value{GDBN} sets the
14481 working language to the language recorded for the function in that
14482 frame. If the language for a frame is unknown (that is, if the function
14483 or block corresponding to the frame was defined in a source file that
14484 does not have a recognized extension), the current working language is
14485 not changed, and @value{GDBN} issues a warning.
14486
14487 This may not seem necessary for most programs, which are written
14488 entirely in one source language. However, program modules and libraries
14489 written in one source language can be used by a main program written in
14490 a different source language. Using @samp{set language auto} in this
14491 case frees you from having to set the working language manually.
14492
14493 @node Show
14494 @section Displaying the Language
14495
14496 The following commands help you find out which language is the
14497 working language, and also what language source files were written in.
14498
14499 @table @code
14500 @item show language
14501 @anchor{show language}
14502 @kindex show language
14503 Display the current working language. This is the
14504 language you can use with commands such as @code{print} to
14505 build and compute expressions that may involve variables in your program.
14506
14507 @item info frame
14508 @kindex info frame@r{, show the source language}
14509 Display the source language for this frame. This language becomes the
14510 working language if you use an identifier from this frame.
14511 @xref{Frame Info, ,Information about a Frame}, to identify the other
14512 information listed here.
14513
14514 @item info source
14515 @kindex info source@r{, show the source language}
14516 Display the source language of this source file.
14517 @xref{Symbols, ,Examining the Symbol Table}, to identify the other
14518 information listed here.
14519 @end table
14520
14521 In unusual circumstances, you may have source files with extensions
14522 not in the standard list. You can then set the extension associated
14523 with a language explicitly:
14524
14525 @table @code
14526 @item set extension-language @var{ext} @var{language}
14527 @kindex set extension-language
14528 Tell @value{GDBN} that source files with extension @var{ext} are to be
14529 assumed as written in the source language @var{language}.
14530
14531 @item info extensions
14532 @kindex info extensions
14533 List all the filename extensions and the associated languages.
14534 @end table
14535
14536 @node Checks
14537 @section Type and Range Checking
14538
14539 Some languages are designed to guard you against making seemingly common
14540 errors through a series of compile- and run-time checks. These include
14541 checking the type of arguments to functions and operators and making
14542 sure mathematical overflows are caught at run time. Checks such as
14543 these help to ensure a program's correctness once it has been compiled
14544 by eliminating type mismatches and providing active checks for range
14545 errors when your program is running.
14546
14547 By default @value{GDBN} checks for these errors according to the
14548 rules of the current source language. Although @value{GDBN} does not check
14549 the statements in your program, it can check expressions entered directly
14550 into @value{GDBN} for evaluation via the @code{print} command, for example.
14551
14552 @menu
14553 * Type Checking:: An overview of type checking
14554 * Range Checking:: An overview of range checking
14555 @end menu
14556
14557 @cindex type checking
14558 @cindex checks, type
14559 @node Type Checking
14560 @subsection An Overview of Type Checking
14561
14562 Some languages, such as C and C@t{++}, are strongly typed, meaning that the
14563 arguments to operators and functions have to be of the correct type,
14564 otherwise an error occurs. These checks prevent type mismatch
14565 errors from ever causing any run-time problems. For example,
14566
14567 @smallexample
14568 int klass::my_method(char *b) @{ return b ? 1 : 2; @}
14569
14570 (@value{GDBP}) print obj.my_method (0)
14571 $1 = 2
14572 @exdent but
14573 (@value{GDBP}) print obj.my_method (0x1234)
14574 Cannot resolve method klass::my_method to any overloaded instance
14575 @end smallexample
14576
14577 The second example fails because in C@t{++} the integer constant
14578 @samp{0x1234} is not type-compatible with the pointer parameter type.
14579
14580 For the expressions you use in @value{GDBN} commands, you can tell
14581 @value{GDBN} to not enforce strict type checking or
14582 to treat any mismatches as errors and abandon the expression;
14583 When type checking is disabled, @value{GDBN} successfully evaluates
14584 expressions like the second example above.
14585
14586 Even if type checking is off, there may be other reasons
14587 related to type that prevent @value{GDBN} from evaluating an expression.
14588 For instance, @value{GDBN} does not know how to add an @code{int} and
14589 a @code{struct foo}. These particular type errors have nothing to do
14590 with the language in use and usually arise from expressions which make
14591 little sense to evaluate anyway.
14592
14593 @value{GDBN} provides some additional commands for controlling type checking:
14594
14595 @kindex set check type
14596 @kindex show check type
14597 @table @code
14598 @item set check type on
14599 @itemx set check type off
14600 Set strict type checking on or off. If any type mismatches occur in
14601 evaluating an expression while type checking is on, @value{GDBN} prints a
14602 message and aborts evaluation of the expression.
14603
14604 @item show check type
14605 Show the current setting of type checking and whether @value{GDBN}
14606 is enforcing strict type checking rules.
14607 @end table
14608
14609 @cindex range checking
14610 @cindex checks, range
14611 @node Range Checking
14612 @subsection An Overview of Range Checking
14613
14614 In some languages (such as Modula-2), it is an error to exceed the
14615 bounds of a type; this is enforced with run-time checks. Such range
14616 checking is meant to ensure program correctness by making sure
14617 computations do not overflow, or indices on an array element access do
14618 not exceed the bounds of the array.
14619
14620 For expressions you use in @value{GDBN} commands, you can tell
14621 @value{GDBN} to treat range errors in one of three ways: ignore them,
14622 always treat them as errors and abandon the expression, or issue
14623 warnings but evaluate the expression anyway.
14624
14625 A range error can result from numerical overflow, from exceeding an
14626 array index bound, or when you type a constant that is not a member
14627 of any type. Some languages, however, do not treat overflows as an
14628 error. In many implementations of C, mathematical overflow causes the
14629 result to ``wrap around'' to lower values---for example, if @var{m} is
14630 the largest integer value, and @var{s} is the smallest, then
14631
14632 @smallexample
14633 @var{m} + 1 @result{} @var{s}
14634 @end smallexample
14635
14636 This, too, is specific to individual languages, and in some cases
14637 specific to individual compilers or machines. @xref{Supported Languages, ,
14638 Supported Languages}, for further details on specific languages.
14639
14640 @value{GDBN} provides some additional commands for controlling the range checker:
14641
14642 @kindex set check range
14643 @kindex show check range
14644 @table @code
14645 @item set check range auto
14646 Set range checking on or off based on the current working language.
14647 @xref{Supported Languages, ,Supported Languages}, for the default settings for
14648 each language.
14649
14650 @item set check range on
14651 @itemx set check range off
14652 Set range checking on or off, overriding the default setting for the
14653 current working language. A warning is issued if the setting does not
14654 match the language default. If a range error occurs and range checking is on,
14655 then a message is printed and evaluation of the expression is aborted.
14656
14657 @item set check range warn
14658 Output messages when the @value{GDBN} range checker detects a range error,
14659 but attempt to evaluate the expression anyway. Evaluating the
14660 expression may still be impossible for other reasons, such as accessing
14661 memory that the process does not own (a typical example from many Unix
14662 systems).
14663
14664 @item show range
14665 Show the current setting of the range checker, and whether or not it is
14666 being set automatically by @value{GDBN}.
14667 @end table
14668
14669 @node Supported Languages
14670 @section Supported Languages
14671
14672 @value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran,
14673 OpenCL C, Pascal, Rust, assembly, Modula-2, and Ada.
14674 @c This is false ...
14675 Some @value{GDBN} features may be used in expressions regardless of the
14676 language you use: the @value{GDBN} @code{@@} and @code{::} operators,
14677 and the @samp{@{type@}addr} construct (@pxref{Expressions,
14678 ,Expressions}) can be used with the constructs of any supported
14679 language.
14680
14681 The following sections detail to what degree each source language is
14682 supported by @value{GDBN}. These sections are not meant to be language
14683 tutorials or references, but serve only as a reference guide to what the
14684 @value{GDBN} expression parser accepts, and what input and output
14685 formats should look like for different languages. There are many good
14686 books written on each of these languages; please look to these for a
14687 language reference or tutorial.
14688
14689 @menu
14690 * C:: C and C@t{++}
14691 * D:: D
14692 * Go:: Go
14693 * Objective-C:: Objective-C
14694 * OpenCL C:: OpenCL C
14695 * Fortran:: Fortran
14696 * Pascal:: Pascal
14697 * Rust:: Rust
14698 * Modula-2:: Modula-2
14699 * Ada:: Ada
14700 @end menu
14701
14702 @node C
14703 @subsection C and C@t{++}
14704
14705 @cindex C and C@t{++}
14706 @cindex expressions in C or C@t{++}
14707
14708 Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
14709 to both languages. Whenever this is the case, we discuss those languages
14710 together.
14711
14712 @cindex C@t{++}
14713 @cindex @code{g++}, @sc{gnu} C@t{++} compiler
14714 @cindex @sc{gnu} C@t{++}
14715 The C@t{++} debugging facilities are jointly implemented by the C@t{++}
14716 compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
14717 effectively, you must compile your C@t{++} programs with a supported
14718 C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
14719 compiler (@code{aCC}).
14720
14721 @menu
14722 * C Operators:: C and C@t{++} operators
14723 * C Constants:: C and C@t{++} constants
14724 * C Plus Plus Expressions:: C@t{++} expressions
14725 * C Defaults:: Default settings for C and C@t{++}
14726 * C Checks:: C and C@t{++} type and range checks
14727 * Debugging C:: @value{GDBN} and C
14728 * Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
14729 * Decimal Floating Point:: Numbers in Decimal Floating Point format
14730 @end menu
14731
14732 @node C Operators
14733 @subsubsection C and C@t{++} Operators
14734
14735 @cindex C and C@t{++} operators
14736
14737 Operators must be defined on values of specific types. For instance,
14738 @code{+} is defined on numbers, but not on structures. Operators are
14739 often defined on groups of types.
14740
14741 For the purposes of C and C@t{++}, the following definitions hold:
14742
14743 @itemize @bullet
14744
14745 @item
14746 @emph{Integral types} include @code{int} with any of its storage-class
14747 specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
14748
14749 @item
14750 @emph{Floating-point types} include @code{float}, @code{double}, and
14751 @code{long double} (if supported by the target platform).
14752
14753 @item
14754 @emph{Pointer types} include all types defined as @code{(@var{type} *)}.
14755
14756 @item
14757 @emph{Scalar types} include all of the above.
14758
14759 @end itemize
14760
14761 @noindent
14762 The following operators are supported. They are listed here
14763 in order of increasing precedence:
14764
14765 @table @code
14766 @item ,
14767 The comma or sequencing operator. Expressions in a comma-separated list
14768 are evaluated from left to right, with the result of the entire
14769 expression being the last expression evaluated.
14770
14771 @item =
14772 Assignment. The value of an assignment expression is the value
14773 assigned. Defined on scalar types.
14774
14775 @item @var{op}=
14776 Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
14777 and translated to @w{@code{@var{a} = @var{a op b}}}.
14778 @w{@code{@var{op}=}} and @code{=} have the same precedence. The operator
14779 @var{op} is any one of the operators @code{|}, @code{^}, @code{&},
14780 @code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
14781
14782 @item ?:
14783 The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
14784 of as: if @var{a} then @var{b} else @var{c}. The argument @var{a}
14785 should be of an integral type.
14786
14787 @item ||
14788 Logical @sc{or}. Defined on integral types.
14789
14790 @item &&
14791 Logical @sc{and}. Defined on integral types.
14792
14793 @item |
14794 Bitwise @sc{or}. Defined on integral types.
14795
14796 @item ^
14797 Bitwise exclusive-@sc{or}. Defined on integral types.
14798
14799 @item &
14800 Bitwise @sc{and}. Defined on integral types.
14801
14802 @item ==@r{, }!=
14803 Equality and inequality. Defined on scalar types. The value of these
14804 expressions is 0 for false and non-zero for true.
14805
14806 @item <@r{, }>@r{, }<=@r{, }>=
14807 Less than, greater than, less than or equal, greater than or equal.
14808 Defined on scalar types. The value of these expressions is 0 for false
14809 and non-zero for true.
14810
14811 @item <<@r{, }>>
14812 left shift, and right shift. Defined on integral types.
14813
14814 @item @@
14815 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
14816
14817 @item +@r{, }-
14818 Addition and subtraction. Defined on integral types, floating-point types and
14819 pointer types.
14820
14821 @item *@r{, }/@r{, }%
14822 Multiplication, division, and modulus. Multiplication and division are
14823 defined on integral and floating-point types. Modulus is defined on
14824 integral types.
14825
14826 @item ++@r{, }--
14827 Increment and decrement. When appearing before a variable, the
14828 operation is performed before the variable is used in an expression;
14829 when appearing after it, the variable's value is used before the
14830 operation takes place.
14831
14832 @item *
14833 Pointer dereferencing. Defined on pointer types. Same precedence as
14834 @code{++}.
14835
14836 @item &
14837 Address operator. Defined on variables. Same precedence as @code{++}.
14838
14839 For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
14840 allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
14841 to examine the address
14842 where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
14843 stored.
14844
14845 @item -
14846 Negative. Defined on integral and floating-point types. Same
14847 precedence as @code{++}.
14848
14849 @item !
14850 Logical negation. Defined on integral types. Same precedence as
14851 @code{++}.
14852
14853 @item ~
14854 Bitwise complement operator. Defined on integral types. Same precedence as
14855 @code{++}.
14856
14857
14858 @item .@r{, }->
14859 Structure member, and pointer-to-structure member. For convenience,
14860 @value{GDBN} regards the two as equivalent, choosing whether to dereference a
14861 pointer based on the stored type information.
14862 Defined on @code{struct} and @code{union} data.
14863
14864 @item .*@r{, }->*
14865 Dereferences of pointers to members.
14866
14867 @item []
14868 Array indexing. @code{@var{a}[@var{i}]} is defined as
14869 @code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
14870
14871 @item ()
14872 Function parameter list. Same precedence as @code{->}.
14873
14874 @item ::
14875 C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
14876 and @code{class} types.
14877
14878 @item ::
14879 Doubled colons also represent the @value{GDBN} scope operator
14880 (@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
14881 above.
14882 @end table
14883
14884 If an operator is redefined in the user code, @value{GDBN} usually
14885 attempts to invoke the redefined version instead of using the operator's
14886 predefined meaning.
14887
14888 @node C Constants
14889 @subsubsection C and C@t{++} Constants
14890
14891 @cindex C and C@t{++} constants
14892
14893 @value{GDBN} allows you to express the constants of C and C@t{++} in the
14894 following ways:
14895
14896 @itemize @bullet
14897 @item
14898 Integer constants are a sequence of digits. Octal constants are
14899 specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
14900 by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
14901 @samp{l}, specifying that the constant should be treated as a
14902 @code{long} value.
14903
14904 @item
14905 Floating point constants are a sequence of digits, followed by a decimal
14906 point, followed by a sequence of digits, and optionally followed by an
14907 exponent. An exponent is of the form:
14908 @samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
14909 sequence of digits. The @samp{+} is optional for positive exponents.
14910 A floating-point constant may also end with a letter @samp{f} or
14911 @samp{F}, specifying that the constant should be treated as being of
14912 the @code{float} (as opposed to the default @code{double}) type; or with
14913 a letter @samp{l} or @samp{L}, which specifies a @code{long double}
14914 constant.
14915
14916 @item
14917 Enumerated constants consist of enumerated identifiers, or their
14918 integral equivalents.
14919
14920 @item
14921 Character constants are a single character surrounded by single quotes
14922 (@code{'}), or a number---the ordinal value of the corresponding character
14923 (usually its @sc{ascii} value). Within quotes, the single character may
14924 be represented by a letter or by @dfn{escape sequences}, which are of
14925 the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
14926 of the character's ordinal value; or of the form @samp{\@var{x}}, where
14927 @samp{@var{x}} is a predefined special character---for example,
14928 @samp{\n} for newline.
14929
14930 Wide character constants can be written by prefixing a character
14931 constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide
14932 form of @samp{x}. The target wide character set is used when
14933 computing the value of this constant (@pxref{Character Sets}).
14934
14935 @item
14936 String constants are a sequence of character constants surrounded by
14937 double quotes (@code{"}). Any valid character constant (as described
14938 above) may appear. Double quotes within the string must be preceded by
14939 a backslash, so for instance @samp{"a\"b'c"} is a string of five
14940 characters.
14941
14942 Wide string constants can be written by prefixing a string constant
14943 with @samp{L}, as in C. The target wide character set is used when
14944 computing the value of this constant (@pxref{Character Sets}).
14945
14946 @item
14947 Pointer constants are an integral value. You can also write pointers
14948 to constants using the C operator @samp{&}.
14949
14950 @item
14951 Array constants are comma-separated lists surrounded by braces @samp{@{}
14952 and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
14953 integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
14954 and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
14955 @end itemize
14956
14957 @node C Plus Plus Expressions
14958 @subsubsection C@t{++} Expressions
14959
14960 @cindex expressions in C@t{++}
14961 @value{GDBN} expression handling can interpret most C@t{++} expressions.
14962
14963 @cindex debugging C@t{++} programs
14964 @cindex C@t{++} compilers
14965 @cindex debug formats and C@t{++}
14966 @cindex @value{NGCC} and C@t{++}
14967 @quotation
14968 @emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use
14969 the proper compiler and the proper debug format. Currently,
14970 @value{GDBN} works best when debugging C@t{++} code that is compiled
14971 with the most recent version of @value{NGCC} possible. The DWARF
14972 debugging format is preferred; @value{NGCC} defaults to this on most
14973 popular platforms. Other compilers and/or debug formats are likely to
14974 work badly or not at all when using @value{GDBN} to debug C@t{++}
14975 code. @xref{Compilation}.
14976 @end quotation
14977
14978 @enumerate
14979
14980 @cindex member functions
14981 @item
14982 Member function calls are allowed; you can use expressions like
14983
14984 @smallexample
14985 count = aml->GetOriginal(x, y)
14986 @end smallexample
14987
14988 @vindex this@r{, inside C@t{++} member functions}
14989 @cindex namespace in C@t{++}
14990 @item
14991 While a member function is active (in the selected stack frame), your
14992 expressions have the same namespace available as the member function;
14993 that is, @value{GDBN} allows implicit references to the class instance
14994 pointer @code{this} following the same rules as C@t{++}. @code{using}
14995 declarations in the current scope are also respected by @value{GDBN}.
14996
14997 @cindex call overloaded functions
14998 @cindex overloaded functions, calling
14999 @cindex type conversions in C@t{++}
15000 @item
15001 You can call overloaded functions; @value{GDBN} resolves the function
15002 call to the right definition, with some restrictions. @value{GDBN} does not
15003 perform overload resolution involving user-defined type conversions,
15004 calls to constructors, or instantiations of templates that do not exist
15005 in the program. It also cannot handle ellipsis argument lists or
15006 default arguments.
15007
15008 It does perform integral conversions and promotions, floating-point
15009 promotions, arithmetic conversions, pointer conversions, conversions of
15010 class objects to base classes, and standard conversions such as those of
15011 functions or arrays to pointers; it requires an exact match on the
15012 number of function arguments.
15013
15014 Overload resolution is always performed, unless you have specified
15015 @code{set overload-resolution off}. @xref{Debugging C Plus Plus,
15016 ,@value{GDBN} Features for C@t{++}}.
15017
15018 You must specify @code{set overload-resolution off} in order to use an
15019 explicit function signature to call an overloaded function, as in
15020 @smallexample
15021 p 'foo(char,int)'('x', 13)
15022 @end smallexample
15023
15024 The @value{GDBN} command-completion facility can simplify this;
15025 see @ref{Completion, ,Command Completion}.
15026
15027 @cindex reference declarations
15028 @item
15029 @value{GDBN} understands variables declared as C@t{++} lvalue or rvalue
15030 references; you can use them in expressions just as you do in C@t{++}
15031 source---they are automatically dereferenced.
15032
15033 In the parameter list shown when @value{GDBN} displays a frame, the values of
15034 reference variables are not displayed (unlike other variables); this
15035 avoids clutter, since references are often used for large structures.
15036 The @emph{address} of a reference variable is always shown, unless
15037 you have specified @samp{set print address off}.
15038
15039 @item
15040 @value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
15041 expressions can use it just as expressions in your program do. Since
15042 one scope may be defined in another, you can use @code{::} repeatedly if
15043 necessary, for example in an expression like
15044 @samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
15045 resolving name scope by reference to source files, in both C and C@t{++}
15046 debugging (@pxref{Variables, ,Program Variables}).
15047
15048 @item
15049 @value{GDBN} performs argument-dependent lookup, following the C@t{++}
15050 specification.
15051 @end enumerate
15052
15053 @node C Defaults
15054 @subsubsection C and C@t{++} Defaults
15055
15056 @cindex C and C@t{++} defaults
15057
15058 If you allow @value{GDBN} to set range checking automatically, it
15059 defaults to @code{off} whenever the working language changes to
15060 C or C@t{++}. This happens regardless of whether you or @value{GDBN}
15061 selects the working language.
15062
15063 If you allow @value{GDBN} to set the language automatically, it
15064 recognizes source files whose names end with @file{.c}, @file{.C}, or
15065 @file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
15066 these files, it sets the working language to C or C@t{++}.
15067 @xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
15068 for further details.
15069
15070 @node C Checks
15071 @subsubsection C and C@t{++} Type and Range Checks
15072
15073 @cindex C and C@t{++} checks
15074
15075 By default, when @value{GDBN} parses C or C@t{++} expressions, strict type
15076 checking is used. However, if you turn type checking off, @value{GDBN}
15077 will allow certain non-standard conversions, such as promoting integer
15078 constants to pointers.
15079
15080 Range checking, if turned on, is done on mathematical operations. Array
15081 indices are not checked, since they are often used to index a pointer
15082 that is not itself an array.
15083
15084 @node Debugging C
15085 @subsubsection @value{GDBN} and C
15086
15087 The @code{set print union} and @code{show print union} commands apply to
15088 the @code{union} type. When set to @samp{on}, any @code{union} that is
15089 inside a @code{struct} or @code{class} is also printed. Otherwise, it
15090 appears as @samp{@{...@}}.
15091
15092 The @code{@@} operator aids in the debugging of dynamic arrays, formed
15093 with pointers and a memory allocation function. @xref{Expressions,
15094 ,Expressions}.
15095
15096 @node Debugging C Plus Plus
15097 @subsubsection @value{GDBN} Features for C@t{++}
15098
15099 @cindex commands for C@t{++}
15100
15101 Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
15102 designed specifically for use with C@t{++}. Here is a summary:
15103
15104 @table @code
15105 @cindex break in overloaded functions
15106 @item @r{breakpoint menus}
15107 When you want a breakpoint in a function whose name is overloaded,
15108 @value{GDBN} has the capability to display a menu of possible breakpoint
15109 locations to help you specify which function definition you want.
15110 @xref{Ambiguous Expressions,,Ambiguous Expressions}.
15111
15112 @cindex overloading in C@t{++}
15113 @item rbreak @var{regex}
15114 Setting breakpoints using regular expressions is helpful for setting
15115 breakpoints on overloaded functions that are not members of any special
15116 classes.
15117 @xref{Set Breaks, ,Setting Breakpoints}.
15118
15119 @cindex C@t{++} exception handling
15120 @item catch throw
15121 @itemx catch rethrow
15122 @itemx catch catch
15123 Debug C@t{++} exception handling using these commands. @xref{Set
15124 Catchpoints, , Setting Catchpoints}.
15125
15126 @cindex inheritance
15127 @item ptype @var{typename}
15128 Print inheritance relationships as well as other information for type
15129 @var{typename}.
15130 @xref{Symbols, ,Examining the Symbol Table}.
15131
15132 @item info vtbl @var{expression}.
15133 The @code{info vtbl} command can be used to display the virtual
15134 method tables of the object computed by @var{expression}. This shows
15135 one entry per virtual table; there may be multiple virtual tables when
15136 multiple inheritance is in use.
15137
15138 @cindex C@t{++} demangling
15139 @item demangle @var{name}
15140 Demangle @var{name}.
15141 @xref{Symbols}, for a more complete description of the @code{demangle} command.
15142
15143 @cindex C@t{++} symbol display
15144 @item set print demangle
15145 @itemx show print demangle
15146 @itemx set print asm-demangle
15147 @itemx show print asm-demangle
15148 Control whether C@t{++} symbols display in their source form, both when
15149 displaying code as C@t{++} source and when displaying disassemblies.
15150 @xref{Print Settings, ,Print Settings}.
15151
15152 @item set print object
15153 @itemx show print object
15154 Choose whether to print derived (actual) or declared types of objects.
15155 @xref{Print Settings, ,Print Settings}.
15156
15157 @item set print vtbl
15158 @itemx show print vtbl
15159 Control the format for printing virtual function tables.
15160 @xref{Print Settings, ,Print Settings}.
15161 (The @code{vtbl} commands do not work on programs compiled with the HP
15162 ANSI C@t{++} compiler (@code{aCC}).)
15163
15164 @kindex set overload-resolution
15165 @cindex overloaded functions, overload resolution
15166 @item set overload-resolution on
15167 Enable overload resolution for C@t{++} expression evaluation. The default
15168 is on. For overloaded functions, @value{GDBN} evaluates the arguments
15169 and searches for a function whose signature matches the argument types,
15170 using the standard C@t{++} conversion rules (see @ref{C Plus Plus
15171 Expressions, ,C@t{++} Expressions}, for details).
15172 If it cannot find a match, it emits a message.
15173
15174 @item set overload-resolution off
15175 Disable overload resolution for C@t{++} expression evaluation. For
15176 overloaded functions that are not class member functions, @value{GDBN}
15177 chooses the first function of the specified name that it finds in the
15178 symbol table, whether or not its arguments are of the correct type. For
15179 overloaded functions that are class member functions, @value{GDBN}
15180 searches for a function whose signature @emph{exactly} matches the
15181 argument types.
15182
15183 @kindex show overload-resolution
15184 @item show overload-resolution
15185 Show the current setting of overload resolution.
15186
15187 @item @r{Overloaded symbol names}
15188 You can specify a particular definition of an overloaded symbol, using
15189 the same notation that is used to declare such symbols in C@t{++}: type
15190 @code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
15191 also use the @value{GDBN} command-line word completion facilities to list the
15192 available choices, or to finish the type list for you.
15193 @xref{Completion,, Command Completion}, for details on how to do this.
15194
15195 @item @r{Breakpoints in functions with ABI tags}
15196
15197 The GNU C@t{++} compiler introduced the notion of ABI ``tags'', which
15198 correspond to changes in the ABI of a type, function, or variable that
15199 would not otherwise be reflected in a mangled name. See
15200 @url{https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/}
15201 for more detail.
15202
15203 The ABI tags are visible in C@t{++} demangled names. For example, a
15204 function that returns a std::string:
15205
15206 @smallexample
15207 std::string function(int);
15208 @end smallexample
15209
15210 @noindent
15211 when compiled for the C++11 ABI is marked with the @code{cxx11} ABI
15212 tag, and @value{GDBN} displays the symbol like this:
15213
15214 @smallexample
15215 function[abi:cxx11](int)
15216 @end smallexample
15217
15218 You can set a breakpoint on such functions simply as if they had no
15219 tag. For example:
15220
15221 @smallexample
15222 (gdb) b function(int)
15223 Breakpoint 2 at 0x40060d: file main.cc, line 10.
15224 (gdb) info breakpoints
15225 Num Type Disp Enb Address What
15226 1 breakpoint keep y 0x0040060d in function[abi:cxx11](int)
15227 at main.cc:10
15228 @end smallexample
15229
15230 On the rare occasion you need to disambiguate between different ABI
15231 tags, you can do so by simply including the ABI tag in the function
15232 name, like:
15233
15234 @smallexample
15235 (@value{GDBP}) b ambiguous[abi:other_tag](int)
15236 @end smallexample
15237 @end table
15238
15239 @node Decimal Floating Point
15240 @subsubsection Decimal Floating Point format
15241 @cindex decimal floating point format
15242
15243 @value{GDBN} can examine, set and perform computations with numbers in
15244 decimal floating point format, which in the C language correspond to the
15245 @code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
15246 specified by the extension to support decimal floating-point arithmetic.
15247
15248 There are two encodings in use, depending on the architecture: BID (Binary
15249 Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
15250 PowerPC and S/390. @value{GDBN} will use the appropriate encoding for the
15251 configured target.
15252
15253 Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
15254 to manipulate decimal floating point numbers, it is not possible to convert
15255 (using a cast, for example) integers wider than 32-bit to decimal float.
15256
15257 In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
15258 point computations, error checking in decimal float operations ignores
15259 underflow, overflow and divide by zero exceptions.
15260
15261 In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
15262 to inspect @code{_Decimal128} values stored in floating point registers.
15263 See @ref{PowerPC,,PowerPC} for more details.
15264
15265 @node D
15266 @subsection D
15267
15268 @cindex D
15269 @value{GDBN} can be used to debug programs written in D and compiled with
15270 GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D
15271 specific feature --- dynamic arrays.
15272
15273 @node Go
15274 @subsection Go
15275
15276 @cindex Go (programming language)
15277 @value{GDBN} can be used to debug programs written in Go and compiled with
15278 @file{gccgo} or @file{6g} compilers.
15279
15280 Here is a summary of the Go-specific features and restrictions:
15281
15282 @table @code
15283 @cindex current Go package
15284 @item The current Go package
15285 The name of the current package does not need to be specified when
15286 specifying global variables and functions.
15287
15288 For example, given the program:
15289
15290 @example
15291 package main
15292 var myglob = "Shall we?"
15293 func main () @{
15294 // ...
15295 @}
15296 @end example
15297
15298 When stopped inside @code{main} either of these work:
15299
15300 @example
15301 (gdb) p myglob
15302 (gdb) p main.myglob
15303 @end example
15304
15305 @cindex builtin Go types
15306 @item Builtin Go types
15307 The @code{string} type is recognized by @value{GDBN} and is printed
15308 as a string.
15309
15310 @cindex builtin Go functions
15311 @item Builtin Go functions
15312 The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof}
15313 function and handles it internally.
15314
15315 @cindex restrictions on Go expressions
15316 @item Restrictions on Go expressions
15317 All Go operators are supported except @code{&^}.
15318 The Go @code{_} ``blank identifier'' is not supported.
15319 Automatic dereferencing of pointers is not supported.
15320 @end table
15321
15322 @node Objective-C
15323 @subsection Objective-C
15324
15325 @cindex Objective-C
15326 This section provides information about some commands and command
15327 options that are useful for debugging Objective-C code. See also
15328 @ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
15329 few more commands specific to Objective-C support.
15330
15331 @menu
15332 * Method Names in Commands::
15333 * The Print Command with Objective-C::
15334 @end menu
15335
15336 @node Method Names in Commands
15337 @subsubsection Method Names in Commands
15338
15339 The following commands have been extended to accept Objective-C method
15340 names as line specifications:
15341
15342 @kindex clear@r{, and Objective-C}
15343 @kindex break@r{, and Objective-C}
15344 @kindex info line@r{, and Objective-C}
15345 @kindex jump@r{, and Objective-C}
15346 @kindex list@r{, and Objective-C}
15347 @itemize
15348 @item @code{clear}
15349 @item @code{break}
15350 @item @code{info line}
15351 @item @code{jump}
15352 @item @code{list}
15353 @end itemize
15354
15355 A fully qualified Objective-C method name is specified as
15356
15357 @smallexample
15358 -[@var{Class} @var{methodName}]
15359 @end smallexample
15360
15361 where the minus sign is used to indicate an instance method and a
15362 plus sign (not shown) is used to indicate a class method. The class
15363 name @var{Class} and method name @var{methodName} are enclosed in
15364 brackets, similar to the way messages are specified in Objective-C
15365 source code. For example, to set a breakpoint at the @code{create}
15366 instance method of class @code{Fruit} in the program currently being
15367 debugged, enter:
15368
15369 @smallexample
15370 break -[Fruit create]
15371 @end smallexample
15372
15373 To list ten program lines around the @code{initialize} class method,
15374 enter:
15375
15376 @smallexample
15377 list +[NSText initialize]
15378 @end smallexample
15379
15380 In the current version of @value{GDBN}, the plus or minus sign is
15381 required. In future versions of @value{GDBN}, the plus or minus
15382 sign will be optional, but you can use it to narrow the search. It
15383 is also possible to specify just a method name:
15384
15385 @smallexample
15386 break create
15387 @end smallexample
15388
15389 You must specify the complete method name, including any colons. If
15390 your program's source files contain more than one @code{create} method,
15391 you'll be presented with a numbered list of classes that implement that
15392 method. Indicate your choice by number, or type @samp{0} to exit if
15393 none apply.
15394
15395 As another example, to clear a breakpoint established at the
15396 @code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
15397
15398 @smallexample
15399 clear -[NSWindow makeKeyAndOrderFront:]
15400 @end smallexample
15401
15402 @node The Print Command with Objective-C
15403 @subsubsection The Print Command With Objective-C
15404 @cindex Objective-C, print objects
15405 @kindex print-object
15406 @kindex po @r{(@code{print-object})}
15407
15408 The print command has also been extended to accept methods. For example:
15409
15410 @smallexample
15411 print -[@var{object} hash]
15412 @end smallexample
15413
15414 @cindex print an Objective-C object description
15415 @cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
15416 @noindent
15417 will tell @value{GDBN} to send the @code{hash} message to @var{object}
15418 and print the result. Also, an additional command has been added,
15419 @code{print-object} or @code{po} for short, which is meant to print
15420 the description of an object. However, this command may only work
15421 with certain Objective-C libraries that have a particular hook
15422 function, @code{_NSPrintForDebugger}, defined.
15423
15424 @node OpenCL C
15425 @subsection OpenCL C
15426
15427 @cindex OpenCL C
15428 This section provides information about @value{GDBN}s OpenCL C support.
15429
15430 @menu
15431 * OpenCL C Datatypes::
15432 * OpenCL C Expressions::
15433 * OpenCL C Operators::
15434 @end menu
15435
15436 @node OpenCL C Datatypes
15437 @subsubsection OpenCL C Datatypes
15438
15439 @cindex OpenCL C Datatypes
15440 @value{GDBN} supports the builtin scalar and vector datatypes specified
15441 by OpenCL 1.1. In addition the half- and double-precision floating point
15442 data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL
15443 extensions are also known to @value{GDBN}.
15444
15445 @node OpenCL C Expressions
15446 @subsubsection OpenCL C Expressions
15447
15448 @cindex OpenCL C Expressions
15449 @value{GDBN} supports accesses to vector components including the access as
15450 lvalue where possible. Since OpenCL C is based on C99 most C expressions
15451 supported by @value{GDBN} can be used as well.
15452
15453 @node OpenCL C Operators
15454 @subsubsection OpenCL C Operators
15455
15456 @cindex OpenCL C Operators
15457 @value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and
15458 vector data types.
15459
15460 @node Fortran
15461 @subsection Fortran
15462 @cindex Fortran-specific support in @value{GDBN}
15463
15464 @value{GDBN} can be used to debug programs written in Fortran, but it
15465 currently supports only the features of Fortran 77 language.
15466
15467 @cindex trailing underscore, in Fortran symbols
15468 Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
15469 among them) append an underscore to the names of variables and
15470 functions. When you debug programs compiled by those compilers, you
15471 will need to refer to variables and functions with a trailing
15472 underscore.
15473
15474 @menu
15475 * Fortran Operators:: Fortran operators and expressions
15476 * Fortran Defaults:: Default settings for Fortran
15477 * Special Fortran Commands:: Special @value{GDBN} commands for Fortran
15478 @end menu
15479
15480 @node Fortran Operators
15481 @subsubsection Fortran Operators and Expressions
15482
15483 @cindex Fortran operators and expressions
15484
15485 Operators must be defined on values of specific types. For instance,
15486 @code{+} is defined on numbers, but not on characters or other non-
15487 arithmetic types. Operators are often defined on groups of types.
15488
15489 @table @code
15490 @item **
15491 The exponentiation operator. It raises the first operand to the power
15492 of the second one.
15493
15494 @item :
15495 The range operator. Normally used in the form of array(low:high) to
15496 represent a section of array.
15497
15498 @item %
15499 The access component operator. Normally used to access elements in derived
15500 types. Also suitable for unions. As unions aren't part of regular Fortran,
15501 this can only happen when accessing a register that uses a gdbarch-defined
15502 union type.
15503 @end table
15504
15505 @node Fortran Defaults
15506 @subsubsection Fortran Defaults
15507
15508 @cindex Fortran Defaults
15509
15510 Fortran symbols are usually case-insensitive, so @value{GDBN} by
15511 default uses case-insensitive matches for Fortran symbols. You can
15512 change that with the @samp{set case-insensitive} command, see
15513 @ref{Symbols}, for the details.
15514
15515 @node Special Fortran Commands
15516 @subsubsection Special Fortran Commands
15517
15518 @cindex Special Fortran commands
15519
15520 @value{GDBN} has some commands to support Fortran-specific features,
15521 such as displaying common blocks.
15522
15523 @table @code
15524 @cindex @code{COMMON} blocks, Fortran
15525 @kindex info common
15526 @item info common @r{[}@var{common-name}@r{]}
15527 This command prints the values contained in the Fortran @code{COMMON}
15528 block whose name is @var{common-name}. With no argument, the names of
15529 all @code{COMMON} blocks visible at the current program location are
15530 printed.
15531 @end table
15532
15533 @node Pascal
15534 @subsection Pascal
15535
15536 @cindex Pascal support in @value{GDBN}, limitations
15537 Debugging Pascal programs which use sets, subranges, file variables, or
15538 nested functions does not currently work. @value{GDBN} does not support
15539 entering expressions, printing values, or similar features using Pascal
15540 syntax.
15541
15542 The Pascal-specific command @code{set print pascal_static-members}
15543 controls whether static members of Pascal objects are displayed.
15544 @xref{Print Settings, pascal_static-members}.
15545
15546 @node Rust
15547 @subsection Rust
15548
15549 @value{GDBN} supports the @url{https://www.rust-lang.org/, Rust
15550 Programming Language}. Type- and value-printing, and expression
15551 parsing, are reasonably complete. However, there are a few
15552 peculiarities and holes to be aware of.
15553
15554 @itemize @bullet
15555 @item
15556 Linespecs (@pxref{Specify Location}) are never relative to the current
15557 crate. Instead, they act as if there were a global namespace of
15558 crates, somewhat similar to the way @code{extern crate} behaves.
15559
15560 That is, if @value{GDBN} is stopped at a breakpoint in a function in
15561 crate @samp{A}, module @samp{B}, then @code{break B::f} will attempt
15562 to set a breakpoint in a function named @samp{f} in a crate named
15563 @samp{B}.
15564
15565 As a consequence of this approach, linespecs also cannot refer to
15566 items using @samp{self::} or @samp{super::}.
15567
15568 @item
15569 Because @value{GDBN} implements Rust name-lookup semantics in
15570 expressions, it will sometimes prepend the current crate to a name.
15571 For example, if @value{GDBN} is stopped at a breakpoint in the crate
15572 @samp{K}, then @code{print ::x::y} will try to find the symbol
15573 @samp{K::x::y}.
15574
15575 However, since it is useful to be able to refer to other crates when
15576 debugging, @value{GDBN} provides the @code{extern} extension to
15577 circumvent this. To use the extension, just put @code{extern} before
15578 a path expression to refer to the otherwise unavailable ``global''
15579 scope.
15580
15581 In the above example, if you wanted to refer to the symbol @samp{y} in
15582 the crate @samp{x}, you would use @code{print extern x::y}.
15583
15584 @item
15585 The Rust expression evaluator does not support ``statement-like''
15586 expressions such as @code{if} or @code{match}, or lambda expressions.
15587
15588 @item
15589 Tuple expressions are not implemented.
15590
15591 @item
15592 The Rust expression evaluator does not currently implement the
15593 @code{Drop} trait. Objects that may be created by the evaluator will
15594 never be destroyed.
15595
15596 @item
15597 @value{GDBN} does not implement type inference for generics. In order
15598 to call generic functions or otherwise refer to generic items, you
15599 will have to specify the type parameters manually.
15600
15601 @item
15602 @value{GDBN} currently uses the C@t{++} demangler for Rust. In most
15603 cases this does not cause any problems. However, in an expression
15604 context, completing a generic function name will give syntactically
15605 invalid results. This happens because Rust requires the @samp{::}
15606 operator between the function name and its generic arguments. For
15607 example, @value{GDBN} might provide a completion like
15608 @code{crate::f<u32>}, where the parser would require
15609 @code{crate::f::<u32>}.
15610
15611 @item
15612 As of this writing, the Rust compiler (version 1.8) has a few holes in
15613 the debugging information it generates. These holes prevent certain
15614 features from being implemented by @value{GDBN}:
15615 @itemize @bullet
15616
15617 @item
15618 Method calls cannot be made via traits.
15619
15620 @item
15621 Operator overloading is not implemented.
15622
15623 @item
15624 When debugging in a monomorphized function, you cannot use the generic
15625 type names.
15626
15627 @item
15628 The type @code{Self} is not available.
15629
15630 @item
15631 @code{use} statements are not available, so some names may not be
15632 available in the crate.
15633 @end itemize
15634 @end itemize
15635
15636 @node Modula-2
15637 @subsection Modula-2
15638
15639 @cindex Modula-2, @value{GDBN} support
15640
15641 The extensions made to @value{GDBN} to support Modula-2 only support
15642 output from the @sc{gnu} Modula-2 compiler (which is currently being
15643 developed). Other Modula-2 compilers are not currently supported, and
15644 attempting to debug executables produced by them is most likely
15645 to give an error as @value{GDBN} reads in the executable's symbol
15646 table.
15647
15648 @cindex expressions in Modula-2
15649 @menu
15650 * M2 Operators:: Built-in operators
15651 * Built-In Func/Proc:: Built-in functions and procedures
15652 * M2 Constants:: Modula-2 constants
15653 * M2 Types:: Modula-2 types
15654 * M2 Defaults:: Default settings for Modula-2
15655 * Deviations:: Deviations from standard Modula-2
15656 * M2 Checks:: Modula-2 type and range checks
15657 * M2 Scope:: The scope operators @code{::} and @code{.}
15658 * GDB/M2:: @value{GDBN} and Modula-2
15659 @end menu
15660
15661 @node M2 Operators
15662 @subsubsection Operators
15663 @cindex Modula-2 operators
15664
15665 Operators must be defined on values of specific types. For instance,
15666 @code{+} is defined on numbers, but not on structures. Operators are
15667 often defined on groups of types. For the purposes of Modula-2, the
15668 following definitions hold:
15669
15670 @itemize @bullet
15671
15672 @item
15673 @emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
15674 their subranges.
15675
15676 @item
15677 @emph{Character types} consist of @code{CHAR} and its subranges.
15678
15679 @item
15680 @emph{Floating-point types} consist of @code{REAL}.
15681
15682 @item
15683 @emph{Pointer types} consist of anything declared as @code{POINTER TO
15684 @var{type}}.
15685
15686 @item
15687 @emph{Scalar types} consist of all of the above.
15688
15689 @item
15690 @emph{Set types} consist of @code{SET} and @code{BITSET} types.
15691
15692 @item
15693 @emph{Boolean types} consist of @code{BOOLEAN}.
15694 @end itemize
15695
15696 @noindent
15697 The following operators are supported, and appear in order of
15698 increasing precedence:
15699
15700 @table @code
15701 @item ,
15702 Function argument or array index separator.
15703
15704 @item :=
15705 Assignment. The value of @var{var} @code{:=} @var{value} is
15706 @var{value}.
15707
15708 @item <@r{, }>
15709 Less than, greater than on integral, floating-point, or enumerated
15710 types.
15711
15712 @item <=@r{, }>=
15713 Less than or equal to, greater than or equal to
15714 on integral, floating-point and enumerated types, or set inclusion on
15715 set types. Same precedence as @code{<}.
15716
15717 @item =@r{, }<>@r{, }#
15718 Equality and two ways of expressing inequality, valid on scalar types.
15719 Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
15720 available for inequality, since @code{#} conflicts with the script
15721 comment character.
15722
15723 @item IN
15724 Set membership. Defined on set types and the types of their members.
15725 Same precedence as @code{<}.
15726
15727 @item OR
15728 Boolean disjunction. Defined on boolean types.
15729
15730 @item AND@r{, }&
15731 Boolean conjunction. Defined on boolean types.
15732
15733 @item @@
15734 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
15735
15736 @item +@r{, }-
15737 Addition and subtraction on integral and floating-point types, or union
15738 and difference on set types.
15739
15740 @item *
15741 Multiplication on integral and floating-point types, or set intersection
15742 on set types.
15743
15744 @item /
15745 Division on floating-point types, or symmetric set difference on set
15746 types. Same precedence as @code{*}.
15747
15748 @item DIV@r{, }MOD
15749 Integer division and remainder. Defined on integral types. Same
15750 precedence as @code{*}.
15751
15752 @item -
15753 Negative. Defined on @code{INTEGER} and @code{REAL} data.
15754
15755 @item ^
15756 Pointer dereferencing. Defined on pointer types.
15757
15758 @item NOT
15759 Boolean negation. Defined on boolean types. Same precedence as
15760 @code{^}.
15761
15762 @item .
15763 @code{RECORD} field selector. Defined on @code{RECORD} data. Same
15764 precedence as @code{^}.
15765
15766 @item []
15767 Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
15768
15769 @item ()
15770 Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
15771 as @code{^}.
15772
15773 @item ::@r{, }.
15774 @value{GDBN} and Modula-2 scope operators.
15775 @end table
15776
15777 @quotation
15778 @emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
15779 treats the use of the operator @code{IN}, or the use of operators
15780 @code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
15781 @code{<=}, and @code{>=} on sets as an error.
15782 @end quotation
15783
15784
15785 @node Built-In Func/Proc
15786 @subsubsection Built-in Functions and Procedures
15787 @cindex Modula-2 built-ins
15788
15789 Modula-2 also makes available several built-in procedures and functions.
15790 In describing these, the following metavariables are used:
15791
15792 @table @var
15793
15794 @item a
15795 represents an @code{ARRAY} variable.
15796
15797 @item c
15798 represents a @code{CHAR} constant or variable.
15799
15800 @item i
15801 represents a variable or constant of integral type.
15802
15803 @item m
15804 represents an identifier that belongs to a set. Generally used in the
15805 same function with the metavariable @var{s}. The type of @var{s} should
15806 be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
15807
15808 @item n
15809 represents a variable or constant of integral or floating-point type.
15810
15811 @item r
15812 represents a variable or constant of floating-point type.
15813
15814 @item t
15815 represents a type.
15816
15817 @item v
15818 represents a variable.
15819
15820 @item x
15821 represents a variable or constant of one of many types. See the
15822 explanation of the function for details.
15823 @end table
15824
15825 All Modula-2 built-in procedures also return a result, described below.
15826
15827 @table @code
15828 @item ABS(@var{n})
15829 Returns the absolute value of @var{n}.
15830
15831 @item CAP(@var{c})
15832 If @var{c} is a lower case letter, it returns its upper case
15833 equivalent, otherwise it returns its argument.
15834
15835 @item CHR(@var{i})
15836 Returns the character whose ordinal value is @var{i}.
15837
15838 @item DEC(@var{v})
15839 Decrements the value in the variable @var{v} by one. Returns the new value.
15840
15841 @item DEC(@var{v},@var{i})
15842 Decrements the value in the variable @var{v} by @var{i}. Returns the
15843 new value.
15844
15845 @item EXCL(@var{m},@var{s})
15846 Removes the element @var{m} from the set @var{s}. Returns the new
15847 set.
15848
15849 @item FLOAT(@var{i})
15850 Returns the floating point equivalent of the integer @var{i}.
15851
15852 @item HIGH(@var{a})
15853 Returns the index of the last member of @var{a}.
15854
15855 @item INC(@var{v})
15856 Increments the value in the variable @var{v} by one. Returns the new value.
15857
15858 @item INC(@var{v},@var{i})
15859 Increments the value in the variable @var{v} by @var{i}. Returns the
15860 new value.
15861
15862 @item INCL(@var{m},@var{s})
15863 Adds the element @var{m} to the set @var{s} if it is not already
15864 there. Returns the new set.
15865
15866 @item MAX(@var{t})
15867 Returns the maximum value of the type @var{t}.
15868
15869 @item MIN(@var{t})
15870 Returns the minimum value of the type @var{t}.
15871
15872 @item ODD(@var{i})
15873 Returns boolean TRUE if @var{i} is an odd number.
15874
15875 @item ORD(@var{x})
15876 Returns the ordinal value of its argument. For example, the ordinal
15877 value of a character is its @sc{ascii} value (on machines supporting
15878 the @sc{ascii} character set). The argument @var{x} must be of an
15879 ordered type, which include integral, character and enumerated types.
15880
15881 @item SIZE(@var{x})
15882 Returns the size of its argument. The argument @var{x} can be a
15883 variable or a type.
15884
15885 @item TRUNC(@var{r})
15886 Returns the integral part of @var{r}.
15887
15888 @item TSIZE(@var{x})
15889 Returns the size of its argument. The argument @var{x} can be a
15890 variable or a type.
15891
15892 @item VAL(@var{t},@var{i})
15893 Returns the member of the type @var{t} whose ordinal value is @var{i}.
15894 @end table
15895
15896 @quotation
15897 @emph{Warning:} Sets and their operations are not yet supported, so
15898 @value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
15899 an error.
15900 @end quotation
15901
15902 @cindex Modula-2 constants
15903 @node M2 Constants
15904 @subsubsection Constants
15905
15906 @value{GDBN} allows you to express the constants of Modula-2 in the following
15907 ways:
15908
15909 @itemize @bullet
15910
15911 @item
15912 Integer constants are simply a sequence of digits. When used in an
15913 expression, a constant is interpreted to be type-compatible with the
15914 rest of the expression. Hexadecimal integers are specified by a
15915 trailing @samp{H}, and octal integers by a trailing @samp{B}.
15916
15917 @item
15918 Floating point constants appear as a sequence of digits, followed by a
15919 decimal point and another sequence of digits. An optional exponent can
15920 then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
15921 @samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
15922 digits of the floating point constant must be valid decimal (base 10)
15923 digits.
15924
15925 @item
15926 Character constants consist of a single character enclosed by a pair of
15927 like quotes, either single (@code{'}) or double (@code{"}). They may
15928 also be expressed by their ordinal value (their @sc{ascii} value, usually)
15929 followed by a @samp{C}.
15930
15931 @item
15932 String constants consist of a sequence of characters enclosed by a
15933 pair of like quotes, either single (@code{'}) or double (@code{"}).
15934 Escape sequences in the style of C are also allowed. @xref{C
15935 Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
15936 sequences.
15937
15938 @item
15939 Enumerated constants consist of an enumerated identifier.
15940
15941 @item
15942 Boolean constants consist of the identifiers @code{TRUE} and
15943 @code{FALSE}.
15944
15945 @item
15946 Pointer constants consist of integral values only.
15947
15948 @item
15949 Set constants are not yet supported.
15950 @end itemize
15951
15952 @node M2 Types
15953 @subsubsection Modula-2 Types
15954 @cindex Modula-2 types
15955
15956 Currently @value{GDBN} can print the following data types in Modula-2
15957 syntax: array types, record types, set types, pointer types, procedure
15958 types, enumerated types, subrange types and base types. You can also
15959 print the contents of variables declared using these type.
15960 This section gives a number of simple source code examples together with
15961 sample @value{GDBN} sessions.
15962
15963 The first example contains the following section of code:
15964
15965 @smallexample
15966 VAR
15967 s: SET OF CHAR ;
15968 r: [20..40] ;
15969 @end smallexample
15970
15971 @noindent
15972 and you can request @value{GDBN} to interrogate the type and value of
15973 @code{r} and @code{s}.
15974
15975 @smallexample
15976 (@value{GDBP}) print s
15977 @{'A'..'C', 'Z'@}
15978 (@value{GDBP}) ptype s
15979 SET OF CHAR
15980 (@value{GDBP}) print r
15981 21
15982 (@value{GDBP}) ptype r
15983 [20..40]
15984 @end smallexample
15985
15986 @noindent
15987 Likewise if your source code declares @code{s} as:
15988
15989 @smallexample
15990 VAR
15991 s: SET ['A'..'Z'] ;
15992 @end smallexample
15993
15994 @noindent
15995 then you may query the type of @code{s} by:
15996
15997 @smallexample
15998 (@value{GDBP}) ptype s
15999 type = SET ['A'..'Z']
16000 @end smallexample
16001
16002 @noindent
16003 Note that at present you cannot interactively manipulate set
16004 expressions using the debugger.
16005
16006 The following example shows how you might declare an array in Modula-2
16007 and how you can interact with @value{GDBN} to print its type and contents:
16008
16009 @smallexample
16010 VAR
16011 s: ARRAY [-10..10] OF CHAR ;
16012 @end smallexample
16013
16014 @smallexample
16015 (@value{GDBP}) ptype s
16016 ARRAY [-10..10] OF CHAR
16017 @end smallexample
16018
16019 Note that the array handling is not yet complete and although the type
16020 is printed correctly, expression handling still assumes that all
16021 arrays have a lower bound of zero and not @code{-10} as in the example
16022 above.
16023
16024 Here are some more type related Modula-2 examples:
16025
16026 @smallexample
16027 TYPE
16028 colour = (blue, red, yellow, green) ;
16029 t = [blue..yellow] ;
16030 VAR
16031 s: t ;
16032 BEGIN
16033 s := blue ;
16034 @end smallexample
16035
16036 @noindent
16037 The @value{GDBN} interaction shows how you can query the data type
16038 and value of a variable.
16039
16040 @smallexample
16041 (@value{GDBP}) print s
16042 $1 = blue
16043 (@value{GDBP}) ptype t
16044 type = [blue..yellow]
16045 @end smallexample
16046
16047 @noindent
16048 In this example a Modula-2 array is declared and its contents
16049 displayed. Observe that the contents are written in the same way as
16050 their @code{C} counterparts.
16051
16052 @smallexample
16053 VAR
16054 s: ARRAY [1..5] OF CARDINAL ;
16055 BEGIN
16056 s[1] := 1 ;
16057 @end smallexample
16058
16059 @smallexample
16060 (@value{GDBP}) print s
16061 $1 = @{1, 0, 0, 0, 0@}
16062 (@value{GDBP}) ptype s
16063 type = ARRAY [1..5] OF CARDINAL
16064 @end smallexample
16065
16066 The Modula-2 language interface to @value{GDBN} also understands
16067 pointer types as shown in this example:
16068
16069 @smallexample
16070 VAR
16071 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
16072 BEGIN
16073 NEW(s) ;
16074 s^[1] := 1 ;
16075 @end smallexample
16076
16077 @noindent
16078 and you can request that @value{GDBN} describes the type of @code{s}.
16079
16080 @smallexample
16081 (@value{GDBP}) ptype s
16082 type = POINTER TO ARRAY [1..5] OF CARDINAL
16083 @end smallexample
16084
16085 @value{GDBN} handles compound types as we can see in this example.
16086 Here we combine array types, record types, pointer types and subrange
16087 types:
16088
16089 @smallexample
16090 TYPE
16091 foo = RECORD
16092 f1: CARDINAL ;
16093 f2: CHAR ;
16094 f3: myarray ;
16095 END ;
16096
16097 myarray = ARRAY myrange OF CARDINAL ;
16098 myrange = [-2..2] ;
16099 VAR
16100 s: POINTER TO ARRAY myrange OF foo ;
16101 @end smallexample
16102
16103 @noindent
16104 and you can ask @value{GDBN} to describe the type of @code{s} as shown
16105 below.
16106
16107 @smallexample
16108 (@value{GDBP}) ptype s
16109 type = POINTER TO ARRAY [-2..2] OF foo = RECORD
16110 f1 : CARDINAL;
16111 f2 : CHAR;
16112 f3 : ARRAY [-2..2] OF CARDINAL;
16113 END
16114 @end smallexample
16115
16116 @node M2 Defaults
16117 @subsubsection Modula-2 Defaults
16118 @cindex Modula-2 defaults
16119
16120 If type and range checking are set automatically by @value{GDBN}, they
16121 both default to @code{on} whenever the working language changes to
16122 Modula-2. This happens regardless of whether you or @value{GDBN}
16123 selected the working language.
16124
16125 If you allow @value{GDBN} to set the language automatically, then entering
16126 code compiled from a file whose name ends with @file{.mod} sets the
16127 working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
16128 Infer the Source Language}, for further details.
16129
16130 @node Deviations
16131 @subsubsection Deviations from Standard Modula-2
16132 @cindex Modula-2, deviations from
16133
16134 A few changes have been made to make Modula-2 programs easier to debug.
16135 This is done primarily via loosening its type strictness:
16136
16137 @itemize @bullet
16138 @item
16139 Unlike in standard Modula-2, pointer constants can be formed by
16140 integers. This allows you to modify pointer variables during
16141 debugging. (In standard Modula-2, the actual address contained in a
16142 pointer variable is hidden from you; it can only be modified
16143 through direct assignment to another pointer variable or expression that
16144 returned a pointer.)
16145
16146 @item
16147 C escape sequences can be used in strings and characters to represent
16148 non-printable characters. @value{GDBN} prints out strings with these
16149 escape sequences embedded. Single non-printable characters are
16150 printed using the @samp{CHR(@var{nnn})} format.
16151
16152 @item
16153 The assignment operator (@code{:=}) returns the value of its right-hand
16154 argument.
16155
16156 @item
16157 All built-in procedures both modify @emph{and} return their argument.
16158 @end itemize
16159
16160 @node M2 Checks
16161 @subsubsection Modula-2 Type and Range Checks
16162 @cindex Modula-2 checks
16163
16164 @quotation
16165 @emph{Warning:} in this release, @value{GDBN} does not yet perform type or
16166 range checking.
16167 @end quotation
16168 @c FIXME remove warning when type/range checks added
16169
16170 @value{GDBN} considers two Modula-2 variables type equivalent if:
16171
16172 @itemize @bullet
16173 @item
16174 They are of types that have been declared equivalent via a @code{TYPE
16175 @var{t1} = @var{t2}} statement
16176
16177 @item
16178 They have been declared on the same line. (Note: This is true of the
16179 @sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
16180 @end itemize
16181
16182 As long as type checking is enabled, any attempt to combine variables
16183 whose types are not equivalent is an error.
16184
16185 Range checking is done on all mathematical operations, assignment, array
16186 index bounds, and all built-in functions and procedures.
16187
16188 @node M2 Scope
16189 @subsubsection The Scope Operators @code{::} and @code{.}
16190 @cindex scope
16191 @cindex @code{.}, Modula-2 scope operator
16192 @cindex colon, doubled as scope operator
16193 @ifinfo
16194 @vindex colon-colon@r{, in Modula-2}
16195 @c Info cannot handle :: but TeX can.
16196 @end ifinfo
16197 @ifnotinfo
16198 @vindex ::@r{, in Modula-2}
16199 @end ifnotinfo
16200
16201 There are a few subtle differences between the Modula-2 scope operator
16202 (@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
16203 similar syntax:
16204
16205 @smallexample
16206
16207 @var{module} . @var{id}
16208 @var{scope} :: @var{id}
16209 @end smallexample
16210
16211 @noindent
16212 where @var{scope} is the name of a module or a procedure,
16213 @var{module} the name of a module, and @var{id} is any declared
16214 identifier within your program, except another module.
16215
16216 Using the @code{::} operator makes @value{GDBN} search the scope
16217 specified by @var{scope} for the identifier @var{id}. If it is not
16218 found in the specified scope, then @value{GDBN} searches all scopes
16219 enclosing the one specified by @var{scope}.
16220
16221 Using the @code{.} operator makes @value{GDBN} search the current scope for
16222 the identifier specified by @var{id} that was imported from the
16223 definition module specified by @var{module}. With this operator, it is
16224 an error if the identifier @var{id} was not imported from definition
16225 module @var{module}, or if @var{id} is not an identifier in
16226 @var{module}.
16227
16228 @node GDB/M2
16229 @subsubsection @value{GDBN} and Modula-2
16230
16231 Some @value{GDBN} commands have little use when debugging Modula-2 programs.
16232 Five subcommands of @code{set print} and @code{show print} apply
16233 specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
16234 @samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
16235 apply to C@t{++}, and the last to the C @code{union} type, which has no direct
16236 analogue in Modula-2.
16237
16238 The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
16239 with any language, is not useful with Modula-2. Its
16240 intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
16241 created in Modula-2 as they can in C or C@t{++}. However, because an
16242 address can be specified by an integral constant, the construct
16243 @samp{@{@var{type}@}@var{adrexp}} is still useful.
16244
16245 @cindex @code{#} in Modula-2
16246 In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
16247 interpreted as the beginning of a comment. Use @code{<>} instead.
16248
16249 @node Ada
16250 @subsection Ada
16251 @cindex Ada
16252
16253 The extensions made to @value{GDBN} for Ada only support
16254 output from the @sc{gnu} Ada (GNAT) compiler.
16255 Other Ada compilers are not currently supported, and
16256 attempting to debug executables produced by them is most likely
16257 to be difficult.
16258
16259
16260 @cindex expressions in Ada
16261 @menu
16262 * Ada Mode Intro:: General remarks on the Ada syntax
16263 and semantics supported by Ada mode
16264 in @value{GDBN}.
16265 * Omissions from Ada:: Restrictions on the Ada expression syntax.
16266 * Additions to Ada:: Extensions of the Ada expression syntax.
16267 * Overloading support for Ada:: Support for expressions involving overloaded
16268 subprograms.
16269 * Stopping Before Main Program:: Debugging the program during elaboration.
16270 * Ada Exceptions:: Ada Exceptions
16271 * Ada Tasks:: Listing and setting breakpoints in tasks.
16272 * Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
16273 * Ravenscar Profile:: Tasking Support when using the Ravenscar
16274 Profile
16275 * Ada Glitches:: Known peculiarities of Ada mode.
16276 @end menu
16277
16278 @node Ada Mode Intro
16279 @subsubsection Introduction
16280 @cindex Ada mode, general
16281
16282 The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
16283 syntax, with some extensions.
16284 The philosophy behind the design of this subset is
16285
16286 @itemize @bullet
16287 @item
16288 That @value{GDBN} should provide basic literals and access to operations for
16289 arithmetic, dereferencing, field selection, indexing, and subprogram calls,
16290 leaving more sophisticated computations to subprograms written into the
16291 program (which therefore may be called from @value{GDBN}).
16292
16293 @item
16294 That type safety and strict adherence to Ada language restrictions
16295 are not particularly important to the @value{GDBN} user.
16296
16297 @item
16298 That brevity is important to the @value{GDBN} user.
16299 @end itemize
16300
16301 Thus, for brevity, the debugger acts as if all names declared in
16302 user-written packages are directly visible, even if they are not visible
16303 according to Ada rules, thus making it unnecessary to fully qualify most
16304 names with their packages, regardless of context. Where this causes
16305 ambiguity, @value{GDBN} asks the user's intent.
16306
16307 The debugger will start in Ada mode if it detects an Ada main program.
16308 As for other languages, it will enter Ada mode when stopped in a program that
16309 was translated from an Ada source file.
16310
16311 While in Ada mode, you may use `@t{--}' for comments. This is useful
16312 mostly for documenting command files. The standard @value{GDBN} comment
16313 (@samp{#}) still works at the beginning of a line in Ada mode, but not in the
16314 middle (to allow based literals).
16315
16316 @node Omissions from Ada
16317 @subsubsection Omissions from Ada
16318 @cindex Ada, omissions from
16319
16320 Here are the notable omissions from the subset:
16321
16322 @itemize @bullet
16323 @item
16324 Only a subset of the attributes are supported:
16325
16326 @itemize @minus
16327 @item
16328 @t{'First}, @t{'Last}, and @t{'Length}
16329 on array objects (not on types and subtypes).
16330
16331 @item
16332 @t{'Min} and @t{'Max}.
16333
16334 @item
16335 @t{'Pos} and @t{'Val}.
16336
16337 @item
16338 @t{'Tag}.
16339
16340 @item
16341 @t{'Range} on array objects (not subtypes), but only as the right
16342 operand of the membership (@code{in}) operator.
16343
16344 @item
16345 @t{'Access}, @t{'Unchecked_Access}, and
16346 @t{'Unrestricted_Access} (a GNAT extension).
16347
16348 @item
16349 @t{'Address}.
16350 @end itemize
16351
16352 @item
16353 The names in
16354 @code{Characters.Latin_1} are not available and
16355 concatenation is not implemented. Thus, escape characters in strings are
16356 not currently available.
16357
16358 @item
16359 Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
16360 equality of representations. They will generally work correctly
16361 for strings and arrays whose elements have integer or enumeration types.
16362 They may not work correctly for arrays whose element
16363 types have user-defined equality, for arrays of real values
16364 (in particular, IEEE-conformant floating point, because of negative
16365 zeroes and NaNs), and for arrays whose elements contain unused bits with
16366 indeterminate values.
16367
16368 @item
16369 The other component-by-component array operations (@code{and}, @code{or},
16370 @code{xor}, @code{not}, and relational tests other than equality)
16371 are not implemented.
16372
16373 @item
16374 @cindex array aggregates (Ada)
16375 @cindex record aggregates (Ada)
16376 @cindex aggregates (Ada)
16377 There is limited support for array and record aggregates. They are
16378 permitted only on the right sides of assignments, as in these examples:
16379
16380 @smallexample
16381 (@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
16382 (@value{GDBP}) set An_Array := (1, others => 0)
16383 (@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
16384 (@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
16385 (@value{GDBP}) set A_Record := (1, "Peter", True);
16386 (@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
16387 @end smallexample
16388
16389 Changing a
16390 discriminant's value by assigning an aggregate has an
16391 undefined effect if that discriminant is used within the record.
16392 However, you can first modify discriminants by directly assigning to
16393 them (which normally would not be allowed in Ada), and then performing an
16394 aggregate assignment. For example, given a variable @code{A_Rec}
16395 declared to have a type such as:
16396
16397 @smallexample
16398 type Rec (Len : Small_Integer := 0) is record
16399 Id : Integer;
16400 Vals : IntArray (1 .. Len);
16401 end record;
16402 @end smallexample
16403
16404 you can assign a value with a different size of @code{Vals} with two
16405 assignments:
16406
16407 @smallexample
16408 (@value{GDBP}) set A_Rec.Len := 4
16409 (@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
16410 @end smallexample
16411
16412 As this example also illustrates, @value{GDBN} is very loose about the usual
16413 rules concerning aggregates. You may leave out some of the
16414 components of an array or record aggregate (such as the @code{Len}
16415 component in the assignment to @code{A_Rec} above); they will retain their
16416 original values upon assignment. You may freely use dynamic values as
16417 indices in component associations. You may even use overlapping or
16418 redundant component associations, although which component values are
16419 assigned in such cases is not defined.
16420
16421 @item
16422 Calls to dispatching subprograms are not implemented.
16423
16424 @item
16425 The overloading algorithm is much more limited (i.e., less selective)
16426 than that of real Ada. It makes only limited use of the context in
16427 which a subexpression appears to resolve its meaning, and it is much
16428 looser in its rules for allowing type matches. As a result, some
16429 function calls will be ambiguous, and the user will be asked to choose
16430 the proper resolution.
16431
16432 @item
16433 The @code{new} operator is not implemented.
16434
16435 @item
16436 Entry calls are not implemented.
16437
16438 @item
16439 Aside from printing, arithmetic operations on the native VAX floating-point
16440 formats are not supported.
16441
16442 @item
16443 It is not possible to slice a packed array.
16444
16445 @item
16446 The names @code{True} and @code{False}, when not part of a qualified name,
16447 are interpreted as if implicitly prefixed by @code{Standard}, regardless of
16448 context.
16449 Should your program
16450 redefine these names in a package or procedure (at best a dubious practice),
16451 you will have to use fully qualified names to access their new definitions.
16452 @end itemize
16453
16454 @node Additions to Ada
16455 @subsubsection Additions to Ada
16456 @cindex Ada, deviations from
16457
16458 As it does for other languages, @value{GDBN} makes certain generic
16459 extensions to Ada (@pxref{Expressions}):
16460
16461 @itemize @bullet
16462 @item
16463 If the expression @var{E} is a variable residing in memory (typically
16464 a local variable or array element) and @var{N} is a positive integer,
16465 then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
16466 @var{N}-1 adjacent variables following it in memory as an array. In
16467 Ada, this operator is generally not necessary, since its prime use is
16468 in displaying parts of an array, and slicing will usually do this in
16469 Ada. However, there are occasional uses when debugging programs in
16470 which certain debugging information has been optimized away.
16471
16472 @item
16473 @code{@var{B}::@var{var}} means ``the variable named @var{var} that
16474 appears in function or file @var{B}.'' When @var{B} is a file name,
16475 you must typically surround it in single quotes.
16476
16477 @item
16478 The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
16479 @var{type} that appears at address @var{addr}.''
16480
16481 @item
16482 A name starting with @samp{$} is a convenience variable
16483 (@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
16484 @end itemize
16485
16486 In addition, @value{GDBN} provides a few other shortcuts and outright
16487 additions specific to Ada:
16488
16489 @itemize @bullet
16490 @item
16491 The assignment statement is allowed as an expression, returning
16492 its right-hand operand as its value. Thus, you may enter
16493
16494 @smallexample
16495 (@value{GDBP}) set x := y + 3
16496 (@value{GDBP}) print A(tmp := y + 1)
16497 @end smallexample
16498
16499 @item
16500 The semicolon is allowed as an ``operator,'' returning as its value
16501 the value of its right-hand operand.
16502 This allows, for example,
16503 complex conditional breaks:
16504
16505 @smallexample
16506 (@value{GDBP}) break f
16507 (@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
16508 @end smallexample
16509
16510 @item
16511 Rather than use catenation and symbolic character names to introduce special
16512 characters into strings, one may instead use a special bracket notation,
16513 which is also used to print strings. A sequence of characters of the form
16514 @samp{["@var{XX}"]} within a string or character literal denotes the
16515 (single) character whose numeric encoding is @var{XX} in hexadecimal. The
16516 sequence of characters @samp{["""]} also denotes a single quotation mark
16517 in strings. For example,
16518 @smallexample
16519 "One line.["0a"]Next line.["0a"]"
16520 @end smallexample
16521 @noindent
16522 contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
16523 after each period.
16524
16525 @item
16526 The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
16527 @t{'Max} is optional (and is ignored in any case). For example, it is valid
16528 to write
16529
16530 @smallexample
16531 (@value{GDBP}) print 'max(x, y)
16532 @end smallexample
16533
16534 @item
16535 When printing arrays, @value{GDBN} uses positional notation when the
16536 array has a lower bound of 1, and uses a modified named notation otherwise.
16537 For example, a one-dimensional array of three integers with a lower bound
16538 of 3 might print as
16539
16540 @smallexample
16541 (3 => 10, 17, 1)
16542 @end smallexample
16543
16544 @noindent
16545 That is, in contrast to valid Ada, only the first component has a @code{=>}
16546 clause.
16547
16548 @item
16549 You may abbreviate attributes in expressions with any unique,
16550 multi-character subsequence of
16551 their names (an exact match gets preference).
16552 For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
16553 in place of @t{a'length}.
16554
16555 @item
16556 @cindex quoting Ada internal identifiers
16557 Since Ada is case-insensitive, the debugger normally maps identifiers you type
16558 to lower case. The GNAT compiler uses upper-case characters for
16559 some of its internal identifiers, which are normally of no interest to users.
16560 For the rare occasions when you actually have to look at them,
16561 enclose them in angle brackets to avoid the lower-case mapping.
16562 For example,
16563 @smallexample
16564 (@value{GDBP}) print <JMPBUF_SAVE>[0]
16565 @end smallexample
16566
16567 @item
16568 Printing an object of class-wide type or dereferencing an
16569 access-to-class-wide value will display all the components of the object's
16570 specific type (as indicated by its run-time tag). Likewise, component
16571 selection on such a value will operate on the specific type of the
16572 object.
16573
16574 @end itemize
16575
16576 @node Overloading support for Ada
16577 @subsubsection Overloading support for Ada
16578 @cindex overloading, Ada
16579
16580 The debugger supports limited overloading. Given a subprogram call in which
16581 the function symbol has multiple definitions, it will use the number of
16582 actual parameters and some information about their types to attempt to narrow
16583 the set of definitions. It also makes very limited use of context, preferring
16584 procedures to functions in the context of the @code{call} command, and
16585 functions to procedures elsewhere.
16586
16587 If, after narrowing, the set of matching definitions still contains more than
16588 one definition, @value{GDBN} will display a menu to query which one it should
16589 use, for instance:
16590
16591 @smallexample
16592 (@value{GDBP}) print f(1)
16593 Multiple matches for f
16594 [0] cancel
16595 [1] foo.f (integer) return boolean at foo.adb:23
16596 [2] foo.f (foo.new_integer) return boolean at foo.adb:28
16597 >
16598 @end smallexample
16599
16600 In this case, just select one menu entry either to cancel expression evaluation
16601 (type @kbd{0} and press @key{RET}) or to continue evaluation with a specific
16602 instance (type the corresponding number and press @key{RET}).
16603
16604 Here are a couple of commands to customize @value{GDBN}'s behavior in this
16605 case:
16606
16607 @table @code
16608
16609 @kindex set ada print-signatures
16610 @item set ada print-signatures
16611 Control whether parameter types and return types are displayed in overloads
16612 selection menus. It is @code{on} by default.
16613 @xref{Overloading support for Ada}.
16614
16615 @kindex show ada print-signatures
16616 @item show ada print-signatures
16617 Show the current setting for displaying parameter types and return types in
16618 overloads selection menu.
16619 @xref{Overloading support for Ada}.
16620
16621 @end table
16622
16623 @node Stopping Before Main Program
16624 @subsubsection Stopping at the Very Beginning
16625
16626 @cindex breakpointing Ada elaboration code
16627 It is sometimes necessary to debug the program during elaboration, and
16628 before reaching the main procedure.
16629 As defined in the Ada Reference
16630 Manual, the elaboration code is invoked from a procedure called
16631 @code{adainit}. To run your program up to the beginning of
16632 elaboration, simply use the following two commands:
16633 @code{tbreak adainit} and @code{run}.
16634
16635 @node Ada Exceptions
16636 @subsubsection Ada Exceptions
16637
16638 A command is provided to list all Ada exceptions:
16639
16640 @table @code
16641 @kindex info exceptions
16642 @item info exceptions
16643 @itemx info exceptions @var{regexp}
16644 The @code{info exceptions} command allows you to list all Ada exceptions
16645 defined within the program being debugged, as well as their addresses.
16646 With a regular expression, @var{regexp}, as argument, only those exceptions
16647 whose names match @var{regexp} are listed.
16648 @end table
16649
16650 Below is a small example, showing how the command can be used, first
16651 without argument, and next with a regular expression passed as an
16652 argument.
16653
16654 @smallexample
16655 (@value{GDBP}) info exceptions
16656 All defined Ada exceptions:
16657 constraint_error: 0x613da0
16658 program_error: 0x613d20
16659 storage_error: 0x613ce0
16660 tasking_error: 0x613ca0
16661 const.aint_global_e: 0x613b00
16662 (@value{GDBP}) info exceptions const.aint
16663 All Ada exceptions matching regular expression "const.aint":
16664 constraint_error: 0x613da0
16665 const.aint_global_e: 0x613b00
16666 @end smallexample
16667
16668 It is also possible to ask @value{GDBN} to stop your program's execution
16669 when an exception is raised. For more details, see @ref{Set Catchpoints}.
16670
16671 @node Ada Tasks
16672 @subsubsection Extensions for Ada Tasks
16673 @cindex Ada, tasking
16674
16675 Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
16676 @value{GDBN} provides the following task-related commands:
16677
16678 @table @code
16679 @kindex info tasks
16680 @item info tasks
16681 This command shows a list of current Ada tasks, as in the following example:
16682
16683
16684 @smallexample
16685 @iftex
16686 @leftskip=0.5cm
16687 @end iftex
16688 (@value{GDBP}) info tasks
16689 ID TID P-ID Pri State Name
16690 1 8088000 0 15 Child Activation Wait main_task
16691 2 80a4000 1 15 Accept Statement b
16692 3 809a800 1 15 Child Activation Wait a
16693 * 4 80ae800 3 15 Runnable c
16694
16695 @end smallexample
16696
16697 @noindent
16698 In this listing, the asterisk before the last task indicates it to be the
16699 task currently being inspected.
16700
16701 @table @asis
16702 @item ID
16703 Represents @value{GDBN}'s internal task number.
16704
16705 @item TID
16706 The Ada task ID.
16707
16708 @item P-ID
16709 The parent's task ID (@value{GDBN}'s internal task number).
16710
16711 @item Pri
16712 The base priority of the task.
16713
16714 @item State
16715 Current state of the task.
16716
16717 @table @code
16718 @item Unactivated
16719 The task has been created but has not been activated. It cannot be
16720 executing.
16721
16722 @item Runnable
16723 The task is not blocked for any reason known to Ada. (It may be waiting
16724 for a mutex, though.) It is conceptually "executing" in normal mode.
16725
16726 @item Terminated
16727 The task is terminated, in the sense of ARM 9.3 (5). Any dependents
16728 that were waiting on terminate alternatives have been awakened and have
16729 terminated themselves.
16730
16731 @item Child Activation Wait
16732 The task is waiting for created tasks to complete activation.
16733
16734 @item Accept Statement
16735 The task is waiting on an accept or selective wait statement.
16736
16737 @item Waiting on entry call
16738 The task is waiting on an entry call.
16739
16740 @item Async Select Wait
16741 The task is waiting to start the abortable part of an asynchronous
16742 select statement.
16743
16744 @item Delay Sleep
16745 The task is waiting on a select statement with only a delay
16746 alternative open.
16747
16748 @item Child Termination Wait
16749 The task is sleeping having completed a master within itself, and is
16750 waiting for the tasks dependent on that master to become terminated or
16751 waiting on a terminate Phase.
16752
16753 @item Wait Child in Term Alt
16754 The task is sleeping waiting for tasks on terminate alternatives to
16755 finish terminating.
16756
16757 @item Accepting RV with @var{taskno}
16758 The task is accepting a rendez-vous with the task @var{taskno}.
16759 @end table
16760
16761 @item Name
16762 Name of the task in the program.
16763
16764 @end table
16765
16766 @kindex info task @var{taskno}
16767 @item info task @var{taskno}
16768 This command shows detailled informations on the specified task, as in
16769 the following example:
16770 @smallexample
16771 @iftex
16772 @leftskip=0.5cm
16773 @end iftex
16774 (@value{GDBP}) info tasks
16775 ID TID P-ID Pri State Name
16776 1 8077880 0 15 Child Activation Wait main_task
16777 * 2 807c468 1 15 Runnable task_1
16778 (@value{GDBP}) info task 2
16779 Ada Task: 0x807c468
16780 Name: task_1
16781 Thread: 0x807f378
16782 Parent: 1 (main_task)
16783 Base Priority: 15
16784 State: Runnable
16785 @end smallexample
16786
16787 @item task
16788 @kindex task@r{ (Ada)}
16789 @cindex current Ada task ID
16790 This command prints the ID of the current task.
16791
16792 @smallexample
16793 @iftex
16794 @leftskip=0.5cm
16795 @end iftex
16796 (@value{GDBP}) info tasks
16797 ID TID P-ID Pri State Name
16798 1 8077870 0 15 Child Activation Wait main_task
16799 * 2 807c458 1 15 Runnable t
16800 (@value{GDBP}) task
16801 [Current task is 2]
16802 @end smallexample
16803
16804 @item task @var{taskno}
16805 @cindex Ada task switching
16806 This command is like the @code{thread @var{thread-id}}
16807 command (@pxref{Threads}). It switches the context of debugging
16808 from the current task to the given task.
16809
16810 @smallexample
16811 @iftex
16812 @leftskip=0.5cm
16813 @end iftex
16814 (@value{GDBP}) info tasks
16815 ID TID P-ID Pri State Name
16816 1 8077870 0 15 Child Activation Wait main_task
16817 * 2 807c458 1 15 Runnable t
16818 (@value{GDBP}) task 1
16819 [Switching to task 1]
16820 #0 0x8067726 in pthread_cond_wait ()
16821 (@value{GDBP}) bt
16822 #0 0x8067726 in pthread_cond_wait ()
16823 #1 0x8056714 in system.os_interface.pthread_cond_wait ()
16824 #2 0x805cb63 in system.task_primitives.operations.sleep ()
16825 #3 0x806153e in system.tasking.stages.activate_tasks ()
16826 #4 0x804aacc in un () at un.adb:5
16827 @end smallexample
16828
16829 @item break @var{location} task @var{taskno}
16830 @itemx break @var{location} task @var{taskno} if @dots{}
16831 @cindex breakpoints and tasks, in Ada
16832 @cindex task breakpoints, in Ada
16833 @kindex break @dots{} task @var{taskno}@r{ (Ada)}
16834 These commands are like the @code{break @dots{} thread @dots{}}
16835 command (@pxref{Thread Stops}). The
16836 @var{location} argument specifies source lines, as described
16837 in @ref{Specify Location}.
16838
16839 Use the qualifier @samp{task @var{taskno}} with a breakpoint command
16840 to specify that you only want @value{GDBN} to stop the program when a
16841 particular Ada task reaches this breakpoint. The @var{taskno} is one of the
16842 numeric task identifiers assigned by @value{GDBN}, shown in the first
16843 column of the @samp{info tasks} display.
16844
16845 If you do not specify @samp{task @var{taskno}} when you set a
16846 breakpoint, the breakpoint applies to @emph{all} tasks of your
16847 program.
16848
16849 You can use the @code{task} qualifier on conditional breakpoints as
16850 well; in this case, place @samp{task @var{taskno}} before the
16851 breakpoint condition (before the @code{if}).
16852
16853 For example,
16854
16855 @smallexample
16856 @iftex
16857 @leftskip=0.5cm
16858 @end iftex
16859 (@value{GDBP}) info tasks
16860 ID TID P-ID Pri State Name
16861 1 140022020 0 15 Child Activation Wait main_task
16862 2 140045060 1 15 Accept/Select Wait t2
16863 3 140044840 1 15 Runnable t1
16864 * 4 140056040 1 15 Runnable t3
16865 (@value{GDBP}) b 15 task 2
16866 Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
16867 (@value{GDBP}) cont
16868 Continuing.
16869 task # 1 running
16870 task # 2 running
16871
16872 Breakpoint 5, test_task_debug () at test_task_debug.adb:15
16873 15 flush;
16874 (@value{GDBP}) info tasks
16875 ID TID P-ID Pri State Name
16876 1 140022020 0 15 Child Activation Wait main_task
16877 * 2 140045060 1 15 Runnable t2
16878 3 140044840 1 15 Runnable t1
16879 4 140056040 1 15 Delay Sleep t3
16880 @end smallexample
16881 @end table
16882
16883 @node Ada Tasks and Core Files
16884 @subsubsection Tasking Support when Debugging Core Files
16885 @cindex Ada tasking and core file debugging
16886
16887 When inspecting a core file, as opposed to debugging a live program,
16888 tasking support may be limited or even unavailable, depending on
16889 the platform being used.
16890 For instance, on x86-linux, the list of tasks is available, but task
16891 switching is not supported.
16892
16893 On certain platforms, the debugger needs to perform some
16894 memory writes in order to provide Ada tasking support. When inspecting
16895 a core file, this means that the core file must be opened with read-write
16896 privileges, using the command @samp{"set write on"} (@pxref{Patching}).
16897 Under these circumstances, you should make a backup copy of the core
16898 file before inspecting it with @value{GDBN}.
16899
16900 @node Ravenscar Profile
16901 @subsubsection Tasking Support when using the Ravenscar Profile
16902 @cindex Ravenscar Profile
16903
16904 The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
16905 specifically designed for systems with safety-critical real-time
16906 requirements.
16907
16908 @table @code
16909 @kindex set ravenscar task-switching on
16910 @cindex task switching with program using Ravenscar Profile
16911 @item set ravenscar task-switching on
16912 Allows task switching when debugging a program that uses the Ravenscar
16913 Profile. This is the default.
16914
16915 @kindex set ravenscar task-switching off
16916 @item set ravenscar task-switching off
16917 Turn off task switching when debugging a program that uses the Ravenscar
16918 Profile. This is mostly intended to disable the code that adds support
16919 for the Ravenscar Profile, in case a bug in either @value{GDBN} or in
16920 the Ravenscar runtime is preventing @value{GDBN} from working properly.
16921 To be effective, this command should be run before the program is started.
16922
16923 @kindex show ravenscar task-switching
16924 @item show ravenscar task-switching
16925 Show whether it is possible to switch from task to task in a program
16926 using the Ravenscar Profile.
16927
16928 @end table
16929
16930 @node Ada Glitches
16931 @subsubsection Known Peculiarities of Ada Mode
16932 @cindex Ada, problems
16933
16934 Besides the omissions listed previously (@pxref{Omissions from Ada}),
16935 we know of several problems with and limitations of Ada mode in
16936 @value{GDBN},
16937 some of which will be fixed with planned future releases of the debugger
16938 and the GNU Ada compiler.
16939
16940 @itemize @bullet
16941 @item
16942 Static constants that the compiler chooses not to materialize as objects in
16943 storage are invisible to the debugger.
16944
16945 @item
16946 Named parameter associations in function argument lists are ignored (the
16947 argument lists are treated as positional).
16948
16949 @item
16950 Many useful library packages are currently invisible to the debugger.
16951
16952 @item
16953 Fixed-point arithmetic, conversions, input, and output is carried out using
16954 floating-point arithmetic, and may give results that only approximate those on
16955 the host machine.
16956
16957 @item
16958 The GNAT compiler never generates the prefix @code{Standard} for any of
16959 the standard symbols defined by the Ada language. @value{GDBN} knows about
16960 this: it will strip the prefix from names when you use it, and will never
16961 look for a name you have so qualified among local symbols, nor match against
16962 symbols in other packages or subprograms. If you have
16963 defined entities anywhere in your program other than parameters and
16964 local variables whose simple names match names in @code{Standard},
16965 GNAT's lack of qualification here can cause confusion. When this happens,
16966 you can usually resolve the confusion
16967 by qualifying the problematic names with package
16968 @code{Standard} explicitly.
16969 @end itemize
16970
16971 Older versions of the compiler sometimes generate erroneous debugging
16972 information, resulting in the debugger incorrectly printing the value
16973 of affected entities. In some cases, the debugger is able to work
16974 around an issue automatically. In other cases, the debugger is able
16975 to work around the issue, but the work-around has to be specifically
16976 enabled.
16977
16978 @kindex set ada trust-PAD-over-XVS
16979 @kindex show ada trust-PAD-over-XVS
16980 @table @code
16981
16982 @item set ada trust-PAD-over-XVS on
16983 Configure GDB to strictly follow the GNAT encoding when computing the
16984 value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
16985 types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
16986 a complete description of the encoding used by the GNAT compiler).
16987 This is the default.
16988
16989 @item set ada trust-PAD-over-XVS off
16990 This is related to the encoding using by the GNAT compiler. If @value{GDBN}
16991 sometimes prints the wrong value for certain entities, changing @code{ada
16992 trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
16993 the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
16994 @code{off}, but this incurs a slight performance penalty, so it is
16995 recommended to leave this setting to @code{on} unless necessary.
16996
16997 @end table
16998
16999 @cindex GNAT descriptive types
17000 @cindex GNAT encoding
17001 Internally, the debugger also relies on the compiler following a number
17002 of conventions known as the @samp{GNAT Encoding}, all documented in
17003 @file{gcc/ada/exp_dbug.ads} in the GCC sources. This encoding describes
17004 how the debugging information should be generated for certain types.
17005 In particular, this convention makes use of @dfn{descriptive types},
17006 which are artificial types generated purely to help the debugger.
17007
17008 These encodings were defined at a time when the debugging information
17009 format used was not powerful enough to describe some of the more complex
17010 types available in Ada. Since DWARF allows us to express nearly all
17011 Ada features, the long-term goal is to slowly replace these descriptive
17012 types by their pure DWARF equivalent. To facilitate that transition,
17013 a new maintenance option is available to force the debugger to ignore
17014 those descriptive types. It allows the user to quickly evaluate how
17015 well @value{GDBN} works without them.
17016
17017 @table @code
17018
17019 @kindex maint ada set ignore-descriptive-types
17020 @item maintenance ada set ignore-descriptive-types [on|off]
17021 Control whether the debugger should ignore descriptive types.
17022 The default is not to ignore descriptives types (@code{off}).
17023
17024 @kindex maint ada show ignore-descriptive-types
17025 @item maintenance ada show ignore-descriptive-types
17026 Show if descriptive types are ignored by @value{GDBN}.
17027
17028 @end table
17029
17030 @node Unsupported Languages
17031 @section Unsupported Languages
17032
17033 @cindex unsupported languages
17034 @cindex minimal language
17035 In addition to the other fully-supported programming languages,
17036 @value{GDBN} also provides a pseudo-language, called @code{minimal}.
17037 It does not represent a real programming language, but provides a set
17038 of capabilities close to what the C or assembly languages provide.
17039 This should allow most simple operations to be performed while debugging
17040 an application that uses a language currently not supported by @value{GDBN}.
17041
17042 If the language is set to @code{auto}, @value{GDBN} will automatically
17043 select this language if the current frame corresponds to an unsupported
17044 language.
17045
17046 @node Symbols
17047 @chapter Examining the Symbol Table
17048
17049 The commands described in this chapter allow you to inquire about the
17050 symbols (names of variables, functions and types) defined in your
17051 program. This information is inherent in the text of your program and
17052 does not change as your program executes. @value{GDBN} finds it in your
17053 program's symbol table, in the file indicated when you started @value{GDBN}
17054 (@pxref{File Options, ,Choosing Files}), or by one of the
17055 file-management commands (@pxref{Files, ,Commands to Specify Files}).
17056
17057 @cindex symbol names
17058 @cindex names of symbols
17059 @cindex quoting names
17060 @anchor{quoting names}
17061 Occasionally, you may need to refer to symbols that contain unusual
17062 characters, which @value{GDBN} ordinarily treats as word delimiters. The
17063 most frequent case is in referring to static variables in other
17064 source files (@pxref{Variables,,Program Variables}). File names
17065 are recorded in object files as debugging symbols, but @value{GDBN} would
17066 ordinarily parse a typical file name, like @file{foo.c}, as the three words
17067 @samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
17068 @samp{foo.c} as a single symbol, enclose it in single quotes; for example,
17069
17070 @smallexample
17071 p 'foo.c'::x
17072 @end smallexample
17073
17074 @noindent
17075 looks up the value of @code{x} in the scope of the file @file{foo.c}.
17076
17077 @table @code
17078 @cindex case-insensitive symbol names
17079 @cindex case sensitivity in symbol names
17080 @kindex set case-sensitive
17081 @item set case-sensitive on
17082 @itemx set case-sensitive off
17083 @itemx set case-sensitive auto
17084 Normally, when @value{GDBN} looks up symbols, it matches their names
17085 with case sensitivity determined by the current source language.
17086 Occasionally, you may wish to control that. The command @code{set
17087 case-sensitive} lets you do that by specifying @code{on} for
17088 case-sensitive matches or @code{off} for case-insensitive ones. If
17089 you specify @code{auto}, case sensitivity is reset to the default
17090 suitable for the source language. The default is case-sensitive
17091 matches for all languages except for Fortran, for which the default is
17092 case-insensitive matches.
17093
17094 @kindex show case-sensitive
17095 @item show case-sensitive
17096 This command shows the current setting of case sensitivity for symbols
17097 lookups.
17098
17099 @kindex set print type methods
17100 @item set print type methods
17101 @itemx set print type methods on
17102 @itemx set print type methods off
17103 Normally, when @value{GDBN} prints a class, it displays any methods
17104 declared in that class. You can control this behavior either by
17105 passing the appropriate flag to @code{ptype}, or using @command{set
17106 print type methods}. Specifying @code{on} will cause @value{GDBN} to
17107 display the methods; this is the default. Specifying @code{off} will
17108 cause @value{GDBN} to omit the methods.
17109
17110 @kindex show print type methods
17111 @item show print type methods
17112 This command shows the current setting of method display when printing
17113 classes.
17114
17115 @kindex set print type nested-type-limit
17116 @item set print type nested-type-limit @var{limit}
17117 @itemx set print type nested-type-limit unlimited
17118 Set the limit of displayed nested types that the type printer will
17119 show. A @var{limit} of @code{unlimited} or @code{-1} will show all
17120 nested definitions. By default, the type printer will not show any nested
17121 types defined in classes.
17122
17123 @kindex show print type nested-type-limit
17124 @item show print type nested-type-limit
17125 This command shows the current display limit of nested types when
17126 printing classes.
17127
17128 @kindex set print type typedefs
17129 @item set print type typedefs
17130 @itemx set print type typedefs on
17131 @itemx set print type typedefs off
17132
17133 Normally, when @value{GDBN} prints a class, it displays any typedefs
17134 defined in that class. You can control this behavior either by
17135 passing the appropriate flag to @code{ptype}, or using @command{set
17136 print type typedefs}. Specifying @code{on} will cause @value{GDBN} to
17137 display the typedef definitions; this is the default. Specifying
17138 @code{off} will cause @value{GDBN} to omit the typedef definitions.
17139 Note that this controls whether the typedef definition itself is
17140 printed, not whether typedef names are substituted when printing other
17141 types.
17142
17143 @kindex show print type typedefs
17144 @item show print type typedefs
17145 This command shows the current setting of typedef display when
17146 printing classes.
17147
17148 @kindex info address
17149 @cindex address of a symbol
17150 @item info address @var{symbol}
17151 Describe where the data for @var{symbol} is stored. For a register
17152 variable, this says which register it is kept in. For a non-register
17153 local variable, this prints the stack-frame offset at which the variable
17154 is always stored.
17155
17156 Note the contrast with @samp{print &@var{symbol}}, which does not work
17157 at all for a register variable, and for a stack local variable prints
17158 the exact address of the current instantiation of the variable.
17159
17160 @kindex info symbol
17161 @cindex symbol from address
17162 @cindex closest symbol and offset for an address
17163 @item info symbol @var{addr}
17164 Print the name of a symbol which is stored at the address @var{addr}.
17165 If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
17166 nearest symbol and an offset from it:
17167
17168 @smallexample
17169 (@value{GDBP}) info symbol 0x54320
17170 _initialize_vx + 396 in section .text
17171 @end smallexample
17172
17173 @noindent
17174 This is the opposite of the @code{info address} command. You can use
17175 it to find out the name of a variable or a function given its address.
17176
17177 For dynamically linked executables, the name of executable or shared
17178 library containing the symbol is also printed:
17179
17180 @smallexample
17181 (@value{GDBP}) info symbol 0x400225
17182 _start + 5 in section .text of /tmp/a.out
17183 (@value{GDBP}) info symbol 0x2aaaac2811cf
17184 __read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
17185 @end smallexample
17186
17187 @kindex demangle
17188 @cindex demangle
17189 @item demangle @r{[}-l @var{language}@r{]} @r{[}@var{--}@r{]} @var{name}
17190 Demangle @var{name}.
17191 If @var{language} is provided it is the name of the language to demangle
17192 @var{name} in. Otherwise @var{name} is demangled in the current language.
17193
17194 The @samp{--} option specifies the end of options,
17195 and is useful when @var{name} begins with a dash.
17196
17197 The parameter @code{demangle-style} specifies how to interpret the kind
17198 of mangling used. @xref{Print Settings}.
17199
17200 @kindex whatis
17201 @item whatis[/@var{flags}] [@var{arg}]
17202 Print the data type of @var{arg}, which can be either an expression
17203 or a name of a data type. With no argument, print the data type of
17204 @code{$}, the last value in the value history.
17205
17206 If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it
17207 is not actually evaluated, and any side-effecting operations (such as
17208 assignments or function calls) inside it do not take place.
17209
17210 If @var{arg} is a variable or an expression, @code{whatis} prints its
17211 literal type as it is used in the source code. If the type was
17212 defined using a @code{typedef}, @code{whatis} will @emph{not} print
17213 the data type underlying the @code{typedef}. If the type of the
17214 variable or the expression is a compound data type, such as
17215 @code{struct} or @code{class}, @code{whatis} never prints their
17216 fields or methods. It just prints the @code{struct}/@code{class}
17217 name (a.k.a.@: its @dfn{tag}). If you want to see the members of
17218 such a compound data type, use @code{ptype}.
17219
17220 If @var{arg} is a type name that was defined using @code{typedef},
17221 @code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
17222 Unrolling means that @code{whatis} will show the underlying type used
17223 in the @code{typedef} declaration of @var{arg}. However, if that
17224 underlying type is also a @code{typedef}, @code{whatis} will not
17225 unroll it.
17226
17227 For C code, the type names may also have the form @samp{class
17228 @var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
17229 @var{union-tag}} or @samp{enum @var{enum-tag}}.
17230
17231 @var{flags} can be used to modify how the type is displayed.
17232 Available flags are:
17233
17234 @table @code
17235 @item r
17236 Display in ``raw'' form. Normally, @value{GDBN} substitutes template
17237 parameters and typedefs defined in a class when printing the class'
17238 members. The @code{/r} flag disables this.
17239
17240 @item m
17241 Do not print methods defined in the class.
17242
17243 @item M
17244 Print methods defined in the class. This is the default, but the flag
17245 exists in case you change the default with @command{set print type methods}.
17246
17247 @item t
17248 Do not print typedefs defined in the class. Note that this controls
17249 whether the typedef definition itself is printed, not whether typedef
17250 names are substituted when printing other types.
17251
17252 @item T
17253 Print typedefs defined in the class. This is the default, but the flag
17254 exists in case you change the default with @command{set print type typedefs}.
17255
17256 @item o
17257 Print the offsets and sizes of fields in a struct, similar to what the
17258 @command{pahole} tool does. This option implies the @code{/tm} flags.
17259
17260 For example, given the following declarations:
17261
17262 @smallexample
17263 struct tuv
17264 @{
17265 int a1;
17266 char *a2;
17267 int a3;
17268 @};
17269
17270 struct xyz
17271 @{
17272 int f1;
17273 char f2;
17274 void *f3;
17275 struct tuv f4;
17276 @};
17277
17278 union qwe
17279 @{
17280 struct tuv fff1;
17281 struct xyz fff2;
17282 @};
17283
17284 struct tyu
17285 @{
17286 int a1 : 1;
17287 int a2 : 3;
17288 int a3 : 23;
17289 char a4 : 2;
17290 int64_t a5;
17291 int a6 : 5;
17292 int64_t a7 : 3;
17293 @};
17294 @end smallexample
17295
17296 Issuing a @kbd{ptype /o struct tuv} command would print:
17297
17298 @smallexample
17299 (@value{GDBP}) ptype /o struct tuv
17300 /* offset | size */ type = struct tuv @{
17301 /* 0 | 4 */ int a1;
17302 /* XXX 4-byte hole */
17303 /* 8 | 8 */ char *a2;
17304 /* 16 | 4 */ int a3;
17305
17306 /* total size (bytes): 24 */
17307 @}
17308 @end smallexample
17309
17310 Notice the format of the first column of comments. There, you can
17311 find two parts separated by the @samp{|} character: the @emph{offset},
17312 which indicates where the field is located inside the struct, in
17313 bytes, and the @emph{size} of the field. Another interesting line is
17314 the marker of a @emph{hole} in the struct, indicating that it may be
17315 possible to pack the struct and make it use less space by reorganizing
17316 its fields.
17317
17318 It is also possible to print offsets inside an union:
17319
17320 @smallexample
17321 (@value{GDBP}) ptype /o union qwe
17322 /* offset | size */ type = union qwe @{
17323 /* 24 */ struct tuv @{
17324 /* 0 | 4 */ int a1;
17325 /* XXX 4-byte hole */
17326 /* 8 | 8 */ char *a2;
17327 /* 16 | 4 */ int a3;
17328
17329 /* total size (bytes): 24 */
17330 @} fff1;
17331 /* 40 */ struct xyz @{
17332 /* 0 | 4 */ int f1;
17333 /* 4 | 1 */ char f2;
17334 /* XXX 3-byte hole */
17335 /* 8 | 8 */ void *f3;
17336 /* 16 | 24 */ struct tuv @{
17337 /* 16 | 4 */ int a1;
17338 /* XXX 4-byte hole */
17339 /* 24 | 8 */ char *a2;
17340 /* 32 | 4 */ int a3;
17341
17342 /* total size (bytes): 24 */
17343 @} f4;
17344
17345 /* total size (bytes): 40 */
17346 @} fff2;
17347
17348 /* total size (bytes): 40 */
17349 @}
17350 @end smallexample
17351
17352 In this case, since @code{struct tuv} and @code{struct xyz} occupy the
17353 same space (because we are dealing with an union), the offset is not
17354 printed for them. However, you can still examine the offset of each
17355 of these structures' fields.
17356
17357 Another useful scenario is printing the offsets of a struct containing
17358 bitfields:
17359
17360 @smallexample
17361 (@value{GDBP}) ptype /o struct tyu
17362 /* offset | size */ type = struct tyu @{
17363 /* 0:31 | 4 */ int a1 : 1;
17364 /* 0:28 | 4 */ int a2 : 3;
17365 /* 0: 5 | 4 */ int a3 : 23;
17366 /* 3: 3 | 1 */ signed char a4 : 2;
17367 /* XXX 3-bit hole */
17368 /* XXX 4-byte hole */
17369 /* 8 | 8 */ int64_t a5;
17370 /* 16:27 | 4 */ int a6 : 5;
17371 /* 16:56 | 8 */ int64_t a7 : 3;
17372
17373 /* total size (bytes): 24 */
17374 @}
17375 @end smallexample
17376
17377 Note how the offset information is now extended to also include how
17378 many bits are left to be used in each bitfield.
17379 @end table
17380
17381 @kindex ptype
17382 @item ptype[/@var{flags}] [@var{arg}]
17383 @code{ptype} accepts the same arguments as @code{whatis}, but prints a
17384 detailed description of the type, instead of just the name of the type.
17385 @xref{Expressions, ,Expressions}.
17386
17387 Contrary to @code{whatis}, @code{ptype} always unrolls any
17388 @code{typedef}s in its argument declaration, whether the argument is
17389 a variable, expression, or a data type. This means that @code{ptype}
17390 of a variable or an expression will not print literally its type as
17391 present in the source code---use @code{whatis} for that. @code{typedef}s at
17392 the pointer or reference targets are also unrolled. Only @code{typedef}s of
17393 fields, methods and inner @code{class typedef}s of @code{struct}s,
17394 @code{class}es and @code{union}s are not unrolled even with @code{ptype}.
17395
17396 For example, for this variable declaration:
17397
17398 @smallexample
17399 typedef double real_t;
17400 struct complex @{ real_t real; double imag; @};
17401 typedef struct complex complex_t;
17402 complex_t var;
17403 real_t *real_pointer_var;
17404 @end smallexample
17405
17406 @noindent
17407 the two commands give this output:
17408
17409 @smallexample
17410 @group
17411 (@value{GDBP}) whatis var
17412 type = complex_t
17413 (@value{GDBP}) ptype var
17414 type = struct complex @{
17415 real_t real;
17416 double imag;
17417 @}
17418 (@value{GDBP}) whatis complex_t
17419 type = struct complex
17420 (@value{GDBP}) whatis struct complex
17421 type = struct complex
17422 (@value{GDBP}) ptype struct complex
17423 type = struct complex @{
17424 real_t real;
17425 double imag;
17426 @}
17427 (@value{GDBP}) whatis real_pointer_var
17428 type = real_t *
17429 (@value{GDBP}) ptype real_pointer_var
17430 type = double *
17431 @end group
17432 @end smallexample
17433
17434 @noindent
17435 As with @code{whatis}, using @code{ptype} without an argument refers to
17436 the type of @code{$}, the last value in the value history.
17437
17438 @cindex incomplete type
17439 Sometimes, programs use opaque data types or incomplete specifications
17440 of complex data structure. If the debug information included in the
17441 program does not allow @value{GDBN} to display a full declaration of
17442 the data type, it will say @samp{<incomplete type>}. For example,
17443 given these declarations:
17444
17445 @smallexample
17446 struct foo;
17447 struct foo *fooptr;
17448 @end smallexample
17449
17450 @noindent
17451 but no definition for @code{struct foo} itself, @value{GDBN} will say:
17452
17453 @smallexample
17454 (@value{GDBP}) ptype foo
17455 $1 = <incomplete type>
17456 @end smallexample
17457
17458 @noindent
17459 ``Incomplete type'' is C terminology for data types that are not
17460 completely specified.
17461
17462 @cindex unknown type
17463 Othertimes, information about a variable's type is completely absent
17464 from the debug information included in the program. This most often
17465 happens when the program or library where the variable is defined
17466 includes no debug information at all. @value{GDBN} knows the variable
17467 exists from inspecting the linker/loader symbol table (e.g., the ELF
17468 dynamic symbol table), but such symbols do not contain type
17469 information. Inspecting the type of a (global) variable for which
17470 @value{GDBN} has no type information shows:
17471
17472 @smallexample
17473 (@value{GDBP}) ptype var
17474 type = <data variable, no debug info>
17475 @end smallexample
17476
17477 @xref{Variables, no debug info variables}, for how to print the values
17478 of such variables.
17479
17480 @kindex info types
17481 @item info types @var{regexp}
17482 @itemx info types
17483 Print a brief description of all types whose names match the regular
17484 expression @var{regexp} (or all types in your program, if you supply
17485 no argument). Each complete typename is matched as though it were a
17486 complete line; thus, @samp{i type value} gives information on all
17487 types in your program whose names include the string @code{value}, but
17488 @samp{i type ^value$} gives information only on types whose complete
17489 name is @code{value}.
17490
17491 This command differs from @code{ptype} in two ways: first, like
17492 @code{whatis}, it does not print a detailed description; second, it
17493 lists all source files where a type is defined.
17494
17495 @kindex info type-printers
17496 @item info type-printers
17497 Versions of @value{GDBN} that ship with Python scripting enabled may
17498 have ``type printers'' available. When using @command{ptype} or
17499 @command{whatis}, these printers are consulted when the name of a type
17500 is needed. @xref{Type Printing API}, for more information on writing
17501 type printers.
17502
17503 @code{info type-printers} displays all the available type printers.
17504
17505 @kindex enable type-printer
17506 @kindex disable type-printer
17507 @item enable type-printer @var{name}@dots{}
17508 @item disable type-printer @var{name}@dots{}
17509 These commands can be used to enable or disable type printers.
17510
17511 @kindex info scope
17512 @cindex local variables
17513 @item info scope @var{location}
17514 List all the variables local to a particular scope. This command
17515 accepts a @var{location} argument---a function name, a source line, or
17516 an address preceded by a @samp{*}, and prints all the variables local
17517 to the scope defined by that location. (@xref{Specify Location}, for
17518 details about supported forms of @var{location}.) For example:
17519
17520 @smallexample
17521 (@value{GDBP}) @b{info scope command_line_handler}
17522 Scope for command_line_handler:
17523 Symbol rl is an argument at stack/frame offset 8, length 4.
17524 Symbol linebuffer is in static storage at address 0x150a18, length 4.
17525 Symbol linelength is in static storage at address 0x150a1c, length 4.
17526 Symbol p is a local variable in register $esi, length 4.
17527 Symbol p1 is a local variable in register $ebx, length 4.
17528 Symbol nline is a local variable in register $edx, length 4.
17529 Symbol repeat is a local variable at frame offset -8, length 4.
17530 @end smallexample
17531
17532 @noindent
17533 This command is especially useful for determining what data to collect
17534 during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
17535 collect}.
17536
17537 @kindex info source
17538 @item info source
17539 Show information about the current source file---that is, the source file for
17540 the function containing the current point of execution:
17541 @itemize @bullet
17542 @item
17543 the name of the source file, and the directory containing it,
17544 @item
17545 the directory it was compiled in,
17546 @item
17547 its length, in lines,
17548 @item
17549 which programming language it is written in,
17550 @item
17551 if the debug information provides it, the program that compiled the file
17552 (which may include, e.g., the compiler version and command line arguments),
17553 @item
17554 whether the executable includes debugging information for that file, and
17555 if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
17556 @item
17557 whether the debugging information includes information about
17558 preprocessor macros.
17559 @end itemize
17560
17561
17562 @kindex info sources
17563 @item info sources
17564 Print the names of all source files in your program for which there is
17565 debugging information, organized into two lists: files whose symbols
17566 have already been read, and files whose symbols will be read when needed.
17567
17568 @kindex info functions
17569 @item info functions
17570 Print the names and data types of all defined functions.
17571
17572 @item info functions @var{regexp}
17573 Print the names and data types of all defined functions
17574 whose names contain a match for regular expression @var{regexp}.
17575 Thus, @samp{info fun step} finds all functions whose names
17576 include @code{step}; @samp{info fun ^step} finds those whose names
17577 start with @code{step}. If a function name contains characters
17578 that conflict with the regular expression language (e.g.@:
17579 @samp{operator*()}), they may be quoted with a backslash.
17580
17581 @kindex info variables
17582 @item info variables
17583 Print the names and data types of all variables that are defined
17584 outside of functions (i.e.@: excluding local variables).
17585
17586 @item info variables @var{regexp}
17587 Print the names and data types of all variables (except for local
17588 variables) whose names contain a match for regular expression
17589 @var{regexp}.
17590
17591 @kindex info classes
17592 @cindex Objective-C, classes and selectors
17593 @item info classes
17594 @itemx info classes @var{regexp}
17595 Display all Objective-C classes in your program, or
17596 (with the @var{regexp} argument) all those matching a particular regular
17597 expression.
17598
17599 @kindex info selectors
17600 @item info selectors
17601 @itemx info selectors @var{regexp}
17602 Display all Objective-C selectors in your program, or
17603 (with the @var{regexp} argument) all those matching a particular regular
17604 expression.
17605
17606 @ignore
17607 This was never implemented.
17608 @kindex info methods
17609 @item info methods
17610 @itemx info methods @var{regexp}
17611 The @code{info methods} command permits the user to examine all defined
17612 methods within C@t{++} program, or (with the @var{regexp} argument) a
17613 specific set of methods found in the various C@t{++} classes. Many
17614 C@t{++} classes provide a large number of methods. Thus, the output
17615 from the @code{ptype} command can be overwhelming and hard to use. The
17616 @code{info-methods} command filters the methods, printing only those
17617 which match the regular-expression @var{regexp}.
17618 @end ignore
17619
17620 @cindex opaque data types
17621 @kindex set opaque-type-resolution
17622 @item set opaque-type-resolution on
17623 Tell @value{GDBN} to resolve opaque types. An opaque type is a type
17624 declared as a pointer to a @code{struct}, @code{class}, or
17625 @code{union}---for example, @code{struct MyType *}---that is used in one
17626 source file although the full declaration of @code{struct MyType} is in
17627 another source file. The default is on.
17628
17629 A change in the setting of this subcommand will not take effect until
17630 the next time symbols for a file are loaded.
17631
17632 @item set opaque-type-resolution off
17633 Tell @value{GDBN} not to resolve opaque types. In this case, the type
17634 is printed as follows:
17635 @smallexample
17636 @{<no data fields>@}
17637 @end smallexample
17638
17639 @kindex show opaque-type-resolution
17640 @item show opaque-type-resolution
17641 Show whether opaque types are resolved or not.
17642
17643 @kindex set print symbol-loading
17644 @cindex print messages when symbols are loaded
17645 @item set print symbol-loading
17646 @itemx set print symbol-loading full
17647 @itemx set print symbol-loading brief
17648 @itemx set print symbol-loading off
17649 The @code{set print symbol-loading} command allows you to control the
17650 printing of messages when @value{GDBN} loads symbol information.
17651 By default a message is printed for the executable and one for each
17652 shared library, and normally this is what you want. However, when
17653 debugging apps with large numbers of shared libraries these messages
17654 can be annoying.
17655 When set to @code{brief} a message is printed for each executable,
17656 and when @value{GDBN} loads a collection of shared libraries at once
17657 it will only print one message regardless of the number of shared
17658 libraries. When set to @code{off} no messages are printed.
17659
17660 @kindex show print symbol-loading
17661 @item show print symbol-loading
17662 Show whether messages will be printed when a @value{GDBN} command
17663 entered from the keyboard causes symbol information to be loaded.
17664
17665 @kindex maint print symbols
17666 @cindex symbol dump
17667 @kindex maint print psymbols
17668 @cindex partial symbol dump
17669 @kindex maint print msymbols
17670 @cindex minimal symbol dump
17671 @item maint print symbols @r{[}-pc @var{address}@r{]} @r{[}@var{filename}@r{]}
17672 @itemx maint print symbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]}
17673 @itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-pc @var{address}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]}
17674 @itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]}
17675 @itemx maint print msymbols @r{[}-objfile @var{objfile}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]}
17676 Write a dump of debugging symbol data into the file @var{filename} or
17677 the terminal if @var{filename} is unspecified.
17678 If @code{-objfile @var{objfile}} is specified, only dump symbols for
17679 that objfile.
17680 If @code{-pc @var{address}} is specified, only dump symbols for the file
17681 with code at that address. Note that @var{address} may be a symbol like
17682 @code{main}.
17683 If @code{-source @var{source}} is specified, only dump symbols for that
17684 source file.
17685
17686 These commands are used to debug the @value{GDBN} symbol-reading code.
17687 These commands do not modify internal @value{GDBN} state, therefore
17688 @samp{maint print symbols} will only print symbols for already expanded symbol
17689 tables.
17690 You can use the command @code{info sources} to find out which files these are.
17691 If you use @samp{maint print psymbols} instead, the dump shows information
17692 about symbols that @value{GDBN} only knows partially---that is, symbols
17693 defined in files that @value{GDBN} has skimmed, but not yet read completely.
17694 Finally, @samp{maint print msymbols} just dumps ``minimal symbols'', e.g.,
17695 ``ELF symbols''.
17696
17697 @xref{Files, ,Commands to Specify Files}, for a discussion of how
17698 @value{GDBN} reads symbols (in the description of @code{symbol-file}).
17699
17700 @kindex maint info symtabs
17701 @kindex maint info psymtabs
17702 @cindex listing @value{GDBN}'s internal symbol tables
17703 @cindex symbol tables, listing @value{GDBN}'s internal
17704 @cindex full symbol tables, listing @value{GDBN}'s internal
17705 @cindex partial symbol tables, listing @value{GDBN}'s internal
17706 @item maint info symtabs @r{[} @var{regexp} @r{]}
17707 @itemx maint info psymtabs @r{[} @var{regexp} @r{]}
17708
17709 List the @code{struct symtab} or @code{struct partial_symtab}
17710 structures whose names match @var{regexp}. If @var{regexp} is not
17711 given, list them all. The output includes expressions which you can
17712 copy into a @value{GDBN} debugging this one to examine a particular
17713 structure in more detail. For example:
17714
17715 @smallexample
17716 (@value{GDBP}) maint info psymtabs dwarf2read
17717 @{ objfile /home/gnu/build/gdb/gdb
17718 ((struct objfile *) 0x82e69d0)
17719 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
17720 ((struct partial_symtab *) 0x8474b10)
17721 readin no
17722 fullname (null)
17723 text addresses 0x814d3c8 -- 0x8158074
17724 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
17725 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
17726 dependencies (none)
17727 @}
17728 @}
17729 (@value{GDBP}) maint info symtabs
17730 (@value{GDBP})
17731 @end smallexample
17732 @noindent
17733 We see that there is one partial symbol table whose filename contains
17734 the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
17735 and we see that @value{GDBN} has not read in any symtabs yet at all.
17736 If we set a breakpoint on a function, that will cause @value{GDBN} to
17737 read the symtab for the compilation unit containing that function:
17738
17739 @smallexample
17740 (@value{GDBP}) break dwarf2_psymtab_to_symtab
17741 Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
17742 line 1574.
17743 (@value{GDBP}) maint info symtabs
17744 @{ objfile /home/gnu/build/gdb/gdb
17745 ((struct objfile *) 0x82e69d0)
17746 @{ symtab /home/gnu/src/gdb/dwarf2read.c
17747 ((struct symtab *) 0x86c1f38)
17748 dirname (null)
17749 fullname (null)
17750 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
17751 linetable ((struct linetable *) 0x8370fa0)
17752 debugformat DWARF 2
17753 @}
17754 @}
17755 (@value{GDBP})
17756 @end smallexample
17757
17758 @kindex maint info line-table
17759 @cindex listing @value{GDBN}'s internal line tables
17760 @cindex line tables, listing @value{GDBN}'s internal
17761 @item maint info line-table @r{[} @var{regexp} @r{]}
17762
17763 List the @code{struct linetable} from all @code{struct symtab}
17764 instances whose name matches @var{regexp}. If @var{regexp} is not
17765 given, list the @code{struct linetable} from all @code{struct symtab}.
17766
17767 @kindex maint set symbol-cache-size
17768 @cindex symbol cache size
17769 @item maint set symbol-cache-size @var{size}
17770 Set the size of the symbol cache to @var{size}.
17771 The default size is intended to be good enough for debugging
17772 most applications. This option exists to allow for experimenting
17773 with different sizes.
17774
17775 @kindex maint show symbol-cache-size
17776 @item maint show symbol-cache-size
17777 Show the size of the symbol cache.
17778
17779 @kindex maint print symbol-cache
17780 @cindex symbol cache, printing its contents
17781 @item maint print symbol-cache
17782 Print the contents of the symbol cache.
17783 This is useful when debugging symbol cache issues.
17784
17785 @kindex maint print symbol-cache-statistics
17786 @cindex symbol cache, printing usage statistics
17787 @item maint print symbol-cache-statistics
17788 Print symbol cache usage statistics.
17789 This helps determine how well the cache is being utilized.
17790
17791 @kindex maint flush-symbol-cache
17792 @cindex symbol cache, flushing
17793 @item maint flush-symbol-cache
17794 Flush the contents of the symbol cache, all entries are removed.
17795 This command is useful when debugging the symbol cache.
17796 It is also useful when collecting performance data.
17797
17798 @end table
17799
17800 @node Altering
17801 @chapter Altering Execution
17802
17803 Once you think you have found an error in your program, you might want to
17804 find out for certain whether correcting the apparent error would lead to
17805 correct results in the rest of the run. You can find the answer by
17806 experiment, using the @value{GDBN} features for altering execution of the
17807 program.
17808
17809 For example, you can store new values into variables or memory
17810 locations, give your program a signal, restart it at a different
17811 address, or even return prematurely from a function.
17812
17813 @menu
17814 * Assignment:: Assignment to variables
17815 * Jumping:: Continuing at a different address
17816 * Signaling:: Giving your program a signal
17817 * Returning:: Returning from a function
17818 * Calling:: Calling your program's functions
17819 * Patching:: Patching your program
17820 * Compiling and Injecting Code:: Compiling and injecting code in @value{GDBN}
17821 @end menu
17822
17823 @node Assignment
17824 @section Assignment to Variables
17825
17826 @cindex assignment
17827 @cindex setting variables
17828 To alter the value of a variable, evaluate an assignment expression.
17829 @xref{Expressions, ,Expressions}. For example,
17830
17831 @smallexample
17832 print x=4
17833 @end smallexample
17834
17835 @noindent
17836 stores the value 4 into the variable @code{x}, and then prints the
17837 value of the assignment expression (which is 4).
17838 @xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
17839 information on operators in supported languages.
17840
17841 @kindex set variable
17842 @cindex variables, setting
17843 If you are not interested in seeing the value of the assignment, use the
17844 @code{set} command instead of the @code{print} command. @code{set} is
17845 really the same as @code{print} except that the expression's value is
17846 not printed and is not put in the value history (@pxref{Value History,
17847 ,Value History}). The expression is evaluated only for its effects.
17848
17849 If the beginning of the argument string of the @code{set} command
17850 appears identical to a @code{set} subcommand, use the @code{set
17851 variable} command instead of just @code{set}. This command is identical
17852 to @code{set} except for its lack of subcommands. For example, if your
17853 program has a variable @code{width}, you get an error if you try to set
17854 a new value with just @samp{set width=13}, because @value{GDBN} has the
17855 command @code{set width}:
17856
17857 @smallexample
17858 (@value{GDBP}) whatis width
17859 type = double
17860 (@value{GDBP}) p width
17861 $4 = 13
17862 (@value{GDBP}) set width=47
17863 Invalid syntax in expression.
17864 @end smallexample
17865
17866 @noindent
17867 The invalid expression, of course, is @samp{=47}. In
17868 order to actually set the program's variable @code{width}, use
17869
17870 @smallexample
17871 (@value{GDBP}) set var width=47
17872 @end smallexample
17873
17874 Because the @code{set} command has many subcommands that can conflict
17875 with the names of program variables, it is a good idea to use the
17876 @code{set variable} command instead of just @code{set}. For example, if
17877 your program has a variable @code{g}, you run into problems if you try
17878 to set a new value with just @samp{set g=4}, because @value{GDBN} has
17879 the command @code{set gnutarget}, abbreviated @code{set g}:
17880
17881 @smallexample
17882 @group
17883 (@value{GDBP}) whatis g
17884 type = double
17885 (@value{GDBP}) p g
17886 $1 = 1
17887 (@value{GDBP}) set g=4
17888 (@value{GDBP}) p g
17889 $2 = 1
17890 (@value{GDBP}) r
17891 The program being debugged has been started already.
17892 Start it from the beginning? (y or n) y
17893 Starting program: /home/smith/cc_progs/a.out
17894 "/home/smith/cc_progs/a.out": can't open to read symbols:
17895 Invalid bfd target.
17896 (@value{GDBP}) show g
17897 The current BFD target is "=4".
17898 @end group
17899 @end smallexample
17900
17901 @noindent
17902 The program variable @code{g} did not change, and you silently set the
17903 @code{gnutarget} to an invalid value. In order to set the variable
17904 @code{g}, use
17905
17906 @smallexample
17907 (@value{GDBP}) set var g=4
17908 @end smallexample
17909
17910 @value{GDBN} allows more implicit conversions in assignments than C; you can
17911 freely store an integer value into a pointer variable or vice versa,
17912 and you can convert any structure to any other structure that is the
17913 same length or shorter.
17914 @comment FIXME: how do structs align/pad in these conversions?
17915 @comment /doc@cygnus.com 18dec1990
17916
17917 To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
17918 construct to generate a value of specified type at a specified address
17919 (@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
17920 to memory location @code{0x83040} as an integer (which implies a certain size
17921 and representation in memory), and
17922
17923 @smallexample
17924 set @{int@}0x83040 = 4
17925 @end smallexample
17926
17927 @noindent
17928 stores the value 4 into that memory location.
17929
17930 @node Jumping
17931 @section Continuing at a Different Address
17932
17933 Ordinarily, when you continue your program, you do so at the place where
17934 it stopped, with the @code{continue} command. You can instead continue at
17935 an address of your own choosing, with the following commands:
17936
17937 @table @code
17938 @kindex jump
17939 @kindex j @r{(@code{jump})}
17940 @item jump @var{location}
17941 @itemx j @var{location}
17942 Resume execution at @var{location}. Execution stops again immediately
17943 if there is a breakpoint there. @xref{Specify Location}, for a description
17944 of the different forms of @var{location}. It is common
17945 practice to use the @code{tbreak} command in conjunction with
17946 @code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
17947
17948 The @code{jump} command does not change the current stack frame, or
17949 the stack pointer, or the contents of any memory location or any
17950 register other than the program counter. If @var{location} is in
17951 a different function from the one currently executing, the results may
17952 be bizarre if the two functions expect different patterns of arguments or
17953 of local variables. For this reason, the @code{jump} command requests
17954 confirmation if the specified line is not in the function currently
17955 executing. However, even bizarre results are predictable if you are
17956 well acquainted with the machine-language code of your program.
17957 @end table
17958
17959 On many systems, you can get much the same effect as the @code{jump}
17960 command by storing a new value into the register @code{$pc}. The
17961 difference is that this does not start your program running; it only
17962 changes the address of where it @emph{will} run when you continue. For
17963 example,
17964
17965 @smallexample
17966 set $pc = 0x485
17967 @end smallexample
17968
17969 @noindent
17970 makes the next @code{continue} command or stepping command execute at
17971 address @code{0x485}, rather than at the address where your program stopped.
17972 @xref{Continuing and Stepping, ,Continuing and Stepping}.
17973
17974 The most common occasion to use the @code{jump} command is to back
17975 up---perhaps with more breakpoints set---over a portion of a program
17976 that has already executed, in order to examine its execution in more
17977 detail.
17978
17979 @c @group
17980 @node Signaling
17981 @section Giving your Program a Signal
17982 @cindex deliver a signal to a program
17983
17984 @table @code
17985 @kindex signal
17986 @item signal @var{signal}
17987 Resume execution where your program is stopped, but immediately give it the
17988 signal @var{signal}. The @var{signal} can be the name or the number of a
17989 signal. For example, on many systems @code{signal 2} and @code{signal
17990 SIGINT} are both ways of sending an interrupt signal.
17991
17992 Alternatively, if @var{signal} is zero, continue execution without
17993 giving a signal. This is useful when your program stopped on account of
17994 a signal and would ordinarily see the signal when resumed with the
17995 @code{continue} command; @samp{signal 0} causes it to resume without a
17996 signal.
17997
17998 @emph{Note:} When resuming a multi-threaded program, @var{signal} is
17999 delivered to the currently selected thread, not the thread that last
18000 reported a stop. This includes the situation where a thread was
18001 stopped due to a signal. So if you want to continue execution
18002 suppressing the signal that stopped a thread, you should select that
18003 same thread before issuing the @samp{signal 0} command. If you issue
18004 the @samp{signal 0} command with another thread as the selected one,
18005 @value{GDBN} detects that and asks for confirmation.
18006
18007 Invoking the @code{signal} command is not the same as invoking the
18008 @code{kill} utility from the shell. Sending a signal with @code{kill}
18009 causes @value{GDBN} to decide what to do with the signal depending on
18010 the signal handling tables (@pxref{Signals}). The @code{signal} command
18011 passes the signal directly to your program.
18012
18013 @code{signal} does not repeat when you press @key{RET} a second time
18014 after executing the command.
18015
18016 @kindex queue-signal
18017 @item queue-signal @var{signal}
18018 Queue @var{signal} to be delivered immediately to the current thread
18019 when execution of the thread resumes. The @var{signal} can be the name or
18020 the number of a signal. For example, on many systems @code{signal 2} and
18021 @code{signal SIGINT} are both ways of sending an interrupt signal.
18022 The handling of the signal must be set to pass the signal to the program,
18023 otherwise @value{GDBN} will report an error.
18024 You can control the handling of signals from @value{GDBN} with the
18025 @code{handle} command (@pxref{Signals}).
18026
18027 Alternatively, if @var{signal} is zero, any currently queued signal
18028 for the current thread is discarded and when execution resumes no signal
18029 will be delivered. This is useful when your program stopped on account
18030 of a signal and would ordinarily see the signal when resumed with the
18031 @code{continue} command.
18032
18033 This command differs from the @code{signal} command in that the signal
18034 is just queued, execution is not resumed. And @code{queue-signal} cannot
18035 be used to pass a signal whose handling state has been set to @code{nopass}
18036 (@pxref{Signals}).
18037 @end table
18038 @c @end group
18039
18040 @xref{stepping into signal handlers}, for information on how stepping
18041 commands behave when the thread has a signal queued.
18042
18043 @node Returning
18044 @section Returning from a Function
18045
18046 @table @code
18047 @cindex returning from a function
18048 @kindex return
18049 @item return
18050 @itemx return @var{expression}
18051 You can cancel execution of a function call with the @code{return}
18052 command. If you give an
18053 @var{expression} argument, its value is used as the function's return
18054 value.
18055 @end table
18056
18057 When you use @code{return}, @value{GDBN} discards the selected stack frame
18058 (and all frames within it). You can think of this as making the
18059 discarded frame return prematurely. If you wish to specify a value to
18060 be returned, give that value as the argument to @code{return}.
18061
18062 This pops the selected stack frame (@pxref{Selection, ,Selecting a
18063 Frame}), and any other frames inside of it, leaving its caller as the
18064 innermost remaining frame. That frame becomes selected. The
18065 specified value is stored in the registers used for returning values
18066 of functions.
18067
18068 The @code{return} command does not resume execution; it leaves the
18069 program stopped in the state that would exist if the function had just
18070 returned. In contrast, the @code{finish} command (@pxref{Continuing
18071 and Stepping, ,Continuing and Stepping}) resumes execution until the
18072 selected stack frame returns naturally.
18073
18074 @value{GDBN} needs to know how the @var{expression} argument should be set for
18075 the inferior. The concrete registers assignment depends on the OS ABI and the
18076 type being returned by the selected stack frame. For example it is common for
18077 OS ABI to return floating point values in FPU registers while integer values in
18078 CPU registers. Still some ABIs return even floating point values in CPU
18079 registers. Larger integer widths (such as @code{long long int}) also have
18080 specific placement rules. @value{GDBN} already knows the OS ABI from its
18081 current target so it needs to find out also the type being returned to make the
18082 assignment into the right register(s).
18083
18084 Normally, the selected stack frame has debug info. @value{GDBN} will always
18085 use the debug info instead of the implicit type of @var{expression} when the
18086 debug info is available. For example, if you type @kbd{return -1}, and the
18087 function in the current stack frame is declared to return a @code{long long
18088 int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
18089 into a @code{long long int}:
18090
18091 @smallexample
18092 Breakpoint 1, func () at gdb.base/return-nodebug.c:29
18093 29 return 31;
18094 (@value{GDBP}) return -1
18095 Make func return now? (y or n) y
18096 #0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
18097 43 printf ("result=%lld\n", func ());
18098 (@value{GDBP})
18099 @end smallexample
18100
18101 However, if the selected stack frame does not have a debug info, e.g., if the
18102 function was compiled without debug info, @value{GDBN} has to find out the type
18103 to return from user. Specifying a different type by mistake may set the value
18104 in different inferior registers than the caller code expects. For example,
18105 typing @kbd{return -1} with its implicit type @code{int} would set only a part
18106 of a @code{long long int} result for a debug info less function (on 32-bit
18107 architectures). Therefore the user is required to specify the return type by
18108 an appropriate cast explicitly:
18109
18110 @smallexample
18111 Breakpoint 2, 0x0040050b in func ()
18112 (@value{GDBP}) return -1
18113 Return value type not available for selected stack frame.
18114 Please use an explicit cast of the value to return.
18115 (@value{GDBP}) return (long long int) -1
18116 Make selected stack frame return now? (y or n) y
18117 #0 0x00400526 in main ()
18118 (@value{GDBP})
18119 @end smallexample
18120
18121 @node Calling
18122 @section Calling Program Functions
18123
18124 @table @code
18125 @cindex calling functions
18126 @cindex inferior functions, calling
18127 @item print @var{expr}
18128 Evaluate the expression @var{expr} and display the resulting value.
18129 The expression may include calls to functions in the program being
18130 debugged.
18131
18132 @kindex call
18133 @item call @var{expr}
18134 Evaluate the expression @var{expr} without displaying @code{void}
18135 returned values.
18136
18137 You can use this variant of the @code{print} command if you want to
18138 execute a function from your program that does not return anything
18139 (a.k.a.@: @dfn{a void function}), but without cluttering the output
18140 with @code{void} returned values that @value{GDBN} will otherwise
18141 print. If the result is not void, it is printed and saved in the
18142 value history.
18143 @end table
18144
18145 It is possible for the function you call via the @code{print} or
18146 @code{call} command to generate a signal (e.g., if there's a bug in
18147 the function, or if you passed it incorrect arguments). What happens
18148 in that case is controlled by the @code{set unwindonsignal} command.
18149
18150 Similarly, with a C@t{++} program it is possible for the function you
18151 call via the @code{print} or @code{call} command to generate an
18152 exception that is not handled due to the constraints of the dummy
18153 frame. In this case, any exception that is raised in the frame, but has
18154 an out-of-frame exception handler will not be found. GDB builds a
18155 dummy-frame for the inferior function call, and the unwinder cannot
18156 seek for exception handlers outside of this dummy-frame. What happens
18157 in that case is controlled by the
18158 @code{set unwind-on-terminating-exception} command.
18159
18160 @table @code
18161 @item set unwindonsignal
18162 @kindex set unwindonsignal
18163 @cindex unwind stack in called functions
18164 @cindex call dummy stack unwinding
18165 Set unwinding of the stack if a signal is received while in a function
18166 that @value{GDBN} called in the program being debugged. If set to on,
18167 @value{GDBN} unwinds the stack it created for the call and restores
18168 the context to what it was before the call. If set to off (the
18169 default), @value{GDBN} stops in the frame where the signal was
18170 received.
18171
18172 @item show unwindonsignal
18173 @kindex show unwindonsignal
18174 Show the current setting of stack unwinding in the functions called by
18175 @value{GDBN}.
18176
18177 @item set unwind-on-terminating-exception
18178 @kindex set unwind-on-terminating-exception
18179 @cindex unwind stack in called functions with unhandled exceptions
18180 @cindex call dummy stack unwinding on unhandled exception.
18181 Set unwinding of the stack if a C@t{++} exception is raised, but left
18182 unhandled while in a function that @value{GDBN} called in the program being
18183 debugged. If set to on (the default), @value{GDBN} unwinds the stack
18184 it created for the call and restores the context to what it was before
18185 the call. If set to off, @value{GDBN} the exception is delivered to
18186 the default C@t{++} exception handler and the inferior terminated.
18187
18188 @item show unwind-on-terminating-exception
18189 @kindex show unwind-on-terminating-exception
18190 Show the current setting of stack unwinding in the functions called by
18191 @value{GDBN}.
18192
18193 @end table
18194
18195 @subsection Calling functions with no debug info
18196
18197 @cindex no debug info functions
18198 Sometimes, a function you wish to call is missing debug information.
18199 In such case, @value{GDBN} does not know the type of the function,
18200 including the types of the function's parameters. To avoid calling
18201 the inferior function incorrectly, which could result in the called
18202 function functioning erroneously and even crash, @value{GDBN} refuses
18203 to call the function unless you tell it the type of the function.
18204
18205 For prototyped (i.e.@: ANSI/ISO style) functions, there are two ways
18206 to do that. The simplest is to cast the call to the function's
18207 declared return type. For example:
18208
18209 @smallexample
18210 (@value{GDBP}) p getenv ("PATH")
18211 'getenv' has unknown return type; cast the call to its declared return type
18212 (@value{GDBP}) p (char *) getenv ("PATH")
18213 $1 = 0x7fffffffe7ba "/usr/local/bin:/"...
18214 @end smallexample
18215
18216 Casting the return type of a no-debug function is equivalent to
18217 casting the function to a pointer to a prototyped function that has a
18218 prototype that matches the types of the passed-in arguments, and
18219 calling that. I.e., the call above is equivalent to:
18220
18221 @smallexample
18222 (@value{GDBP}) p ((char * (*) (const char *)) getenv) ("PATH")
18223 @end smallexample
18224
18225 @noindent
18226 and given this prototyped C or C++ function with float parameters:
18227
18228 @smallexample
18229 float multiply (float v1, float v2) @{ return v1 * v2; @}
18230 @end smallexample
18231
18232 @noindent
18233 these calls are equivalent:
18234
18235 @smallexample
18236 (@value{GDBP}) p (float) multiply (2.0f, 3.0f)
18237 (@value{GDBP}) p ((float (*) (float, float)) multiply) (2.0f, 3.0f)
18238 @end smallexample
18239
18240 If the function you wish to call is declared as unprototyped (i.e.@:
18241 old K&R style), you must use the cast-to-function-pointer syntax, so
18242 that @value{GDBN} knows that it needs to apply default argument
18243 promotions (promote float arguments to double). @xref{ABI, float
18244 promotion}. For example, given this unprototyped C function with
18245 float parameters, and no debug info:
18246
18247 @smallexample
18248 float
18249 multiply_noproto (v1, v2)
18250 float v1, v2;
18251 @{
18252 return v1 * v2;
18253 @}
18254 @end smallexample
18255
18256 @noindent
18257 you call it like this:
18258
18259 @smallexample
18260 (@value{GDBP}) p ((float (*) ()) multiply_noproto) (2.0f, 3.0f)
18261 @end smallexample
18262
18263 @node Patching
18264 @section Patching Programs
18265
18266 @cindex patching binaries
18267 @cindex writing into executables
18268 @cindex writing into corefiles
18269
18270 By default, @value{GDBN} opens the file containing your program's
18271 executable code (or the corefile) read-only. This prevents accidental
18272 alterations to machine code; but it also prevents you from intentionally
18273 patching your program's binary.
18274
18275 If you'd like to be able to patch the binary, you can specify that
18276 explicitly with the @code{set write} command. For example, you might
18277 want to turn on internal debugging flags, or even to make emergency
18278 repairs.
18279
18280 @table @code
18281 @kindex set write
18282 @item set write on
18283 @itemx set write off
18284 If you specify @samp{set write on}, @value{GDBN} opens executable and
18285 core files for both reading and writing; if you specify @kbd{set write
18286 off} (the default), @value{GDBN} opens them read-only.
18287
18288 If you have already loaded a file, you must load it again (using the
18289 @code{exec-file} or @code{core-file} command) after changing @code{set
18290 write}, for your new setting to take effect.
18291
18292 @item show write
18293 @kindex show write
18294 Display whether executable files and core files are opened for writing
18295 as well as reading.
18296 @end table
18297
18298 @node Compiling and Injecting Code
18299 @section Compiling and injecting code in @value{GDBN}
18300 @cindex injecting code
18301 @cindex writing into executables
18302 @cindex compiling code
18303
18304 @value{GDBN} supports on-demand compilation and code injection into
18305 programs running under @value{GDBN}. GCC 5.0 or higher built with
18306 @file{libcc1.so} must be installed for this functionality to be enabled.
18307 This functionality is implemented with the following commands.
18308
18309 @table @code
18310 @kindex compile code
18311 @item compile code @var{source-code}
18312 @itemx compile code -raw @var{--} @var{source-code}
18313 Compile @var{source-code} with the compiler language found as the current
18314 language in @value{GDBN} (@pxref{Languages}). If compilation and
18315 injection is not supported with the current language specified in
18316 @value{GDBN}, or the compiler does not support this feature, an error
18317 message will be printed. If @var{source-code} compiles and links
18318 successfully, @value{GDBN} will load the object-code emitted,
18319 and execute it within the context of the currently selected inferior.
18320 It is important to note that the compiled code is executed immediately.
18321 After execution, the compiled code is removed from @value{GDBN} and any
18322 new types or variables you have defined will be deleted.
18323
18324 The command allows you to specify @var{source-code} in two ways.
18325 The simplest method is to provide a single line of code to the command.
18326 E.g.:
18327
18328 @smallexample
18329 compile code printf ("hello world\n");
18330 @end smallexample
18331
18332 If you specify options on the command line as well as source code, they
18333 may conflict. The @samp{--} delimiter can be used to separate options
18334 from actual source code. E.g.:
18335
18336 @smallexample
18337 compile code -r -- printf ("hello world\n");
18338 @end smallexample
18339
18340 Alternatively you can enter source code as multiple lines of text. To
18341 enter this mode, invoke the @samp{compile code} command without any text
18342 following the command. This will start the multiple-line editor and
18343 allow you to type as many lines of source code as required. When you
18344 have completed typing, enter @samp{end} on its own line to exit the
18345 editor.
18346
18347 @smallexample
18348 compile code
18349 >printf ("hello\n");
18350 >printf ("world\n");
18351 >end
18352 @end smallexample
18353
18354 Specifying @samp{-raw}, prohibits @value{GDBN} from wrapping the
18355 provided @var{source-code} in a callable scope. In this case, you must
18356 specify the entry point of the code by defining a function named
18357 @code{_gdb_expr_}. The @samp{-raw} code cannot access variables of the
18358 inferior. Using @samp{-raw} option may be needed for example when
18359 @var{source-code} requires @samp{#include} lines which may conflict with
18360 inferior symbols otherwise.
18361
18362 @kindex compile file
18363 @item compile file @var{filename}
18364 @itemx compile file -raw @var{filename}
18365 Like @code{compile code}, but take the source code from @var{filename}.
18366
18367 @smallexample
18368 compile file /home/user/example.c
18369 @end smallexample
18370 @end table
18371
18372 @table @code
18373 @item compile print @var{expr}
18374 @itemx compile print /@var{f} @var{expr}
18375 Compile and execute @var{expr} with the compiler language found as the
18376 current language in @value{GDBN} (@pxref{Languages}). By default the
18377 value of @var{expr} is printed in a format appropriate to its data type;
18378 you can choose a different format by specifying @samp{/@var{f}}, where
18379 @var{f} is a letter specifying the format; see @ref{Output Formats,,Output
18380 Formats}.
18381
18382 @item compile print
18383 @itemx compile print /@var{f}
18384 @cindex reprint the last value
18385 Alternatively you can enter the expression (source code producing it) as
18386 multiple lines of text. To enter this mode, invoke the @samp{compile print}
18387 command without any text following the command. This will start the
18388 multiple-line editor.
18389 @end table
18390
18391 @noindent
18392 The process of compiling and injecting the code can be inspected using:
18393
18394 @table @code
18395 @anchor{set debug compile}
18396 @item set debug compile
18397 @cindex compile command debugging info
18398 Turns on or off display of @value{GDBN} process of compiling and
18399 injecting the code. The default is off.
18400
18401 @item show debug compile
18402 Displays the current state of displaying @value{GDBN} process of
18403 compiling and injecting the code.
18404 @end table
18405
18406 @subsection Compilation options for the @code{compile} command
18407
18408 @value{GDBN} needs to specify the right compilation options for the code
18409 to be injected, in part to make its ABI compatible with the inferior
18410 and in part to make the injected code compatible with @value{GDBN}'s
18411 injecting process.
18412
18413 @noindent
18414 The options used, in increasing precedence:
18415
18416 @table @asis
18417 @item target architecture and OS options (@code{gdbarch})
18418 These options depend on target processor type and target operating
18419 system, usually they specify at least 32-bit (@code{-m32}) or 64-bit
18420 (@code{-m64}) compilation option.
18421
18422 @item compilation options recorded in the target
18423 @value{NGCC} (since version 4.7) stores the options used for compilation
18424 into @code{DW_AT_producer} part of DWARF debugging information according
18425 to the @value{NGCC} option @code{-grecord-gcc-switches}. One has to
18426 explicitly specify @code{-g} during inferior compilation otherwise
18427 @value{NGCC} produces no DWARF. This feature is only relevant for
18428 platforms where @code{-g} produces DWARF by default, otherwise one may
18429 try to enforce DWARF by using @code{-gdwarf-4}.
18430
18431 @item compilation options set by @code{set compile-args}
18432 @end table
18433
18434 @noindent
18435 You can override compilation options using the following command:
18436
18437 @table @code
18438 @item set compile-args
18439 @cindex compile command options override
18440 Set compilation options used for compiling and injecting code with the
18441 @code{compile} commands. These options override any conflicting ones
18442 from the target architecture and/or options stored during inferior
18443 compilation.
18444
18445 @item show compile-args
18446 Displays the current state of compilation options override.
18447 This does not show all the options actually used during compilation,
18448 use @ref{set debug compile} for that.
18449 @end table
18450
18451 @subsection Caveats when using the @code{compile} command
18452
18453 There are a few caveats to keep in mind when using the @code{compile}
18454 command. As the caveats are different per language, the table below
18455 highlights specific issues on a per language basis.
18456
18457 @table @asis
18458 @item C code examples and caveats
18459 When the language in @value{GDBN} is set to @samp{C}, the compiler will
18460 attempt to compile the source code with a @samp{C} compiler. The source
18461 code provided to the @code{compile} command will have much the same
18462 access to variables and types as it normally would if it were part of
18463 the program currently being debugged in @value{GDBN}.
18464
18465 Below is a sample program that forms the basis of the examples that
18466 follow. This program has been compiled and loaded into @value{GDBN},
18467 much like any other normal debugging session.
18468
18469 @smallexample
18470 void function1 (void)
18471 @{
18472 int i = 42;
18473 printf ("function 1\n");
18474 @}
18475
18476 void function2 (void)
18477 @{
18478 int j = 12;
18479 function1 ();
18480 @}
18481
18482 int main(void)
18483 @{
18484 int k = 6;
18485 int *p;
18486 function2 ();
18487 return 0;
18488 @}
18489 @end smallexample
18490
18491 For the purposes of the examples in this section, the program above has
18492 been compiled, loaded into @value{GDBN}, stopped at the function
18493 @code{main}, and @value{GDBN} is awaiting input from the user.
18494
18495 To access variables and types for any program in @value{GDBN}, the
18496 program must be compiled and packaged with debug information. The
18497 @code{compile} command is not an exception to this rule. Without debug
18498 information, you can still use the @code{compile} command, but you will
18499 be very limited in what variables and types you can access.
18500
18501 So with that in mind, the example above has been compiled with debug
18502 information enabled. The @code{compile} command will have access to
18503 all variables and types (except those that may have been optimized
18504 out). Currently, as @value{GDBN} has stopped the program in the
18505 @code{main} function, the @code{compile} command would have access to
18506 the variable @code{k}. You could invoke the @code{compile} command
18507 and type some source code to set the value of @code{k}. You can also
18508 read it, or do anything with that variable you would normally do in
18509 @code{C}. Be aware that changes to inferior variables in the
18510 @code{compile} command are persistent. In the following example:
18511
18512 @smallexample
18513 compile code k = 3;
18514 @end smallexample
18515
18516 @noindent
18517 the variable @code{k} is now 3. It will retain that value until
18518 something else in the example program changes it, or another
18519 @code{compile} command changes it.
18520
18521 Normal scope and access rules apply to source code compiled and
18522 injected by the @code{compile} command. In the example, the variables
18523 @code{j} and @code{k} are not accessible yet, because the program is
18524 currently stopped in the @code{main} function, where these variables
18525 are not in scope. Therefore, the following command
18526
18527 @smallexample
18528 compile code j = 3;
18529 @end smallexample
18530
18531 @noindent
18532 will result in a compilation error message.
18533
18534 Once the program is continued, execution will bring these variables in
18535 scope, and they will become accessible; then the code you specify via
18536 the @code{compile} command will be able to access them.
18537
18538 You can create variables and types with the @code{compile} command as
18539 part of your source code. Variables and types that are created as part
18540 of the @code{compile} command are not visible to the rest of the program for
18541 the duration of its run. This example is valid:
18542
18543 @smallexample
18544 compile code int ff = 5; printf ("ff is %d\n", ff);
18545 @end smallexample
18546
18547 However, if you were to type the following into @value{GDBN} after that
18548 command has completed:
18549
18550 @smallexample
18551 compile code printf ("ff is %d\n'', ff);
18552 @end smallexample
18553
18554 @noindent
18555 a compiler error would be raised as the variable @code{ff} no longer
18556 exists. Object code generated and injected by the @code{compile}
18557 command is removed when its execution ends. Caution is advised
18558 when assigning to program variables values of variables created by the
18559 code submitted to the @code{compile} command. This example is valid:
18560
18561 @smallexample
18562 compile code int ff = 5; k = ff;
18563 @end smallexample
18564
18565 The value of the variable @code{ff} is assigned to @code{k}. The variable
18566 @code{k} does not require the existence of @code{ff} to maintain the value
18567 it has been assigned. However, pointers require particular care in
18568 assignment. If the source code compiled with the @code{compile} command
18569 changed the address of a pointer in the example program, perhaps to a
18570 variable created in the @code{compile} command, that pointer would point
18571 to an invalid location when the command exits. The following example
18572 would likely cause issues with your debugged program:
18573
18574 @smallexample
18575 compile code int ff = 5; p = &ff;
18576 @end smallexample
18577
18578 In this example, @code{p} would point to @code{ff} when the
18579 @code{compile} command is executing the source code provided to it.
18580 However, as variables in the (example) program persist with their
18581 assigned values, the variable @code{p} would point to an invalid
18582 location when the command exists. A general rule should be followed
18583 in that you should either assign @code{NULL} to any assigned pointers,
18584 or restore a valid location to the pointer before the command exits.
18585
18586 Similar caution must be exercised with any structs, unions, and typedefs
18587 defined in @code{compile} command. Types defined in the @code{compile}
18588 command will no longer be available in the next @code{compile} command.
18589 Therefore, if you cast a variable to a type defined in the
18590 @code{compile} command, care must be taken to ensure that any future
18591 need to resolve the type can be achieved.
18592
18593 @smallexample
18594 (gdb) compile code static struct a @{ int a; @} v = @{ 42 @}; argv = &v;
18595 (gdb) compile code printf ("%d\n", ((struct a *) argv)->a);
18596 gdb command line:1:36: error: dereferencing pointer to incomplete type ‘struct a’
18597 Compilation failed.
18598 (gdb) compile code struct a @{ int a; @}; printf ("%d\n", ((struct a *) argv)->a);
18599 42
18600 @end smallexample
18601
18602 Variables that have been optimized away by the compiler are not
18603 accessible to the code submitted to the @code{compile} command.
18604 Access to those variables will generate a compiler error which @value{GDBN}
18605 will print to the console.
18606 @end table
18607
18608 @subsection Compiler search for the @code{compile} command
18609
18610 @value{GDBN} needs to find @value{NGCC} for the inferior being debugged
18611 which may not be obvious for remote targets of different architecture
18612 than where @value{GDBN} is running. Environment variable @code{PATH} on
18613 @value{GDBN} host is searched for @value{NGCC} binary matching the
18614 target architecture and operating system. This search can be overriden
18615 by @code{set compile-gcc} @value{GDBN} command below. @code{PATH} is
18616 taken from shell that executed @value{GDBN}, it is not the value set by
18617 @value{GDBN} command @code{set environment}). @xref{Environment}.
18618
18619
18620 Specifically @code{PATH} is searched for binaries matching regular expression
18621 @code{@var{arch}(-[^-]*)?-@var{os}-gcc} according to the inferior target being
18622 debugged. @var{arch} is processor name --- multiarch is supported, so for
18623 example both @code{i386} and @code{x86_64} targets look for pattern
18624 @code{(x86_64|i.86)} and both @code{s390} and @code{s390x} targets look
18625 for pattern @code{s390x?}. @var{os} is currently supported only for
18626 pattern @code{linux(-gnu)?}.
18627
18628 On Posix hosts the compiler driver @value{GDBN} needs to find also
18629 shared library @file{libcc1.so} from the compiler. It is searched in
18630 default shared library search path (overridable with usual environment
18631 variable @code{LD_LIBRARY_PATH}), unrelated to @code{PATH} or @code{set
18632 compile-gcc} settings. Contrary to it @file{libcc1plugin.so} is found
18633 according to the installation of the found compiler --- as possibly
18634 specified by the @code{set compile-gcc} command.
18635
18636 @table @code
18637 @item set compile-gcc
18638 @cindex compile command driver filename override
18639 Set compilation command used for compiling and injecting code with the
18640 @code{compile} commands. If this option is not set (it is set to
18641 an empty string), the search described above will occur --- that is the
18642 default.
18643
18644 @item show compile-gcc
18645 Displays the current compile command @value{NGCC} driver filename.
18646 If set, it is the main command @command{gcc}, found usually for example
18647 under name @file{x86_64-linux-gnu-gcc}.
18648 @end table
18649
18650 @node GDB Files
18651 @chapter @value{GDBN} Files
18652
18653 @value{GDBN} needs to know the file name of the program to be debugged,
18654 both in order to read its symbol table and in order to start your
18655 program. To debug a core dump of a previous run, you must also tell
18656 @value{GDBN} the name of the core dump file.
18657
18658 @menu
18659 * Files:: Commands to specify files
18660 * File Caching:: Information about @value{GDBN}'s file caching
18661 * Separate Debug Files:: Debugging information in separate files
18662 * MiniDebugInfo:: Debugging information in a special section
18663 * Index Files:: Index files speed up GDB
18664 * Symbol Errors:: Errors reading symbol files
18665 * Data Files:: GDB data files
18666 @end menu
18667
18668 @node Files
18669 @section Commands to Specify Files
18670
18671 @cindex symbol table
18672 @cindex core dump file
18673
18674 You may want to specify executable and core dump file names. The usual
18675 way to do this is at start-up time, using the arguments to
18676 @value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
18677 Out of @value{GDBN}}).
18678
18679 Occasionally it is necessary to change to a different file during a
18680 @value{GDBN} session. Or you may run @value{GDBN} and forget to
18681 specify a file you want to use. Or you are debugging a remote target
18682 via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
18683 Program}). In these situations the @value{GDBN} commands to specify
18684 new files are useful.
18685
18686 @table @code
18687 @cindex executable file
18688 @kindex file
18689 @item file @var{filename}
18690 Use @var{filename} as the program to be debugged. It is read for its
18691 symbols and for the contents of pure memory. It is also the program
18692 executed when you use the @code{run} command. If you do not specify a
18693 directory and the file is not found in the @value{GDBN} working directory,
18694 @value{GDBN} uses the environment variable @code{PATH} as a list of
18695 directories to search, just as the shell does when looking for a program
18696 to run. You can change the value of this variable, for both @value{GDBN}
18697 and your program, using the @code{path} command.
18698
18699 @cindex unlinked object files
18700 @cindex patching object files
18701 You can load unlinked object @file{.o} files into @value{GDBN} using
18702 the @code{file} command. You will not be able to ``run'' an object
18703 file, but you can disassemble functions and inspect variables. Also,
18704 if the underlying BFD functionality supports it, you could use
18705 @kbd{gdb -write} to patch object files using this technique. Note
18706 that @value{GDBN} can neither interpret nor modify relocations in this
18707 case, so branches and some initialized variables will appear to go to
18708 the wrong place. But this feature is still handy from time to time.
18709
18710 @item file
18711 @code{file} with no argument makes @value{GDBN} discard any information it
18712 has on both executable file and the symbol table.
18713
18714 @kindex exec-file
18715 @item exec-file @r{[} @var{filename} @r{]}
18716 Specify that the program to be run (but not the symbol table) is found
18717 in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
18718 if necessary to locate your program. Omitting @var{filename} means to
18719 discard information on the executable file.
18720
18721 @kindex symbol-file
18722 @item symbol-file @r{[} @var{filename} @r{]}
18723 Read symbol table information from file @var{filename}. @code{PATH} is
18724 searched when necessary. Use the @code{file} command to get both symbol
18725 table and program to run from the same file.
18726
18727 @code{symbol-file} with no argument clears out @value{GDBN} information on your
18728 program's symbol table.
18729
18730 The @code{symbol-file} command causes @value{GDBN} to forget the contents of
18731 some breakpoints and auto-display expressions. This is because they may
18732 contain pointers to the internal data recording symbols and data types,
18733 which are part of the old symbol table data being discarded inside
18734 @value{GDBN}.
18735
18736 @code{symbol-file} does not repeat if you press @key{RET} again after
18737 executing it once.
18738
18739 When @value{GDBN} is configured for a particular environment, it
18740 understands debugging information in whatever format is the standard
18741 generated for that environment; you may use either a @sc{gnu} compiler, or
18742 other compilers that adhere to the local conventions.
18743 Best results are usually obtained from @sc{gnu} compilers; for example,
18744 using @code{@value{NGCC}} you can generate debugging information for
18745 optimized code.
18746
18747 For most kinds of object files, with the exception of old SVR3 systems
18748 using COFF, the @code{symbol-file} command does not normally read the
18749 symbol table in full right away. Instead, it scans the symbol table
18750 quickly to find which source files and which symbols are present. The
18751 details are read later, one source file at a time, as they are needed.
18752
18753 The purpose of this two-stage reading strategy is to make @value{GDBN}
18754 start up faster. For the most part, it is invisible except for
18755 occasional pauses while the symbol table details for a particular source
18756 file are being read. (The @code{set verbose} command can turn these
18757 pauses into messages if desired. @xref{Messages/Warnings, ,Optional
18758 Warnings and Messages}.)
18759
18760 We have not implemented the two-stage strategy for COFF yet. When the
18761 symbol table is stored in COFF format, @code{symbol-file} reads the
18762 symbol table data in full right away. Note that ``stabs-in-COFF''
18763 still does the two-stage strategy, since the debug info is actually
18764 in stabs format.
18765
18766 @kindex readnow
18767 @cindex reading symbols immediately
18768 @cindex symbols, reading immediately
18769 @item symbol-file @r{[} -readnow @r{]} @var{filename}
18770 @itemx file @r{[} -readnow @r{]} @var{filename}
18771 You can override the @value{GDBN} two-stage strategy for reading symbol
18772 tables by using the @samp{-readnow} option with any of the commands that
18773 load symbol table information, if you want to be sure @value{GDBN} has the
18774 entire symbol table available.
18775
18776 @cindex @code{-readnever}, option for symbol-file command
18777 @cindex never read symbols
18778 @cindex symbols, never read
18779 @item symbol-file @r{[} -readnever @r{]} @var{filename}
18780 @itemx file @r{[} -readnever @r{]} @var{filename}
18781 You can instruct @value{GDBN} to never read the symbolic information
18782 contained in @var{filename} by using the @samp{-readnever} option.
18783 @xref{--readnever}.
18784
18785 @c FIXME: for now no mention of directories, since this seems to be in
18786 @c flux. 13mar1992 status is that in theory GDB would look either in
18787 @c current dir or in same dir as myprog; but issues like competing
18788 @c GDB's, or clutter in system dirs, mean that in practice right now
18789 @c only current dir is used. FFish says maybe a special GDB hierarchy
18790 @c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
18791 @c files.
18792
18793 @kindex core-file
18794 @item core-file @r{[}@var{filename}@r{]}
18795 @itemx core
18796 Specify the whereabouts of a core dump file to be used as the ``contents
18797 of memory''. Traditionally, core files contain only some parts of the
18798 address space of the process that generated them; @value{GDBN} can access the
18799 executable file itself for other parts.
18800
18801 @code{core-file} with no argument specifies that no core file is
18802 to be used.
18803
18804 Note that the core file is ignored when your program is actually running
18805 under @value{GDBN}. So, if you have been running your program and you
18806 wish to debug a core file instead, you must kill the subprocess in which
18807 the program is running. To do this, use the @code{kill} command
18808 (@pxref{Kill Process, ,Killing the Child Process}).
18809
18810 @kindex add-symbol-file
18811 @cindex dynamic linking
18812 @item add-symbol-file @var{filename} @var{address}
18813 @itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{|} -readnever @r{]}
18814 @itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{}
18815 The @code{add-symbol-file} command reads additional symbol table
18816 information from the file @var{filename}. You would use this command
18817 when @var{filename} has been dynamically loaded (by some other means)
18818 into the program that is running. The @var{address} should give the memory
18819 address at which the file has been loaded; @value{GDBN} cannot figure
18820 this out for itself. You can additionally specify an arbitrary number
18821 of @samp{-s @var{section} @var{address}} pairs, to give an explicit
18822 section name and base address for that section. You can specify any
18823 @var{address} as an expression.
18824
18825 The symbol table of the file @var{filename} is added to the symbol table
18826 originally read with the @code{symbol-file} command. You can use the
18827 @code{add-symbol-file} command any number of times; the new symbol data
18828 thus read is kept in addition to the old.
18829
18830 Changes can be reverted using the command @code{remove-symbol-file}.
18831
18832 @cindex relocatable object files, reading symbols from
18833 @cindex object files, relocatable, reading symbols from
18834 @cindex reading symbols from relocatable object files
18835 @cindex symbols, reading from relocatable object files
18836 @cindex @file{.o} files, reading symbols from
18837 Although @var{filename} is typically a shared library file, an
18838 executable file, or some other object file which has been fully
18839 relocated for loading into a process, you can also load symbolic
18840 information from relocatable @file{.o} files, as long as:
18841
18842 @itemize @bullet
18843 @item
18844 the file's symbolic information refers only to linker symbols defined in
18845 that file, not to symbols defined by other object files,
18846 @item
18847 every section the file's symbolic information refers to has actually
18848 been loaded into the inferior, as it appears in the file, and
18849 @item
18850 you can determine the address at which every section was loaded, and
18851 provide these to the @code{add-symbol-file} command.
18852 @end itemize
18853
18854 @noindent
18855 Some embedded operating systems, like Sun Chorus and VxWorks, can load
18856 relocatable files into an already running program; such systems
18857 typically make the requirements above easy to meet. However, it's
18858 important to recognize that many native systems use complex link
18859 procedures (@code{.linkonce} section factoring and C@t{++} constructor table
18860 assembly, for example) that make the requirements difficult to meet. In
18861 general, one cannot assume that using @code{add-symbol-file} to read a
18862 relocatable object file's symbolic information will have the same effect
18863 as linking the relocatable object file into the program in the normal
18864 way.
18865
18866 @code{add-symbol-file} does not repeat if you press @key{RET} after using it.
18867
18868 @kindex remove-symbol-file
18869 @item remove-symbol-file @var{filename}
18870 @item remove-symbol-file -a @var{address}
18871 Remove a symbol file added via the @code{add-symbol-file} command. The
18872 file to remove can be identified by its @var{filename} or by an @var{address}
18873 that lies within the boundaries of this symbol file in memory. Example:
18874
18875 @smallexample
18876 (gdb) add-symbol-file /home/user/gdb/mylib.so 0x7ffff7ff9480
18877 add symbol table from file "/home/user/gdb/mylib.so" at
18878 .text_addr = 0x7ffff7ff9480
18879 (y or n) y
18880 Reading symbols from /home/user/gdb/mylib.so...done.
18881 (gdb) remove-symbol-file -a 0x7ffff7ff9480
18882 Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y
18883 (gdb)
18884 @end smallexample
18885
18886
18887 @code{remove-symbol-file} does not repeat if you press @key{RET} after using it.
18888
18889 @kindex add-symbol-file-from-memory
18890 @cindex @code{syscall DSO}
18891 @cindex load symbols from memory
18892 @item add-symbol-file-from-memory @var{address}
18893 Load symbols from the given @var{address} in a dynamically loaded
18894 object file whose image is mapped directly into the inferior's memory.
18895 For example, the Linux kernel maps a @code{syscall DSO} into each
18896 process's address space; this DSO provides kernel-specific code for
18897 some system calls. The argument can be any expression whose
18898 evaluation yields the address of the file's shared object file header.
18899 For this command to work, you must have used @code{symbol-file} or
18900 @code{exec-file} commands in advance.
18901
18902 @kindex section
18903 @item section @var{section} @var{addr}
18904 The @code{section} command changes the base address of the named
18905 @var{section} of the exec file to @var{addr}. This can be used if the
18906 exec file does not contain section addresses, (such as in the
18907 @code{a.out} format), or when the addresses specified in the file
18908 itself are wrong. Each section must be changed separately. The
18909 @code{info files} command, described below, lists all the sections and
18910 their addresses.
18911
18912 @kindex info files
18913 @kindex info target
18914 @item info files
18915 @itemx info target
18916 @code{info files} and @code{info target} are synonymous; both print the
18917 current target (@pxref{Targets, ,Specifying a Debugging Target}),
18918 including the names of the executable and core dump files currently in
18919 use by @value{GDBN}, and the files from which symbols were loaded. The
18920 command @code{help target} lists all possible targets rather than
18921 current ones.
18922
18923 @kindex maint info sections
18924 @item maint info sections
18925 Another command that can give you extra information about program sections
18926 is @code{maint info sections}. In addition to the section information
18927 displayed by @code{info files}, this command displays the flags and file
18928 offset of each section in the executable and core dump files. In addition,
18929 @code{maint info sections} provides the following command options (which
18930 may be arbitrarily combined):
18931
18932 @table @code
18933 @item ALLOBJ
18934 Display sections for all loaded object files, including shared libraries.
18935 @item @var{sections}
18936 Display info only for named @var{sections}.
18937 @item @var{section-flags}
18938 Display info only for sections for which @var{section-flags} are true.
18939 The section flags that @value{GDBN} currently knows about are:
18940 @table @code
18941 @item ALLOC
18942 Section will have space allocated in the process when loaded.
18943 Set for all sections except those containing debug information.
18944 @item LOAD
18945 Section will be loaded from the file into the child process memory.
18946 Set for pre-initialized code and data, clear for @code{.bss} sections.
18947 @item RELOC
18948 Section needs to be relocated before loading.
18949 @item READONLY
18950 Section cannot be modified by the child process.
18951 @item CODE
18952 Section contains executable code only.
18953 @item DATA
18954 Section contains data only (no executable code).
18955 @item ROM
18956 Section will reside in ROM.
18957 @item CONSTRUCTOR
18958 Section contains data for constructor/destructor lists.
18959 @item HAS_CONTENTS
18960 Section is not empty.
18961 @item NEVER_LOAD
18962 An instruction to the linker to not output the section.
18963 @item COFF_SHARED_LIBRARY
18964 A notification to the linker that the section contains
18965 COFF shared library information.
18966 @item IS_COMMON
18967 Section contains common symbols.
18968 @end table
18969 @end table
18970 @kindex set trust-readonly-sections
18971 @cindex read-only sections
18972 @item set trust-readonly-sections on
18973 Tell @value{GDBN} that readonly sections in your object file
18974 really are read-only (i.e.@: that their contents will not change).
18975 In that case, @value{GDBN} can fetch values from these sections
18976 out of the object file, rather than from the target program.
18977 For some targets (notably embedded ones), this can be a significant
18978 enhancement to debugging performance.
18979
18980 The default is off.
18981
18982 @item set trust-readonly-sections off
18983 Tell @value{GDBN} not to trust readonly sections. This means that
18984 the contents of the section might change while the program is running,
18985 and must therefore be fetched from the target when needed.
18986
18987 @item show trust-readonly-sections
18988 Show the current setting of trusting readonly sections.
18989 @end table
18990
18991 All file-specifying commands allow both absolute and relative file names
18992 as arguments. @value{GDBN} always converts the file name to an absolute file
18993 name and remembers it that way.
18994
18995 @cindex shared libraries
18996 @anchor{Shared Libraries}
18997 @value{GDBN} supports @sc{gnu}/Linux, MS-Windows, SunOS,
18998 Darwin/Mach-O, SVr4, IBM RS/6000 AIX, QNX Neutrino, FDPIC (FR-V), and
18999 DSBT (TIC6X) shared libraries.
19000
19001 On MS-Windows @value{GDBN} must be linked with the Expat library to support
19002 shared libraries. @xref{Expat}.
19003
19004 @value{GDBN} automatically loads symbol definitions from shared libraries
19005 when you use the @code{run} command, or when you examine a core file.
19006 (Before you issue the @code{run} command, @value{GDBN} does not understand
19007 references to a function in a shared library, however---unless you are
19008 debugging a core file).
19009
19010 @c FIXME: some @value{GDBN} release may permit some refs to undef
19011 @c FIXME...symbols---eg in a break cmd---assuming they are from a shared
19012 @c FIXME...lib; check this from time to time when updating manual
19013
19014 There are times, however, when you may wish to not automatically load
19015 symbol definitions from shared libraries, such as when they are
19016 particularly large or there are many of them.
19017
19018 To control the automatic loading of shared library symbols, use the
19019 commands:
19020
19021 @table @code
19022 @kindex set auto-solib-add
19023 @item set auto-solib-add @var{mode}
19024 If @var{mode} is @code{on}, symbols from all shared object libraries
19025 will be loaded automatically when the inferior begins execution, you
19026 attach to an independently started inferior, or when the dynamic linker
19027 informs @value{GDBN} that a new library has been loaded. If @var{mode}
19028 is @code{off}, symbols must be loaded manually, using the
19029 @code{sharedlibrary} command. The default value is @code{on}.
19030
19031 @cindex memory used for symbol tables
19032 If your program uses lots of shared libraries with debug info that
19033 takes large amounts of memory, you can decrease the @value{GDBN}
19034 memory footprint by preventing it from automatically loading the
19035 symbols from shared libraries. To that end, type @kbd{set
19036 auto-solib-add off} before running the inferior, then load each
19037 library whose debug symbols you do need with @kbd{sharedlibrary
19038 @var{regexp}}, where @var{regexp} is a regular expression that matches
19039 the libraries whose symbols you want to be loaded.
19040
19041 @kindex show auto-solib-add
19042 @item show auto-solib-add
19043 Display the current autoloading mode.
19044 @end table
19045
19046 @cindex load shared library
19047 To explicitly load shared library symbols, use the @code{sharedlibrary}
19048 command:
19049
19050 @table @code
19051 @kindex info sharedlibrary
19052 @kindex info share
19053 @item info share @var{regex}
19054 @itemx info sharedlibrary @var{regex}
19055 Print the names of the shared libraries which are currently loaded
19056 that match @var{regex}. If @var{regex} is omitted then print
19057 all shared libraries that are loaded.
19058
19059 @kindex info dll
19060 @item info dll @var{regex}
19061 This is an alias of @code{info sharedlibrary}.
19062
19063 @kindex sharedlibrary
19064 @kindex share
19065 @item sharedlibrary @var{regex}
19066 @itemx share @var{regex}
19067 Load shared object library symbols for files matching a
19068 Unix regular expression.
19069 As with files loaded automatically, it only loads shared libraries
19070 required by your program for a core file or after typing @code{run}. If
19071 @var{regex} is omitted all shared libraries required by your program are
19072 loaded.
19073
19074 @item nosharedlibrary
19075 @kindex nosharedlibrary
19076 @cindex unload symbols from shared libraries
19077 Unload all shared object library symbols. This discards all symbols
19078 that have been loaded from all shared libraries. Symbols from shared
19079 libraries that were loaded by explicit user requests are not
19080 discarded.
19081 @end table
19082
19083 Sometimes you may wish that @value{GDBN} stops and gives you control
19084 when any of shared library events happen. The best way to do this is
19085 to use @code{catch load} and @code{catch unload} (@pxref{Set
19086 Catchpoints}).
19087
19088 @value{GDBN} also supports the the @code{set stop-on-solib-events}
19089 command for this. This command exists for historical reasons. It is
19090 less useful than setting a catchpoint, because it does not allow for
19091 conditions or commands as a catchpoint does.
19092
19093 @table @code
19094 @item set stop-on-solib-events
19095 @kindex set stop-on-solib-events
19096 This command controls whether @value{GDBN} should give you control
19097 when the dynamic linker notifies it about some shared library event.
19098 The most common event of interest is loading or unloading of a new
19099 shared library.
19100
19101 @item show stop-on-solib-events
19102 @kindex show stop-on-solib-events
19103 Show whether @value{GDBN} stops and gives you control when shared
19104 library events happen.
19105 @end table
19106
19107 Shared libraries are also supported in many cross or remote debugging
19108 configurations. @value{GDBN} needs to have access to the target's libraries;
19109 this can be accomplished either by providing copies of the libraries
19110 on the host system, or by asking @value{GDBN} to automatically retrieve the
19111 libraries from the target. If copies of the target libraries are
19112 provided, they need to be the same as the target libraries, although the
19113 copies on the target can be stripped as long as the copies on the host are
19114 not.
19115
19116 @cindex where to look for shared libraries
19117 For remote debugging, you need to tell @value{GDBN} where the target
19118 libraries are, so that it can load the correct copies---otherwise, it
19119 may try to load the host's libraries. @value{GDBN} has two variables
19120 to specify the search directories for target libraries.
19121
19122 @table @code
19123 @cindex prefix for executable and shared library file names
19124 @cindex system root, alternate
19125 @kindex set solib-absolute-prefix
19126 @kindex set sysroot
19127 @item set sysroot @var{path}
19128 Use @var{path} as the system root for the program being debugged. Any
19129 absolute shared library paths will be prefixed with @var{path}; many
19130 runtime loaders store the absolute paths to the shared library in the
19131 target program's memory. When starting processes remotely, and when
19132 attaching to already-running processes (local or remote), their
19133 executable filenames will be prefixed with @var{path} if reported to
19134 @value{GDBN} as absolute by the operating system. If you use
19135 @code{set sysroot} to find executables and shared libraries, they need
19136 to be laid out in the same way that they are on the target, with
19137 e.g.@: a @file{/bin}, @file{/lib} and @file{/usr/lib} hierarchy under
19138 @var{path}.
19139
19140 If @var{path} starts with the sequence @file{target:} and the target
19141 system is remote then @value{GDBN} will retrieve the target binaries
19142 from the remote system. This is only supported when using a remote
19143 target that supports the @code{remote get} command (@pxref{File
19144 Transfer,,Sending files to a remote system}). The part of @var{path}
19145 following the initial @file{target:} (if present) is used as system
19146 root prefix on the remote file system. If @var{path} starts with the
19147 sequence @file{remote:} this is converted to the sequence
19148 @file{target:} by @code{set sysroot}@footnote{Historically the
19149 functionality to retrieve binaries from the remote system was
19150 provided by prefixing @var{path} with @file{remote:}}. If you want
19151 to specify a local system root using a directory that happens to be
19152 named @file{target:} or @file{remote:}, you need to use some
19153 equivalent variant of the name like @file{./target:}.
19154
19155 For targets with an MS-DOS based filesystem, such as MS-Windows and
19156 SymbianOS, @value{GDBN} tries prefixing a few variants of the target
19157 absolute file name with @var{path}. But first, on Unix hosts,
19158 @value{GDBN} converts all backslash directory separators into forward
19159 slashes, because the backslash is not a directory separator on Unix:
19160
19161 @smallexample
19162 c:\foo\bar.dll @result{} c:/foo/bar.dll
19163 @end smallexample
19164
19165 Then, @value{GDBN} attempts prefixing the target file name with
19166 @var{path}, and looks for the resulting file name in the host file
19167 system:
19168
19169 @smallexample
19170 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll
19171 @end smallexample
19172
19173 If that does not find the binary, @value{GDBN} tries removing
19174 the @samp{:} character from the drive spec, both for convenience, and,
19175 for the case of the host file system not supporting file names with
19176 colons:
19177
19178 @smallexample
19179 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll
19180 @end smallexample
19181
19182 This makes it possible to have a system root that mirrors a target
19183 with more than one drive. E.g., you may want to setup your local
19184 copies of the target system shared libraries like so (note @samp{c} vs
19185 @samp{z}):
19186
19187 @smallexample
19188 @file{/path/to/sysroot/c/sys/bin/foo.dll}
19189 @file{/path/to/sysroot/c/sys/bin/bar.dll}
19190 @file{/path/to/sysroot/z/sys/bin/bar.dll}
19191 @end smallexample
19192
19193 @noindent
19194 and point the system root at @file{/path/to/sysroot}, so that
19195 @value{GDBN} can find the correct copies of both
19196 @file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}.
19197
19198 If that still does not find the binary, @value{GDBN} tries
19199 removing the whole drive spec from the target file name:
19200
19201 @smallexample
19202 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll
19203 @end smallexample
19204
19205 This last lookup makes it possible to not care about the drive name,
19206 if you don't want or need to.
19207
19208 The @code{set solib-absolute-prefix} command is an alias for @code{set
19209 sysroot}.
19210
19211 @cindex default system root
19212 @cindex @samp{--with-sysroot}
19213 You can set the default system root by using the configure-time
19214 @samp{--with-sysroot} option. If the system root is inside
19215 @value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
19216 @samp{--exec-prefix}), then the default system root will be updated
19217 automatically if the installed @value{GDBN} is moved to a new
19218 location.
19219
19220 @kindex show sysroot
19221 @item show sysroot
19222 Display the current executable and shared library prefix.
19223
19224 @kindex set solib-search-path
19225 @item set solib-search-path @var{path}
19226 If this variable is set, @var{path} is a colon-separated list of
19227 directories to search for shared libraries. @samp{solib-search-path}
19228 is used after @samp{sysroot} fails to locate the library, or if the
19229 path to the library is relative instead of absolute. If you want to
19230 use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
19231 @samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
19232 finding your host's libraries. @samp{sysroot} is preferred; setting
19233 it to a nonexistent directory may interfere with automatic loading
19234 of shared library symbols.
19235
19236 @kindex show solib-search-path
19237 @item show solib-search-path
19238 Display the current shared library search path.
19239
19240 @cindex DOS file-name semantics of file names.
19241 @kindex set target-file-system-kind (unix|dos-based|auto)
19242 @kindex show target-file-system-kind
19243 @item set target-file-system-kind @var{kind}
19244 Set assumed file system kind for target reported file names.
19245
19246 Shared library file names as reported by the target system may not
19247 make sense as is on the system @value{GDBN} is running on. For
19248 example, when remote debugging a target that has MS-DOS based file
19249 system semantics, from a Unix host, the target may be reporting to
19250 @value{GDBN} a list of loaded shared libraries with file names such as
19251 @file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of
19252 drive letters, so the @samp{c:\} prefix is not normally understood as
19253 indicating an absolute file name, and neither is the backslash
19254 normally considered a directory separator character. In that case,
19255 the native file system would interpret this whole absolute file name
19256 as a relative file name with no directory components. This would make
19257 it impossible to point @value{GDBN} at a copy of the remote target's
19258 shared libraries on the host using @code{set sysroot}, and impractical
19259 with @code{set solib-search-path}. Setting
19260 @code{target-file-system-kind} to @code{dos-based} tells @value{GDBN}
19261 to interpret such file names similarly to how the target would, and to
19262 map them to file names valid on @value{GDBN}'s native file system
19263 semantics. The value of @var{kind} can be @code{"auto"}, in addition
19264 to one of the supported file system kinds. In that case, @value{GDBN}
19265 tries to determine the appropriate file system variant based on the
19266 current target's operating system (@pxref{ABI, ,Configuring the
19267 Current ABI}). The supported file system settings are:
19268
19269 @table @code
19270 @item unix
19271 Instruct @value{GDBN} to assume the target file system is of Unix
19272 kind. Only file names starting the forward slash (@samp{/}) character
19273 are considered absolute, and the directory separator character is also
19274 the forward slash.
19275
19276 @item dos-based
19277 Instruct @value{GDBN} to assume the target file system is DOS based.
19278 File names starting with either a forward slash, or a drive letter
19279 followed by a colon (e.g., @samp{c:}), are considered absolute, and
19280 both the slash (@samp{/}) and the backslash (@samp{\\}) characters are
19281 considered directory separators.
19282
19283 @item auto
19284 Instruct @value{GDBN} to use the file system kind associated with the
19285 target operating system (@pxref{ABI, ,Configuring the Current ABI}).
19286 This is the default.
19287 @end table
19288 @end table
19289
19290 @cindex file name canonicalization
19291 @cindex base name differences
19292 When processing file names provided by the user, @value{GDBN}
19293 frequently needs to compare them to the file names recorded in the
19294 program's debug info. Normally, @value{GDBN} compares just the
19295 @dfn{base names} of the files as strings, which is reasonably fast
19296 even for very large programs. (The base name of a file is the last
19297 portion of its name, after stripping all the leading directories.)
19298 This shortcut in comparison is based upon the assumption that files
19299 cannot have more than one base name. This is usually true, but
19300 references to files that use symlinks or similar filesystem
19301 facilities violate that assumption. If your program records files
19302 using such facilities, or if you provide file names to @value{GDBN}
19303 using symlinks etc., you can set @code{basenames-may-differ} to
19304 @code{true} to instruct @value{GDBN} to completely canonicalize each
19305 pair of file names it needs to compare. This will make file-name
19306 comparisons accurate, but at a price of a significant slowdown.
19307
19308 @table @code
19309 @item set basenames-may-differ
19310 @kindex set basenames-may-differ
19311 Set whether a source file may have multiple base names.
19312
19313 @item show basenames-may-differ
19314 @kindex show basenames-may-differ
19315 Show whether a source file may have multiple base names.
19316 @end table
19317
19318 @node File Caching
19319 @section File Caching
19320 @cindex caching of opened files
19321 @cindex caching of bfd objects
19322
19323 To speed up file loading, and reduce memory usage, @value{GDBN} will
19324 reuse the @code{bfd} objects used to track open files. @xref{Top, ,
19325 BFD, bfd, The Binary File Descriptor Library}. The following commands
19326 allow visibility and control of the caching behavior.
19327
19328 @table @code
19329 @kindex maint info bfds
19330 @item maint info bfds
19331 This prints information about each @code{bfd} object that is known to
19332 @value{GDBN}.
19333
19334 @kindex maint set bfd-sharing
19335 @kindex maint show bfd-sharing
19336 @kindex bfd caching
19337 @item maint set bfd-sharing
19338 @item maint show bfd-sharing
19339 Control whether @code{bfd} objects can be shared. When sharing is
19340 enabled @value{GDBN} reuses already open @code{bfd} objects rather
19341 than reopening the same file. Turning sharing off does not cause
19342 already shared @code{bfd} objects to be unshared, but all future files
19343 that are opened will create a new @code{bfd} object. Similarly,
19344 re-enabling sharing does not cause multiple existing @code{bfd}
19345 objects to be collapsed into a single shared @code{bfd} object.
19346
19347 @kindex set debug bfd-cache @var{level}
19348 @kindex bfd caching
19349 @item set debug bfd-cache @var{level}
19350 Turns on debugging of the bfd cache, setting the level to @var{level}.
19351
19352 @kindex show debug bfd-cache
19353 @kindex bfd caching
19354 @item show debug bfd-cache
19355 Show the current debugging level of the bfd cache.
19356 @end table
19357
19358 @node Separate Debug Files
19359 @section Debugging Information in Separate Files
19360 @cindex separate debugging information files
19361 @cindex debugging information in separate files
19362 @cindex @file{.debug} subdirectories
19363 @cindex debugging information directory, global
19364 @cindex global debugging information directories
19365 @cindex build ID, and separate debugging files
19366 @cindex @file{.build-id} directory
19367
19368 @value{GDBN} allows you to put a program's debugging information in a
19369 file separate from the executable itself, in a way that allows
19370 @value{GDBN} to find and load the debugging information automatically.
19371 Since debugging information can be very large---sometimes larger
19372 than the executable code itself---some systems distribute debugging
19373 information for their executables in separate files, which users can
19374 install only when they need to debug a problem.
19375
19376 @value{GDBN} supports two ways of specifying the separate debug info
19377 file:
19378
19379 @itemize @bullet
19380 @item
19381 The executable contains a @dfn{debug link} that specifies the name of
19382 the separate debug info file. The separate debug file's name is
19383 usually @file{@var{executable}.debug}, where @var{executable} is the
19384 name of the corresponding executable file without leading directories
19385 (e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
19386 debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
19387 checksum for the debug file, which @value{GDBN} uses to validate that
19388 the executable and the debug file came from the same build.
19389
19390 @item
19391 The executable contains a @dfn{build ID}, a unique bit string that is
19392 also present in the corresponding debug info file. (This is supported
19393 only on some operating systems, when using the ELF or PE file formats
19394 for binary files and the @sc{gnu} Binutils.) For more details about
19395 this feature, see the description of the @option{--build-id}
19396 command-line option in @ref{Options, , Command Line Options, ld.info,
19397 The GNU Linker}. The debug info file's name is not specified
19398 explicitly by the build ID, but can be computed from the build ID, see
19399 below.
19400 @end itemize
19401
19402 Depending on the way the debug info file is specified, @value{GDBN}
19403 uses two different methods of looking for the debug file:
19404
19405 @itemize @bullet
19406 @item
19407 For the ``debug link'' method, @value{GDBN} looks up the named file in
19408 the directory of the executable file, then in a subdirectory of that
19409 directory named @file{.debug}, and finally under each one of the global debug
19410 directories, in a subdirectory whose name is identical to the leading
19411 directories of the executable's absolute file name.
19412
19413 @item
19414 For the ``build ID'' method, @value{GDBN} looks in the
19415 @file{.build-id} subdirectory of each one of the global debug directories for
19416 a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
19417 first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
19418 are the rest of the bit string. (Real build ID strings are 32 or more
19419 hex characters, not 10.)
19420 @end itemize
19421
19422 So, for example, suppose you ask @value{GDBN} to debug
19423 @file{/usr/bin/ls}, which has a debug link that specifies the
19424 file @file{ls.debug}, and a build ID whose value in hex is
19425 @code{abcdef1234}. If the list of the global debug directories includes
19426 @file{/usr/lib/debug}, then @value{GDBN} will look for the following
19427 debug information files, in the indicated order:
19428
19429 @itemize @minus
19430 @item
19431 @file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
19432 @item
19433 @file{/usr/bin/ls.debug}
19434 @item
19435 @file{/usr/bin/.debug/ls.debug}
19436 @item
19437 @file{/usr/lib/debug/usr/bin/ls.debug}.
19438 @end itemize
19439
19440 @anchor{debug-file-directory}
19441 Global debugging info directories default to what is set by @value{GDBN}
19442 configure option @option{--with-separate-debug-dir}. During @value{GDBN} run
19443 you can also set the global debugging info directories, and view the list
19444 @value{GDBN} is currently using.
19445
19446 @table @code
19447
19448 @kindex set debug-file-directory
19449 @item set debug-file-directory @var{directories}
19450 Set the directories which @value{GDBN} searches for separate debugging
19451 information files to @var{directory}. Multiple path components can be set
19452 concatenating them by a path separator.
19453
19454 @kindex show debug-file-directory
19455 @item show debug-file-directory
19456 Show the directories @value{GDBN} searches for separate debugging
19457 information files.
19458
19459 @end table
19460
19461 @cindex @code{.gnu_debuglink} sections
19462 @cindex debug link sections
19463 A debug link is a special section of the executable file named
19464 @code{.gnu_debuglink}. The section must contain:
19465
19466 @itemize
19467 @item
19468 A filename, with any leading directory components removed, followed by
19469 a zero byte,
19470 @item
19471 zero to three bytes of padding, as needed to reach the next four-byte
19472 boundary within the section, and
19473 @item
19474 a four-byte CRC checksum, stored in the same endianness used for the
19475 executable file itself. The checksum is computed on the debugging
19476 information file's full contents by the function given below, passing
19477 zero as the @var{crc} argument.
19478 @end itemize
19479
19480 Any executable file format can carry a debug link, as long as it can
19481 contain a section named @code{.gnu_debuglink} with the contents
19482 described above.
19483
19484 @cindex @code{.note.gnu.build-id} sections
19485 @cindex build ID sections
19486 The build ID is a special section in the executable file (and in other
19487 ELF binary files that @value{GDBN} may consider). This section is
19488 often named @code{.note.gnu.build-id}, but that name is not mandatory.
19489 It contains unique identification for the built files---the ID remains
19490 the same across multiple builds of the same build tree. The default
19491 algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
19492 content for the build ID string. The same section with an identical
19493 value is present in the original built binary with symbols, in its
19494 stripped variant, and in the separate debugging information file.
19495
19496 The debugging information file itself should be an ordinary
19497 executable, containing a full set of linker symbols, sections, and
19498 debugging information. The sections of the debugging information file
19499 should have the same names, addresses, and sizes as the original file,
19500 but they need not contain any data---much like a @code{.bss} section
19501 in an ordinary executable.
19502
19503 The @sc{gnu} binary utilities (Binutils) package includes the
19504 @samp{objcopy} utility that can produce
19505 the separated executable / debugging information file pairs using the
19506 following commands:
19507
19508 @smallexample
19509 @kbd{objcopy --only-keep-debug foo foo.debug}
19510 @kbd{strip -g foo}
19511 @end smallexample
19512
19513 @noindent
19514 These commands remove the debugging
19515 information from the executable file @file{foo} and place it in the file
19516 @file{foo.debug}. You can use the first, second or both methods to link the
19517 two files:
19518
19519 @itemize @bullet
19520 @item
19521 The debug link method needs the following additional command to also leave
19522 behind a debug link in @file{foo}:
19523
19524 @smallexample
19525 @kbd{objcopy --add-gnu-debuglink=foo.debug foo}
19526 @end smallexample
19527
19528 Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
19529 a version of the @code{strip} command such that the command @kbd{strip foo -f
19530 foo.debug} has the same functionality as the two @code{objcopy} commands and
19531 the @code{ln -s} command above, together.
19532
19533 @item
19534 Build ID gets embedded into the main executable using @code{ld --build-id} or
19535 the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
19536 compatibility fixes for debug files separation are present in @sc{gnu} binary
19537 utilities (Binutils) package since version 2.18.
19538 @end itemize
19539
19540 @noindent
19541
19542 @cindex CRC algorithm definition
19543 The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
19544 IEEE 802.3 using the polynomial:
19545
19546 @c TexInfo requires naked braces for multi-digit exponents for Tex
19547 @c output, but this causes HTML output to barf. HTML has to be set using
19548 @c raw commands. So we end up having to specify this equation in 2
19549 @c different ways!
19550 @ifhtml
19551 @display
19552 @html
19553 <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>
19554 + <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
19555 @end html
19556 @end display
19557 @end ifhtml
19558 @ifnothtml
19559 @display
19560 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
19561 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
19562 @end display
19563 @end ifnothtml
19564
19565 The function is computed byte at a time, taking the least
19566 significant bit of each byte first. The initial pattern
19567 @code{0xffffffff} is used, to ensure leading zeros affect the CRC and
19568 the final result is inverted to ensure trailing zeros also affect the
19569 CRC.
19570
19571 @emph{Note:} This is the same CRC polynomial as used in handling the
19572 @dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{qCRC packet}).
19573 However in the case of the Remote Serial Protocol, the CRC is computed
19574 @emph{most} significant bit first, and the result is not inverted, so
19575 trailing zeros have no effect on the CRC value.
19576
19577 To complete the description, we show below the code of the function
19578 which produces the CRC used in @code{.gnu_debuglink}. Inverting the
19579 initially supplied @code{crc} argument means that an initial call to
19580 this function passing in zero will start computing the CRC using
19581 @code{0xffffffff}.
19582
19583 @kindex gnu_debuglink_crc32
19584 @smallexample
19585 unsigned long
19586 gnu_debuglink_crc32 (unsigned long crc,
19587 unsigned char *buf, size_t len)
19588 @{
19589 static const unsigned long crc32_table[256] =
19590 @{
19591 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
19592 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
19593 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
19594 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
19595 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
19596 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
19597 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
19598 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
19599 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
19600 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
19601 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
19602 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
19603 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
19604 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
19605 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
19606 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
19607 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
19608 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
19609 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
19610 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
19611 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
19612 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
19613 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
19614 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
19615 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
19616 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
19617 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
19618 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
19619 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
19620 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
19621 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
19622 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
19623 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
19624 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
19625 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
19626 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
19627 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
19628 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
19629 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
19630 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
19631 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
19632 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
19633 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
19634 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
19635 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
19636 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
19637 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
19638 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
19639 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
19640 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
19641 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
19642 0x2d02ef8d
19643 @};
19644 unsigned char *end;
19645
19646 crc = ~crc & 0xffffffff;
19647 for (end = buf + len; buf < end; ++buf)
19648 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
19649 return ~crc & 0xffffffff;
19650 @}
19651 @end smallexample
19652
19653 @noindent
19654 This computation does not apply to the ``build ID'' method.
19655
19656 @node MiniDebugInfo
19657 @section Debugging information in a special section
19658 @cindex separate debug sections
19659 @cindex @samp{.gnu_debugdata} section
19660
19661 Some systems ship pre-built executables and libraries that have a
19662 special @samp{.gnu_debugdata} section. This feature is called
19663 @dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and
19664 is used to supply extra symbols for backtraces.
19665
19666 The intent of this section is to provide extra minimal debugging
19667 information for use in simple backtraces. It is not intended to be a
19668 replacement for full separate debugging information (@pxref{Separate
19669 Debug Files}). The example below shows the intended use; however,
19670 @value{GDBN} does not currently put restrictions on what sort of
19671 debugging information might be included in the section.
19672
19673 @value{GDBN} has support for this extension. If the section exists,
19674 then it is used provided that no other source of debugging information
19675 can be found, and that @value{GDBN} was configured with LZMA support.
19676
19677 This section can be easily created using @command{objcopy} and other
19678 standard utilities:
19679
19680 @smallexample
19681 # Extract the dynamic symbols from the main binary, there is no need
19682 # to also have these in the normal symbol table.
19683 nm -D @var{binary} --format=posix --defined-only \
19684 | awk '@{ print $1 @}' | sort > dynsyms
19685
19686 # Extract all the text (i.e. function) symbols from the debuginfo.
19687 # (Note that we actually also accept "D" symbols, for the benefit
19688 # of platforms like PowerPC64 that use function descriptors.)
19689 nm @var{binary} --format=posix --defined-only \
19690 | awk '@{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 @}' \
19691 | sort > funcsyms
19692
19693 # Keep all the function symbols not already in the dynamic symbol
19694 # table.
19695 comm -13 dynsyms funcsyms > keep_symbols
19696
19697 # Separate full debug info into debug binary.
19698 objcopy --only-keep-debug @var{binary} debug
19699
19700 # Copy the full debuginfo, keeping only a minimal set of symbols and
19701 # removing some unnecessary sections.
19702 objcopy -S --remove-section .gdb_index --remove-section .comment \
19703 --keep-symbols=keep_symbols debug mini_debuginfo
19704
19705 # Drop the full debug info from the original binary.
19706 strip --strip-all -R .comment @var{binary}
19707
19708 # Inject the compressed data into the .gnu_debugdata section of the
19709 # original binary.
19710 xz mini_debuginfo
19711 objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary}
19712 @end smallexample
19713
19714 @node Index Files
19715 @section Index Files Speed Up @value{GDBN}
19716 @cindex index files
19717 @cindex @samp{.gdb_index} section
19718
19719 When @value{GDBN} finds a symbol file, it scans the symbols in the
19720 file in order to construct an internal symbol table. This lets most
19721 @value{GDBN} operations work quickly---at the cost of a delay early
19722 on. For large programs, this delay can be quite lengthy, so
19723 @value{GDBN} provides a way to build an index, which speeds up
19724 startup.
19725
19726 For convenience, @value{GDBN} comes with a program,
19727 @command{gdb-add-index}, which can be used to add the index to a
19728 symbol file. It takes the symbol file as its only argument:
19729
19730 @smallexample
19731 $ gdb-add-index symfile
19732 @end smallexample
19733
19734 @xref{gdb-add-index}.
19735
19736 It is also possible to do the work manually. Here is what
19737 @command{gdb-add-index} does behind the curtains.
19738
19739 The index is stored as a section in the symbol file. @value{GDBN} can
19740 write the index to a file, then you can put it into the symbol file
19741 using @command{objcopy}.
19742
19743 To create an index file, use the @code{save gdb-index} command:
19744
19745 @table @code
19746 @item save gdb-index [-dwarf-5] @var{directory}
19747 @kindex save gdb-index
19748 Create index files for all symbol files currently known by
19749 @value{GDBN}. For each known @var{symbol-file}, this command by
19750 default creates it produces a single file
19751 @file{@var{symbol-file}.gdb-index}. If you invoke this command with
19752 the @option{-dwarf-5} option, it produces 2 files:
19753 @file{@var{symbol-file}.debug_names} and
19754 @file{@var{symbol-file}.debug_str}. The files are created in the
19755 given @var{directory}.
19756 @end table
19757
19758 Once you have created an index file you can merge it into your symbol
19759 file, here named @file{symfile}, using @command{objcopy}:
19760
19761 @smallexample
19762 $ objcopy --add-section .gdb_index=symfile.gdb-index \
19763 --set-section-flags .gdb_index=readonly symfile symfile
19764 @end smallexample
19765
19766 Or for @code{-dwarf-5}:
19767
19768 @smallexample
19769 $ objcopy --dump-section .debug_str=symfile.debug_str.new symfile
19770 $ cat symfile.debug_str >>symfile.debug_str.new
19771 $ objcopy --add-section .debug_names=symfile.gdb-index \
19772 --set-section-flags .debug_names=readonly \
19773 --update-section .debug_str=symfile.debug_str.new symfile symfile
19774 @end smallexample
19775
19776 @value{GDBN} will normally ignore older versions of @file{.gdb_index}
19777 sections that have been deprecated. Usually they are deprecated because
19778 they are missing a new feature or have performance issues.
19779 To tell @value{GDBN} to use a deprecated index section anyway
19780 specify @code{set use-deprecated-index-sections on}.
19781 The default is @code{off}.
19782 This can speed up startup, but may result in some functionality being lost.
19783 @xref{Index Section Format}.
19784
19785 @emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on}
19786 must be done before gdb reads the file. The following will not work:
19787
19788 @smallexample
19789 $ gdb -ex "set use-deprecated-index-sections on" <program>
19790 @end smallexample
19791
19792 Instead you must do, for example,
19793
19794 @smallexample
19795 $ gdb -iex "set use-deprecated-index-sections on" <program>
19796 @end smallexample
19797
19798 There are currently some limitation on indices. They only work when
19799 for DWARF debugging information, not stabs. And, they do not
19800 currently work for programs using Ada.
19801
19802 @node Symbol Errors
19803 @section Errors Reading Symbol Files
19804
19805 While reading a symbol file, @value{GDBN} occasionally encounters problems,
19806 such as symbol types it does not recognize, or known bugs in compiler
19807 output. By default, @value{GDBN} does not notify you of such problems, since
19808 they are relatively common and primarily of interest to people
19809 debugging compilers. If you are interested in seeing information
19810 about ill-constructed symbol tables, you can either ask @value{GDBN} to print
19811 only one message about each such type of problem, no matter how many
19812 times the problem occurs; or you can ask @value{GDBN} to print more messages,
19813 to see how many times the problems occur, with the @code{set
19814 complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
19815 Messages}).
19816
19817 The messages currently printed, and their meanings, include:
19818
19819 @table @code
19820 @item inner block not inside outer block in @var{symbol}
19821
19822 The symbol information shows where symbol scopes begin and end
19823 (such as at the start of a function or a block of statements). This
19824 error indicates that an inner scope block is not fully contained
19825 in its outer scope blocks.
19826
19827 @value{GDBN} circumvents the problem by treating the inner block as if it had
19828 the same scope as the outer block. In the error message, @var{symbol}
19829 may be shown as ``@code{(don't know)}'' if the outer block is not a
19830 function.
19831
19832 @item block at @var{address} out of order
19833
19834 The symbol information for symbol scope blocks should occur in
19835 order of increasing addresses. This error indicates that it does not
19836 do so.
19837
19838 @value{GDBN} does not circumvent this problem, and has trouble
19839 locating symbols in the source file whose symbols it is reading. (You
19840 can often determine what source file is affected by specifying
19841 @code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
19842 Messages}.)
19843
19844 @item bad block start address patched
19845
19846 The symbol information for a symbol scope block has a start address
19847 smaller than the address of the preceding source line. This is known
19848 to occur in the SunOS 4.1.1 (and earlier) C compiler.
19849
19850 @value{GDBN} circumvents the problem by treating the symbol scope block as
19851 starting on the previous source line.
19852
19853 @item bad string table offset in symbol @var{n}
19854
19855 @cindex foo
19856 Symbol number @var{n} contains a pointer into the string table which is
19857 larger than the size of the string table.
19858
19859 @value{GDBN} circumvents the problem by considering the symbol to have the
19860 name @code{foo}, which may cause other problems if many symbols end up
19861 with this name.
19862
19863 @item unknown symbol type @code{0x@var{nn}}
19864
19865 The symbol information contains new data types that @value{GDBN} does
19866 not yet know how to read. @code{0x@var{nn}} is the symbol type of the
19867 uncomprehended information, in hexadecimal.
19868
19869 @value{GDBN} circumvents the error by ignoring this symbol information.
19870 This usually allows you to debug your program, though certain symbols
19871 are not accessible. If you encounter such a problem and feel like
19872 debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
19873 on @code{complain}, then go up to the function @code{read_dbx_symtab}
19874 and examine @code{*bufp} to see the symbol.
19875
19876 @item stub type has NULL name
19877
19878 @value{GDBN} could not find the full definition for a struct or class.
19879
19880 @item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
19881 The symbol information for a C@t{++} member function is missing some
19882 information that recent versions of the compiler should have output for
19883 it.
19884
19885 @item info mismatch between compiler and debugger
19886
19887 @value{GDBN} could not parse a type specification output by the compiler.
19888
19889 @end table
19890
19891 @node Data Files
19892 @section GDB Data Files
19893
19894 @cindex prefix for data files
19895 @value{GDBN} will sometimes read an auxiliary data file. These files
19896 are kept in a directory known as the @dfn{data directory}.
19897
19898 You can set the data directory's name, and view the name @value{GDBN}
19899 is currently using.
19900
19901 @table @code
19902 @kindex set data-directory
19903 @item set data-directory @var{directory}
19904 Set the directory which @value{GDBN} searches for auxiliary data files
19905 to @var{directory}.
19906
19907 @kindex show data-directory
19908 @item show data-directory
19909 Show the directory @value{GDBN} searches for auxiliary data files.
19910 @end table
19911
19912 @cindex default data directory
19913 @cindex @samp{--with-gdb-datadir}
19914 You can set the default data directory by using the configure-time
19915 @samp{--with-gdb-datadir} option. If the data directory is inside
19916 @value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
19917 @samp{--exec-prefix}), then the default data directory will be updated
19918 automatically if the installed @value{GDBN} is moved to a new
19919 location.
19920
19921 The data directory may also be specified with the
19922 @code{--data-directory} command line option.
19923 @xref{Mode Options}.
19924
19925 @node Targets
19926 @chapter Specifying a Debugging Target
19927
19928 @cindex debugging target
19929 A @dfn{target} is the execution environment occupied by your program.
19930
19931 Often, @value{GDBN} runs in the same host environment as your program;
19932 in that case, the debugging target is specified as a side effect when
19933 you use the @code{file} or @code{core} commands. When you need more
19934 flexibility---for example, running @value{GDBN} on a physically separate
19935 host, or controlling a standalone system over a serial port or a
19936 realtime system over a TCP/IP connection---you can use the @code{target}
19937 command to specify one of the target types configured for @value{GDBN}
19938 (@pxref{Target Commands, ,Commands for Managing Targets}).
19939
19940 @cindex target architecture
19941 It is possible to build @value{GDBN} for several different @dfn{target
19942 architectures}. When @value{GDBN} is built like that, you can choose
19943 one of the available architectures with the @kbd{set architecture}
19944 command.
19945
19946 @table @code
19947 @kindex set architecture
19948 @kindex show architecture
19949 @item set architecture @var{arch}
19950 This command sets the current target architecture to @var{arch}. The
19951 value of @var{arch} can be @code{"auto"}, in addition to one of the
19952 supported architectures.
19953
19954 @item show architecture
19955 Show the current target architecture.
19956
19957 @item set processor
19958 @itemx processor
19959 @kindex set processor
19960 @kindex show processor
19961 These are alias commands for, respectively, @code{set architecture}
19962 and @code{show architecture}.
19963 @end table
19964
19965 @menu
19966 * Active Targets:: Active targets
19967 * Target Commands:: Commands for managing targets
19968 * Byte Order:: Choosing target byte order
19969 @end menu
19970
19971 @node Active Targets
19972 @section Active Targets
19973
19974 @cindex stacking targets
19975 @cindex active targets
19976 @cindex multiple targets
19977
19978 There are multiple classes of targets such as: processes, executable files or
19979 recording sessions. Core files belong to the process class, making core file
19980 and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently
19981 on multiple active targets, one in each class. This allows you to (for
19982 example) start a process and inspect its activity, while still having access to
19983 the executable file after the process finishes. Or if you start process
19984 recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are
19985 presented a virtual layer of the recording target, while the process target
19986 remains stopped at the chronologically last point of the process execution.
19987
19988 Use the @code{core-file} and @code{exec-file} commands to select a new core
19989 file or executable target (@pxref{Files, ,Commands to Specify Files}). To
19990 specify as a target a process that is already running, use the @code{attach}
19991 command (@pxref{Attach, ,Debugging an Already-running Process}).
19992
19993 @node Target Commands
19994 @section Commands for Managing Targets
19995
19996 @table @code
19997 @item target @var{type} @var{parameters}
19998 Connects the @value{GDBN} host environment to a target machine or
19999 process. A target is typically a protocol for talking to debugging
20000 facilities. You use the argument @var{type} to specify the type or
20001 protocol of the target machine.
20002
20003 Further @var{parameters} are interpreted by the target protocol, but
20004 typically include things like device names or host names to connect
20005 with, process numbers, and baud rates.
20006
20007 The @code{target} command does not repeat if you press @key{RET} again
20008 after executing the command.
20009
20010 @kindex help target
20011 @item help target
20012 Displays the names of all targets available. To display targets
20013 currently selected, use either @code{info target} or @code{info files}
20014 (@pxref{Files, ,Commands to Specify Files}).
20015
20016 @item help target @var{name}
20017 Describe a particular target, including any parameters necessary to
20018 select it.
20019
20020 @kindex set gnutarget
20021 @item set gnutarget @var{args}
20022 @value{GDBN} uses its own library BFD to read your files. @value{GDBN}
20023 knows whether it is reading an @dfn{executable},
20024 a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
20025 with the @code{set gnutarget} command. Unlike most @code{target} commands,
20026 with @code{gnutarget} the @code{target} refers to a program, not a machine.
20027
20028 @quotation
20029 @emph{Warning:} To specify a file format with @code{set gnutarget},
20030 you must know the actual BFD name.
20031 @end quotation
20032
20033 @noindent
20034 @xref{Files, , Commands to Specify Files}.
20035
20036 @kindex show gnutarget
20037 @item show gnutarget
20038 Use the @code{show gnutarget} command to display what file format
20039 @code{gnutarget} is set to read. If you have not set @code{gnutarget},
20040 @value{GDBN} will determine the file format for each file automatically,
20041 and @code{show gnutarget} displays @samp{The current BFD target is "auto"}.
20042 @end table
20043
20044 @cindex common targets
20045 Here are some common targets (available, or not, depending on the GDB
20046 configuration):
20047
20048 @table @code
20049 @kindex target
20050 @item target exec @var{program}
20051 @cindex executable file target
20052 An executable file. @samp{target exec @var{program}} is the same as
20053 @samp{exec-file @var{program}}.
20054
20055 @item target core @var{filename}
20056 @cindex core dump file target
20057 A core dump file. @samp{target core @var{filename}} is the same as
20058 @samp{core-file @var{filename}}.
20059
20060 @item target remote @var{medium}
20061 @cindex remote target
20062 A remote system connected to @value{GDBN} via a serial line or network
20063 connection. This command tells @value{GDBN} to use its own remote
20064 protocol over @var{medium} for debugging. @xref{Remote Debugging}.
20065
20066 For example, if you have a board connected to @file{/dev/ttya} on the
20067 machine running @value{GDBN}, you could say:
20068
20069 @smallexample
20070 target remote /dev/ttya
20071 @end smallexample
20072
20073 @code{target remote} supports the @code{load} command. This is only
20074 useful if you have some other way of getting the stub to the target
20075 system, and you can put it somewhere in memory where it won't get
20076 clobbered by the download.
20077
20078 @item target sim @r{[}@var{simargs}@r{]} @dots{}
20079 @cindex built-in simulator target
20080 Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
20081 In general,
20082 @smallexample
20083 target sim
20084 load
20085 run
20086 @end smallexample
20087 @noindent
20088 works; however, you cannot assume that a specific memory map, device
20089 drivers, or even basic I/O is available, although some simulators do
20090 provide these. For info about any processor-specific simulator details,
20091 see the appropriate section in @ref{Embedded Processors, ,Embedded
20092 Processors}.
20093
20094 @item target native
20095 @cindex native target
20096 Setup for local/native process debugging. Useful to make the
20097 @code{run} command spawn native processes (likewise @code{attach},
20098 etc.@:) even when @code{set auto-connect-native-target} is @code{off}
20099 (@pxref{set auto-connect-native-target}).
20100
20101 @end table
20102
20103 Different targets are available on different configurations of @value{GDBN};
20104 your configuration may have more or fewer targets.
20105
20106 Many remote targets require you to download the executable's code once
20107 you've successfully established a connection. You may wish to control
20108 various aspects of this process.
20109
20110 @table @code
20111
20112 @item set hash
20113 @kindex set hash@r{, for remote monitors}
20114 @cindex hash mark while downloading
20115 This command controls whether a hash mark @samp{#} is displayed while
20116 downloading a file to the remote monitor. If on, a hash mark is
20117 displayed after each S-record is successfully downloaded to the
20118 monitor.
20119
20120 @item show hash
20121 @kindex show hash@r{, for remote monitors}
20122 Show the current status of displaying the hash mark.
20123
20124 @item set debug monitor
20125 @kindex set debug monitor
20126 @cindex display remote monitor communications
20127 Enable or disable display of communications messages between
20128 @value{GDBN} and the remote monitor.
20129
20130 @item show debug monitor
20131 @kindex show debug monitor
20132 Show the current status of displaying communications between
20133 @value{GDBN} and the remote monitor.
20134 @end table
20135
20136 @table @code
20137
20138 @kindex load @var{filename} @var{offset}
20139 @item load @var{filename} @var{offset}
20140 @anchor{load}
20141 Depending on what remote debugging facilities are configured into
20142 @value{GDBN}, the @code{load} command may be available. Where it exists, it
20143 is meant to make @var{filename} (an executable) available for debugging
20144 on the remote system---by downloading, or dynamic linking, for example.
20145 @code{load} also records the @var{filename} symbol table in @value{GDBN}, like
20146 the @code{add-symbol-file} command.
20147
20148 If your @value{GDBN} does not have a @code{load} command, attempting to
20149 execute it gets the error message ``@code{You can't do that when your
20150 target is @dots{}}''
20151
20152 The file is loaded at whatever address is specified in the executable.
20153 For some object file formats, you can specify the load address when you
20154 link the program; for other formats, like a.out, the object file format
20155 specifies a fixed address.
20156 @c FIXME! This would be a good place for an xref to the GNU linker doc.
20157
20158 It is also possible to tell @value{GDBN} to load the executable file at a
20159 specific offset described by the optional argument @var{offset}. When
20160 @var{offset} is provided, @var{filename} must also be provided.
20161
20162 Depending on the remote side capabilities, @value{GDBN} may be able to
20163 load programs into flash memory.
20164
20165 @code{load} does not repeat if you press @key{RET} again after using it.
20166 @end table
20167
20168 @table @code
20169
20170 @kindex flash-erase
20171 @item flash-erase
20172 @anchor{flash-erase}
20173
20174 Erases all known flash memory regions on the target.
20175
20176 @end table
20177
20178 @node Byte Order
20179 @section Choosing Target Byte Order
20180
20181 @cindex choosing target byte order
20182 @cindex target byte order
20183
20184 Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH,
20185 offer the ability to run either big-endian or little-endian byte
20186 orders. Usually the executable or symbol will include a bit to
20187 designate the endian-ness, and you will not need to worry about
20188 which to use. However, you may still find it useful to adjust
20189 @value{GDBN}'s idea of processor endian-ness manually.
20190
20191 @table @code
20192 @kindex set endian
20193 @item set endian big
20194 Instruct @value{GDBN} to assume the target is big-endian.
20195
20196 @item set endian little
20197 Instruct @value{GDBN} to assume the target is little-endian.
20198
20199 @item set endian auto
20200 Instruct @value{GDBN} to use the byte order associated with the
20201 executable.
20202
20203 @item show endian
20204 Display @value{GDBN}'s current idea of the target byte order.
20205
20206 @end table
20207
20208 Note that these commands merely adjust interpretation of symbolic
20209 data on the host, and that they have absolutely no effect on the
20210 target system.
20211
20212
20213 @node Remote Debugging
20214 @chapter Debugging Remote Programs
20215 @cindex remote debugging
20216
20217 If you are trying to debug a program running on a machine that cannot run
20218 @value{GDBN} in the usual way, it is often useful to use remote debugging.
20219 For example, you might use remote debugging on an operating system kernel,
20220 or on a small system which does not have a general purpose operating system
20221 powerful enough to run a full-featured debugger.
20222
20223 Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
20224 to make this work with particular debugging targets. In addition,
20225 @value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
20226 but not specific to any particular target system) which you can use if you
20227 write the remote stubs---the code that runs on the remote system to
20228 communicate with @value{GDBN}.
20229
20230 Other remote targets may be available in your
20231 configuration of @value{GDBN}; use @code{help target} to list them.
20232
20233 @menu
20234 * Connecting:: Connecting to a remote target
20235 * File Transfer:: Sending files to a remote system
20236 * Server:: Using the gdbserver program
20237 * Remote Configuration:: Remote configuration
20238 * Remote Stub:: Implementing a remote stub
20239 @end menu
20240
20241 @node Connecting
20242 @section Connecting to a Remote Target
20243 @cindex remote debugging, connecting
20244 @cindex @code{gdbserver}, connecting
20245 @cindex remote debugging, types of connections
20246 @cindex @code{gdbserver}, types of connections
20247 @cindex @code{gdbserver}, @code{target remote} mode
20248 @cindex @code{gdbserver}, @code{target extended-remote} mode
20249
20250 This section describes how to connect to a remote target, including the
20251 types of connections and their differences, how to set up executable and
20252 symbol files on the host and target, and the commands used for
20253 connecting to and disconnecting from the remote target.
20254
20255 @subsection Types of Remote Connections
20256
20257 @value{GDBN} supports two types of remote connections, @code{target remote}
20258 mode and @code{target extended-remote} mode. Note that many remote targets
20259 support only @code{target remote} mode. There are several major
20260 differences between the two types of connections, enumerated here:
20261
20262 @table @asis
20263
20264 @cindex remote debugging, detach and program exit
20265 @item Result of detach or program exit
20266 @strong{With target remote mode:} When the debugged program exits or you
20267 detach from it, @value{GDBN} disconnects from the target. When using
20268 @code{gdbserver}, @code{gdbserver} will exit.
20269
20270 @strong{With target extended-remote mode:} When the debugged program exits or
20271 you detach from it, @value{GDBN} remains connected to the target, even
20272 though no program is running. You can rerun the program, attach to a
20273 running program, or use @code{monitor} commands specific to the target.
20274
20275 When using @code{gdbserver} in this case, it does not exit unless it was
20276 invoked using the @option{--once} option. If the @option{--once} option
20277 was not used, you can ask @code{gdbserver} to exit using the
20278 @code{monitor exit} command (@pxref{Monitor Commands for gdbserver}).
20279
20280 @item Specifying the program to debug
20281 For both connection types you use the @code{file} command to specify the
20282 program on the host system. If you are using @code{gdbserver} there are
20283 some differences in how to specify the location of the program on the
20284 target.
20285
20286 @strong{With target remote mode:} You must either specify the program to debug
20287 on the @code{gdbserver} command line or use the @option{--attach} option
20288 (@pxref{Attaching to a program,,Attaching to a Running Program}).
20289
20290 @cindex @option{--multi}, @code{gdbserver} option
20291 @strong{With target extended-remote mode:} You may specify the program to debug
20292 on the @code{gdbserver} command line, or you can load the program or attach
20293 to it using @value{GDBN} commands after connecting to @code{gdbserver}.
20294
20295 @anchor{--multi Option in Types of Remote Connnections}
20296 You can start @code{gdbserver} without supplying an initial command to run
20297 or process ID to attach. To do this, use the @option{--multi} command line
20298 option. Then you can connect using @code{target extended-remote} and start
20299 the program you want to debug (see below for details on using the
20300 @code{run} command in this scenario). Note that the conditions under which
20301 @code{gdbserver} terminates depend on how @value{GDBN} connects to it
20302 (@code{target remote} or @code{target extended-remote}). The
20303 @option{--multi} option to @code{gdbserver} has no influence on that.
20304
20305 @item The @code{run} command
20306 @strong{With target remote mode:} The @code{run} command is not
20307 supported. Once a connection has been established, you can use all
20308 the usual @value{GDBN} commands to examine and change data. The
20309 remote program is already running, so you can use commands like
20310 @kbd{step} and @kbd{continue}.
20311
20312 @strong{With target extended-remote mode:} The @code{run} command is
20313 supported. The @code{run} command uses the value set by
20314 @code{set remote exec-file} (@pxref{set remote exec-file}) to select
20315 the program to run. Command line arguments are supported, except for
20316 wildcard expansion and I/O redirection (@pxref{Arguments}).
20317
20318 If you specify the program to debug on the command line, then the
20319 @code{run} command is not required to start execution, and you can
20320 resume using commands like @kbd{step} and @kbd{continue} as with
20321 @code{target remote} mode.
20322
20323 @anchor{Attaching in Types of Remote Connections}
20324 @item Attaching
20325 @strong{With target remote mode:} The @value{GDBN} command @code{attach} is
20326 not supported. To attach to a running program using @code{gdbserver}, you
20327 must use the @option{--attach} option (@pxref{Running gdbserver}).
20328
20329 @strong{With target extended-remote mode:} To attach to a running program,
20330 you may use the @code{attach} command after the connection has been
20331 established. If you are using @code{gdbserver}, you may also invoke
20332 @code{gdbserver} using the @option{--attach} option
20333 (@pxref{Running gdbserver}).
20334
20335 @end table
20336
20337 @anchor{Host and target files}
20338 @subsection Host and Target Files
20339 @cindex remote debugging, symbol files
20340 @cindex symbol files, remote debugging
20341
20342 @value{GDBN}, running on the host, needs access to symbol and debugging
20343 information for your program running on the target. This requires
20344 access to an unstripped copy of your program, and possibly any associated
20345 symbol files. Note that this section applies equally to both @code{target
20346 remote} mode and @code{target extended-remote} mode.
20347
20348 Some remote targets (@pxref{qXfer executable filename read}, and
20349 @pxref{Host I/O Packets}) allow @value{GDBN} to access program files over
20350 the same connection used to communicate with @value{GDBN}. With such a
20351 target, if the remote program is unstripped, the only command you need is
20352 @code{target remote} (or @code{target extended-remote}).
20353
20354 If the remote program is stripped, or the target does not support remote
20355 program file access, start up @value{GDBN} using the name of the local
20356 unstripped copy of your program as the first argument, or use the
20357 @code{file} command. Use @code{set sysroot} to specify the location (on
20358 the host) of target libraries (unless your @value{GDBN} was compiled with
20359 the correct sysroot using @code{--with-sysroot}). Alternatively, you
20360 may use @code{set solib-search-path} to specify how @value{GDBN} locates
20361 target libraries.
20362
20363 The symbol file and target libraries must exactly match the executable
20364 and libraries on the target, with one exception: the files on the host
20365 system should not be stripped, even if the files on the target system
20366 are. Mismatched or missing files will lead to confusing results
20367 during debugging. On @sc{gnu}/Linux targets, mismatched or missing
20368 files may also prevent @code{gdbserver} from debugging multi-threaded
20369 programs.
20370
20371 @subsection Remote Connection Commands
20372 @cindex remote connection commands
20373 @value{GDBN} can communicate with the target over a serial line, or
20374 over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
20375 each case, @value{GDBN} uses the same protocol for debugging your
20376 program; only the medium carrying the debugging packets varies. The
20377 @code{target remote} and @code{target extended-remote} commands
20378 establish a connection to the target. Both commands accept the same
20379 arguments, which indicate the medium to use:
20380
20381 @table @code
20382
20383 @item target remote @var{serial-device}
20384 @itemx target extended-remote @var{serial-device}
20385 @cindex serial line, @code{target remote}
20386 Use @var{serial-device} to communicate with the target. For example,
20387 to use a serial line connected to the device named @file{/dev/ttyb}:
20388
20389 @smallexample
20390 target remote /dev/ttyb
20391 @end smallexample
20392
20393 If you're using a serial line, you may want to give @value{GDBN} the
20394 @samp{--baud} option, or use the @code{set serial baud} command
20395 (@pxref{Remote Configuration, set serial baud}) before the
20396 @code{target} command.
20397
20398 @item target remote @code{@var{host}:@var{port}}
20399 @itemx target remote @code{tcp:@var{host}:@var{port}}
20400 @itemx target extended-remote @code{@var{host}:@var{port}}
20401 @itemx target extended-remote @code{tcp:@var{host}:@var{port}}
20402 @cindex @acronym{TCP} port, @code{target remote}
20403 Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
20404 The @var{host} may be either a host name or a numeric @acronym{IP}
20405 address; @var{port} must be a decimal number. The @var{host} could be
20406 the target machine itself, if it is directly connected to the net, or
20407 it might be a terminal server which in turn has a serial line to the
20408 target.
20409
20410 For example, to connect to port 2828 on a terminal server named
20411 @code{manyfarms}:
20412
20413 @smallexample
20414 target remote manyfarms:2828
20415 @end smallexample
20416
20417 If your remote target is actually running on the same machine as your
20418 debugger session (e.g.@: a simulator for your target running on the
20419 same host), you can omit the hostname. For example, to connect to
20420 port 1234 on your local machine:
20421
20422 @smallexample
20423 target remote :1234
20424 @end smallexample
20425 @noindent
20426
20427 Note that the colon is still required here.
20428
20429 @item target remote @code{udp:@var{host}:@var{port}}
20430 @itemx target extended-remote @code{udp:@var{host}:@var{port}}
20431 @cindex @acronym{UDP} port, @code{target remote}
20432 Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
20433 connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
20434
20435 @smallexample
20436 target remote udp:manyfarms:2828
20437 @end smallexample
20438
20439 When using a @acronym{UDP} connection for remote debugging, you should
20440 keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
20441 can silently drop packets on busy or unreliable networks, which will
20442 cause havoc with your debugging session.
20443
20444 @item target remote | @var{command}
20445 @itemx target extended-remote | @var{command}
20446 @cindex pipe, @code{target remote} to
20447 Run @var{command} in the background and communicate with it using a
20448 pipe. The @var{command} is a shell command, to be parsed and expanded
20449 by the system's command shell, @code{/bin/sh}; it should expect remote
20450 protocol packets on its standard input, and send replies on its
20451 standard output. You could use this to run a stand-alone simulator
20452 that speaks the remote debugging protocol, to make net connections
20453 using programs like @code{ssh}, or for other similar tricks.
20454
20455 If @var{command} closes its standard output (perhaps by exiting),
20456 @value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
20457 program has already exited, this will have no effect.)
20458
20459 @end table
20460
20461 @cindex interrupting remote programs
20462 @cindex remote programs, interrupting
20463 Whenever @value{GDBN} is waiting for the remote program, if you type the
20464 interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
20465 program. This may or may not succeed, depending in part on the hardware
20466 and the serial drivers the remote system uses. If you type the
20467 interrupt character once again, @value{GDBN} displays this prompt:
20468
20469 @smallexample
20470 Interrupted while waiting for the program.
20471 Give up (and stop debugging it)? (y or n)
20472 @end smallexample
20473
20474 In @code{target remote} mode, if you type @kbd{y}, @value{GDBN} abandons
20475 the remote debugging session. (If you decide you want to try again later,
20476 you can use @kbd{target remote} again to connect once more.) If you type
20477 @kbd{n}, @value{GDBN} goes back to waiting.
20478
20479 In @code{target extended-remote} mode, typing @kbd{n} will leave
20480 @value{GDBN} connected to the target.
20481
20482 @table @code
20483 @kindex detach (remote)
20484 @item detach
20485 When you have finished debugging the remote program, you can use the
20486 @code{detach} command to release it from @value{GDBN} control.
20487 Detaching from the target normally resumes its execution, but the results
20488 will depend on your particular remote stub. After the @code{detach}
20489 command in @code{target remote} mode, @value{GDBN} is free to connect to
20490 another target. In @code{target extended-remote} mode, @value{GDBN} is
20491 still connected to the target.
20492
20493 @kindex disconnect
20494 @item disconnect
20495 The @code{disconnect} command closes the connection to the target, and
20496 the target is generally not resumed. It will wait for @value{GDBN}
20497 (this instance or another one) to connect and continue debugging. After
20498 the @code{disconnect} command, @value{GDBN} is again free to connect to
20499 another target.
20500
20501 @cindex send command to remote monitor
20502 @cindex extend @value{GDBN} for remote targets
20503 @cindex add new commands for external monitor
20504 @kindex monitor
20505 @item monitor @var{cmd}
20506 This command allows you to send arbitrary commands directly to the
20507 remote monitor. Since @value{GDBN} doesn't care about the commands it
20508 sends like this, this command is the way to extend @value{GDBN}---you
20509 can add new commands that only the external monitor will understand
20510 and implement.
20511 @end table
20512
20513 @node File Transfer
20514 @section Sending files to a remote system
20515 @cindex remote target, file transfer
20516 @cindex file transfer
20517 @cindex sending files to remote systems
20518
20519 Some remote targets offer the ability to transfer files over the same
20520 connection used to communicate with @value{GDBN}. This is convenient
20521 for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
20522 running @code{gdbserver} over a network interface. For other targets,
20523 e.g.@: embedded devices with only a single serial port, this may be
20524 the only way to upload or download files.
20525
20526 Not all remote targets support these commands.
20527
20528 @table @code
20529 @kindex remote put
20530 @item remote put @var{hostfile} @var{targetfile}
20531 Copy file @var{hostfile} from the host system (the machine running
20532 @value{GDBN}) to @var{targetfile} on the target system.
20533
20534 @kindex remote get
20535 @item remote get @var{targetfile} @var{hostfile}
20536 Copy file @var{targetfile} from the target system to @var{hostfile}
20537 on the host system.
20538
20539 @kindex remote delete
20540 @item remote delete @var{targetfile}
20541 Delete @var{targetfile} from the target system.
20542
20543 @end table
20544
20545 @node Server
20546 @section Using the @code{gdbserver} Program
20547
20548 @kindex gdbserver
20549 @cindex remote connection without stubs
20550 @code{gdbserver} is a control program for Unix-like systems, which
20551 allows you to connect your program with a remote @value{GDBN} via
20552 @code{target remote} or @code{target extended-remote}---but without
20553 linking in the usual debugging stub.
20554
20555 @code{gdbserver} is not a complete replacement for the debugging stubs,
20556 because it requires essentially the same operating-system facilities
20557 that @value{GDBN} itself does. In fact, a system that can run
20558 @code{gdbserver} to connect to a remote @value{GDBN} could also run
20559 @value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
20560 because it is a much smaller program than @value{GDBN} itself. It is
20561 also easier to port than all of @value{GDBN}, so you may be able to get
20562 started more quickly on a new system by using @code{gdbserver}.
20563 Finally, if you develop code for real-time systems, you may find that
20564 the tradeoffs involved in real-time operation make it more convenient to
20565 do as much development work as possible on another system, for example
20566 by cross-compiling. You can use @code{gdbserver} to make a similar
20567 choice for debugging.
20568
20569 @value{GDBN} and @code{gdbserver} communicate via either a serial line
20570 or a TCP connection, using the standard @value{GDBN} remote serial
20571 protocol.
20572
20573 @quotation
20574 @emph{Warning:} @code{gdbserver} does not have any built-in security.
20575 Do not run @code{gdbserver} connected to any public network; a
20576 @value{GDBN} connection to @code{gdbserver} provides access to the
20577 target system with the same privileges as the user running
20578 @code{gdbserver}.
20579 @end quotation
20580
20581 @anchor{Running gdbserver}
20582 @subsection Running @code{gdbserver}
20583 @cindex arguments, to @code{gdbserver}
20584 @cindex @code{gdbserver}, command-line arguments
20585
20586 Run @code{gdbserver} on the target system. You need a copy of the
20587 program you want to debug, including any libraries it requires.
20588 @code{gdbserver} does not need your program's symbol table, so you can
20589 strip the program if necessary to save space. @value{GDBN} on the host
20590 system does all the symbol handling.
20591
20592 To use the server, you must tell it how to communicate with @value{GDBN};
20593 the name of your program; and the arguments for your program. The usual
20594 syntax is:
20595
20596 @smallexample
20597 target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
20598 @end smallexample
20599
20600 @var{comm} is either a device name (to use a serial line), or a TCP
20601 hostname and portnumber, or @code{-} or @code{stdio} to use
20602 stdin/stdout of @code{gdbserver}.
20603 For example, to debug Emacs with the argument
20604 @samp{foo.txt} and communicate with @value{GDBN} over the serial port
20605 @file{/dev/com1}:
20606
20607 @smallexample
20608 target> gdbserver /dev/com1 emacs foo.txt
20609 @end smallexample
20610
20611 @code{gdbserver} waits passively for the host @value{GDBN} to communicate
20612 with it.
20613
20614 To use a TCP connection instead of a serial line:
20615
20616 @smallexample
20617 target> gdbserver host:2345 emacs foo.txt
20618 @end smallexample
20619
20620 The only difference from the previous example is the first argument,
20621 specifying that you are communicating with the host @value{GDBN} via
20622 TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
20623 expect a TCP connection from machine @samp{host} to local TCP port 2345.
20624 (Currently, the @samp{host} part is ignored.) You can choose any number
20625 you want for the port number as long as it does not conflict with any
20626 TCP ports already in use on the target system (for example, @code{23} is
20627 reserved for @code{telnet}).@footnote{If you choose a port number that
20628 conflicts with another service, @code{gdbserver} prints an error message
20629 and exits.} You must use the same port number with the host @value{GDBN}
20630 @code{target remote} command.
20631
20632 The @code{stdio} connection is useful when starting @code{gdbserver}
20633 with ssh:
20634
20635 @smallexample
20636 (gdb) target remote | ssh -T hostname gdbserver - hello
20637 @end smallexample
20638
20639 The @samp{-T} option to ssh is provided because we don't need a remote pty,
20640 and we don't want escape-character handling. Ssh does this by default when
20641 a command is provided, the flag is provided to make it explicit.
20642 You could elide it if you want to.
20643
20644 Programs started with stdio-connected gdbserver have @file{/dev/null} for
20645 @code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for
20646 display through a pipe connected to gdbserver.
20647 Both @code{stdout} and @code{stderr} use the same pipe.
20648
20649 @anchor{Attaching to a program}
20650 @subsubsection Attaching to a Running Program
20651 @cindex attach to a program, @code{gdbserver}
20652 @cindex @option{--attach}, @code{gdbserver} option
20653
20654 On some targets, @code{gdbserver} can also attach to running programs.
20655 This is accomplished via the @code{--attach} argument. The syntax is:
20656
20657 @smallexample
20658 target> gdbserver --attach @var{comm} @var{pid}
20659 @end smallexample
20660
20661 @var{pid} is the process ID of a currently running process. It isn't
20662 necessary to point @code{gdbserver} at a binary for the running process.
20663
20664 In @code{target extended-remote} mode, you can also attach using the
20665 @value{GDBN} attach command
20666 (@pxref{Attaching in Types of Remote Connections}).
20667
20668 @pindex pidof
20669 You can debug processes by name instead of process ID if your target has the
20670 @code{pidof} utility:
20671
20672 @smallexample
20673 target> gdbserver --attach @var{comm} `pidof @var{program}`
20674 @end smallexample
20675
20676 In case more than one copy of @var{program} is running, or @var{program}
20677 has multiple threads, most versions of @code{pidof} support the
20678 @code{-s} option to only return the first process ID.
20679
20680 @subsubsection TCP port allocation lifecycle of @code{gdbserver}
20681
20682 This section applies only when @code{gdbserver} is run to listen on a TCP
20683 port.
20684
20685 @code{gdbserver} normally terminates after all of its debugged processes have
20686 terminated in @kbd{target remote} mode. On the other hand, for @kbd{target
20687 extended-remote}, @code{gdbserver} stays running even with no processes left.
20688 @value{GDBN} normally terminates the spawned debugged process on its exit,
20689 which normally also terminates @code{gdbserver} in the @kbd{target remote}
20690 mode. Therefore, when the connection drops unexpectedly, and @value{GDBN}
20691 cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver}
20692 stays running even in the @kbd{target remote} mode.
20693
20694 When @code{gdbserver} stays running, @value{GDBN} can connect to it again later.
20695 Such reconnecting is useful for features like @ref{disconnected tracing}. For
20696 completeness, at most one @value{GDBN} can be connected at a time.
20697
20698 @cindex @option{--once}, @code{gdbserver} option
20699 By default, @code{gdbserver} keeps the listening TCP port open, so that
20700 subsequent connections are possible. However, if you start @code{gdbserver}
20701 with the @option{--once} option, it will stop listening for any further
20702 connection attempts after connecting to the first @value{GDBN} session. This
20703 means no further connections to @code{gdbserver} will be possible after the
20704 first one. It also means @code{gdbserver} will terminate after the first
20705 connection with remote @value{GDBN} has closed, even for unexpectedly closed
20706 connections and even in the @kbd{target extended-remote} mode. The
20707 @option{--once} option allows reusing the same port number for connecting to
20708 multiple instances of @code{gdbserver} running on the same host, since each
20709 instance closes its port after the first connection.
20710
20711 @anchor{Other Command-Line Arguments for gdbserver}
20712 @subsubsection Other Command-Line Arguments for @code{gdbserver}
20713
20714 You can use the @option{--multi} option to start @code{gdbserver} without
20715 specifying a program to debug or a process to attach to. Then you can
20716 attach in @code{target extended-remote} mode and run or attach to a
20717 program. For more information,
20718 @pxref{--multi Option in Types of Remote Connnections}.
20719
20720 @cindex @option{--debug}, @code{gdbserver} option
20721 The @option{--debug} option tells @code{gdbserver} to display extra
20722 status information about the debugging process.
20723 @cindex @option{--remote-debug}, @code{gdbserver} option
20724 The @option{--remote-debug} option tells @code{gdbserver} to display
20725 remote protocol debug output. These options are intended for
20726 @code{gdbserver} development and for bug reports to the developers.
20727
20728 @cindex @option{--debug-format}, @code{gdbserver} option
20729 The @option{--debug-format=option1[,option2,...]} option tells
20730 @code{gdbserver} to include additional information in each output.
20731 Possible options are:
20732
20733 @table @code
20734 @item none
20735 Turn off all extra information in debugging output.
20736 @item all
20737 Turn on all extra information in debugging output.
20738 @item timestamps
20739 Include a timestamp in each line of debugging output.
20740 @end table
20741
20742 Options are processed in order. Thus, for example, if @option{none}
20743 appears last then no additional information is added to debugging output.
20744
20745 @cindex @option{--wrapper}, @code{gdbserver} option
20746 The @option{--wrapper} option specifies a wrapper to launch programs
20747 for debugging. The option should be followed by the name of the
20748 wrapper, then any command-line arguments to pass to the wrapper, then
20749 @kbd{--} indicating the end of the wrapper arguments.
20750
20751 @code{gdbserver} runs the specified wrapper program with a combined
20752 command line including the wrapper arguments, then the name of the
20753 program to debug, then any arguments to the program. The wrapper
20754 runs until it executes your program, and then @value{GDBN} gains control.
20755
20756 You can use any program that eventually calls @code{execve} with
20757 its arguments as a wrapper. Several standard Unix utilities do
20758 this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
20759 with @code{exec "$@@"} will also work.
20760
20761 For example, you can use @code{env} to pass an environment variable to
20762 the debugged program, without setting the variable in @code{gdbserver}'s
20763 environment:
20764
20765 @smallexample
20766 $ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
20767 @end smallexample
20768
20769 @cindex @option{--selftest}
20770 The @option{--selftest} option runs the self tests in @code{gdbserver}:
20771
20772 @smallexample
20773 $ gdbserver --selftest
20774 Ran 2 unit tests, 0 failed
20775 @end smallexample
20776
20777 These tests are disabled in release.
20778 @subsection Connecting to @code{gdbserver}
20779
20780 The basic procedure for connecting to the remote target is:
20781 @itemize
20782
20783 @item
20784 Run @value{GDBN} on the host system.
20785
20786 @item
20787 Make sure you have the necessary symbol files
20788 (@pxref{Host and target files}).
20789 Load symbols for your application using the @code{file} command before you
20790 connect. Use @code{set sysroot} to locate target libraries (unless your
20791 @value{GDBN} was compiled with the correct sysroot using
20792 @code{--with-sysroot}).
20793
20794 @item
20795 Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
20796 For TCP connections, you must start up @code{gdbserver} prior to using
20797 the @code{target} command. Otherwise you may get an error whose
20798 text depends on the host system, but which usually looks something like
20799 @samp{Connection refused}. Don't use the @code{load}
20800 command in @value{GDBN} when using @code{target remote} mode, since the
20801 program is already on the target.
20802
20803 @end itemize
20804
20805 @anchor{Monitor Commands for gdbserver}
20806 @subsection Monitor Commands for @code{gdbserver}
20807 @cindex monitor commands, for @code{gdbserver}
20808
20809 During a @value{GDBN} session using @code{gdbserver}, you can use the
20810 @code{monitor} command to send special requests to @code{gdbserver}.
20811 Here are the available commands.
20812
20813 @table @code
20814 @item monitor help
20815 List the available monitor commands.
20816
20817 @item monitor set debug 0
20818 @itemx monitor set debug 1
20819 Disable or enable general debugging messages.
20820
20821 @item monitor set remote-debug 0
20822 @itemx monitor set remote-debug 1
20823 Disable or enable specific debugging messages associated with the remote
20824 protocol (@pxref{Remote Protocol}).
20825
20826 @item monitor set debug-format option1@r{[},option2,...@r{]}
20827 Specify additional text to add to debugging messages.
20828 Possible options are:
20829
20830 @table @code
20831 @item none
20832 Turn off all extra information in debugging output.
20833 @item all
20834 Turn on all extra information in debugging output.
20835 @item timestamps
20836 Include a timestamp in each line of debugging output.
20837 @end table
20838
20839 Options are processed in order. Thus, for example, if @option{none}
20840 appears last then no additional information is added to debugging output.
20841
20842 @item monitor set libthread-db-search-path [PATH]
20843 @cindex gdbserver, search path for @code{libthread_db}
20844 When this command is issued, @var{path} is a colon-separated list of
20845 directories to search for @code{libthread_db} (@pxref{Threads,,set
20846 libthread-db-search-path}). If you omit @var{path},
20847 @samp{libthread-db-search-path} will be reset to its default value.
20848
20849 The special entry @samp{$pdir} for @samp{libthread-db-search-path} is
20850 not supported in @code{gdbserver}.
20851
20852 @item monitor exit
20853 Tell gdbserver to exit immediately. This command should be followed by
20854 @code{disconnect} to close the debugging session. @code{gdbserver} will
20855 detach from any attached processes and kill any processes it created.
20856 Use @code{monitor exit} to terminate @code{gdbserver} at the end
20857 of a multi-process mode debug session.
20858
20859 @end table
20860
20861 @subsection Tracepoints support in @code{gdbserver}
20862 @cindex tracepoints support in @code{gdbserver}
20863
20864 On some targets, @code{gdbserver} supports tracepoints, fast
20865 tracepoints and static tracepoints.
20866
20867 For fast or static tracepoints to work, a special library called the
20868 @dfn{in-process agent} (IPA), must be loaded in the inferior process.
20869 This library is built and distributed as an integral part of
20870 @code{gdbserver}. In addition, support for static tracepoints
20871 requires building the in-process agent library with static tracepoints
20872 support. At present, the UST (LTTng Userspace Tracer,
20873 @url{http://lttng.org/ust}) tracing engine is supported. This support
20874 is automatically available if UST development headers are found in the
20875 standard include path when @code{gdbserver} is built, or if
20876 @code{gdbserver} was explicitly configured using @option{--with-ust}
20877 to point at such headers. You can explicitly disable the support
20878 using @option{--with-ust=no}.
20879
20880 There are several ways to load the in-process agent in your program:
20881
20882 @table @code
20883 @item Specifying it as dependency at link time
20884
20885 You can link your program dynamically with the in-process agent
20886 library. On most systems, this is accomplished by adding
20887 @code{-linproctrace} to the link command.
20888
20889 @item Using the system's preloading mechanisms
20890
20891 You can force loading the in-process agent at startup time by using
20892 your system's support for preloading shared libraries. Many Unixes
20893 support the concept of preloading user defined libraries. In most
20894 cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so}
20895 in the environment. See also the description of @code{gdbserver}'s
20896 @option{--wrapper} command line option.
20897
20898 @item Using @value{GDBN} to force loading the agent at run time
20899
20900 On some systems, you can force the inferior to load a shared library,
20901 by calling a dynamic loader function in the inferior that takes care
20902 of dynamically looking up and loading a shared library. On most Unix
20903 systems, the function is @code{dlopen}. You'll use the @code{call}
20904 command for that. For example:
20905
20906 @smallexample
20907 (@value{GDBP}) call dlopen ("libinproctrace.so", ...)
20908 @end smallexample
20909
20910 Note that on most Unix systems, for the @code{dlopen} function to be
20911 available, the program needs to be linked with @code{-ldl}.
20912 @end table
20913
20914 On systems that have a userspace dynamic loader, like most Unix
20915 systems, when you connect to @code{gdbserver} using @code{target
20916 remote}, you'll find that the program is stopped at the dynamic
20917 loader's entry point, and no shared library has been loaded in the
20918 program's address space yet, including the in-process agent. In that
20919 case, before being able to use any of the fast or static tracepoints
20920 features, you need to let the loader run and load the shared
20921 libraries. The simplest way to do that is to run the program to the
20922 main procedure. E.g., if debugging a C or C@t{++} program, start
20923 @code{gdbserver} like so:
20924
20925 @smallexample
20926 $ gdbserver :9999 myprogram
20927 @end smallexample
20928
20929 Start GDB and connect to @code{gdbserver} like so, and run to main:
20930
20931 @smallexample
20932 $ gdb myprogram
20933 (@value{GDBP}) target remote myhost:9999
20934 0x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2
20935 (@value{GDBP}) b main
20936 (@value{GDBP}) continue
20937 @end smallexample
20938
20939 The in-process tracing agent library should now be loaded into the
20940 process; you can confirm it with the @code{info sharedlibrary}
20941 command, which will list @file{libinproctrace.so} as loaded in the
20942 process. You are now ready to install fast tracepoints, list static
20943 tracepoint markers, probe static tracepoints markers, and start
20944 tracing.
20945
20946 @node Remote Configuration
20947 @section Remote Configuration
20948
20949 @kindex set remote
20950 @kindex show remote
20951 This section documents the configuration options available when
20952 debugging remote programs. For the options related to the File I/O
20953 extensions of the remote protocol, see @ref{system,
20954 system-call-allowed}.
20955
20956 @table @code
20957 @item set remoteaddresssize @var{bits}
20958 @cindex address size for remote targets
20959 @cindex bits in remote address
20960 Set the maximum size of address in a memory packet to the specified
20961 number of bits. @value{GDBN} will mask off the address bits above
20962 that number, when it passes addresses to the remote target. The
20963 default value is the number of bits in the target's address.
20964
20965 @item show remoteaddresssize
20966 Show the current value of remote address size in bits.
20967
20968 @item set serial baud @var{n}
20969 @cindex baud rate for remote targets
20970 Set the baud rate for the remote serial I/O to @var{n} baud. The
20971 value is used to set the speed of the serial port used for debugging
20972 remote targets.
20973
20974 @item show serial baud
20975 Show the current speed of the remote connection.
20976
20977 @item set serial parity @var{parity}
20978 Set the parity for the remote serial I/O. Supported values of @var{parity} are:
20979 @code{even}, @code{none}, and @code{odd}. The default is @code{none}.
20980
20981 @item show serial parity
20982 Show the current parity of the serial port.
20983
20984 @item set remotebreak
20985 @cindex interrupt remote programs
20986 @cindex BREAK signal instead of Ctrl-C
20987 @anchor{set remotebreak}
20988 If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
20989 when you type @kbd{Ctrl-c} to interrupt the program running
20990 on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
20991 character instead. The default is off, since most remote systems
20992 expect to see @samp{Ctrl-C} as the interrupt signal.
20993
20994 @item show remotebreak
20995 Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
20996 interrupt the remote program.
20997
20998 @item set remoteflow on
20999 @itemx set remoteflow off
21000 @kindex set remoteflow
21001 Enable or disable hardware flow control (@code{RTS}/@code{CTS})
21002 on the serial port used to communicate to the remote target.
21003
21004 @item show remoteflow
21005 @kindex show remoteflow
21006 Show the current setting of hardware flow control.
21007
21008 @item set remotelogbase @var{base}
21009 Set the base (a.k.a.@: radix) of logging serial protocol
21010 communications to @var{base}. Supported values of @var{base} are:
21011 @code{ascii}, @code{octal}, and @code{hex}. The default is
21012 @code{ascii}.
21013
21014 @item show remotelogbase
21015 Show the current setting of the radix for logging remote serial
21016 protocol.
21017
21018 @item set remotelogfile @var{file}
21019 @cindex record serial communications on file
21020 Record remote serial communications on the named @var{file}. The
21021 default is not to record at all.
21022
21023 @item show remotelogfile.
21024 Show the current setting of the file name on which to record the
21025 serial communications.
21026
21027 @item set remotetimeout @var{num}
21028 @cindex timeout for serial communications
21029 @cindex remote timeout
21030 Set the timeout limit to wait for the remote target to respond to
21031 @var{num} seconds. The default is 2 seconds.
21032
21033 @item show remotetimeout
21034 Show the current number of seconds to wait for the remote target
21035 responses.
21036
21037 @cindex limit hardware breakpoints and watchpoints
21038 @cindex remote target, limit break- and watchpoints
21039 @anchor{set remote hardware-watchpoint-limit}
21040 @anchor{set remote hardware-breakpoint-limit}
21041 @item set remote hardware-watchpoint-limit @var{limit}
21042 @itemx set remote hardware-breakpoint-limit @var{limit}
21043 Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
21044 watchpoints. A limit of -1, the default, is treated as unlimited.
21045
21046 @cindex limit hardware watchpoints length
21047 @cindex remote target, limit watchpoints length
21048 @anchor{set remote hardware-watchpoint-length-limit}
21049 @item set remote hardware-watchpoint-length-limit @var{limit}
21050 Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of
21051 a remote hardware watchpoint. A limit of -1, the default, is treated
21052 as unlimited.
21053
21054 @item show remote hardware-watchpoint-length-limit
21055 Show the current limit (in bytes) of the maximum length of
21056 a remote hardware watchpoint.
21057
21058 @item set remote exec-file @var{filename}
21059 @itemx show remote exec-file
21060 @anchor{set remote exec-file}
21061 @cindex executable file, for remote target
21062 Select the file used for @code{run} with @code{target
21063 extended-remote}. This should be set to a filename valid on the
21064 target system. If it is not set, the target will use a default
21065 filename (e.g.@: the last program run).
21066
21067 @item set remote interrupt-sequence
21068 @cindex interrupt remote programs
21069 @cindex select Ctrl-C, BREAK or BREAK-g
21070 Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
21071 @samp{BREAK-g} as the
21072 sequence to the remote target in order to interrupt the execution.
21073 @samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
21074 is high level of serial line for some certain time.
21075 Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
21076 It is @code{BREAK} signal followed by character @code{g}.
21077
21078 @item show interrupt-sequence
21079 Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
21080 is sent by @value{GDBN} to interrupt the remote program.
21081 @code{BREAK-g} is BREAK signal followed by @code{g} and
21082 also known as Magic SysRq g.
21083
21084 @item set remote interrupt-on-connect
21085 @cindex send interrupt-sequence on start
21086 Specify whether interrupt-sequence is sent to remote target when
21087 @value{GDBN} connects to it. This is mostly needed when you debug
21088 Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
21089 which is known as Magic SysRq g in order to connect @value{GDBN}.
21090
21091 @item show interrupt-on-connect
21092 Show whether interrupt-sequence is sent
21093 to remote target when @value{GDBN} connects to it.
21094
21095 @kindex set tcp
21096 @kindex show tcp
21097 @item set tcp auto-retry on
21098 @cindex auto-retry, for remote TCP target
21099 Enable auto-retry for remote TCP connections. This is useful if the remote
21100 debugging agent is launched in parallel with @value{GDBN}; there is a race
21101 condition because the agent may not become ready to accept the connection
21102 before @value{GDBN} attempts to connect. When auto-retry is
21103 enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
21104 to establish the connection using the timeout specified by
21105 @code{set tcp connect-timeout}.
21106
21107 @item set tcp auto-retry off
21108 Do not auto-retry failed TCP connections.
21109
21110 @item show tcp auto-retry
21111 Show the current auto-retry setting.
21112
21113 @item set tcp connect-timeout @var{seconds}
21114 @itemx set tcp connect-timeout unlimited
21115 @cindex connection timeout, for remote TCP target
21116 @cindex timeout, for remote target connection
21117 Set the timeout for establishing a TCP connection to the remote target to
21118 @var{seconds}. The timeout affects both polling to retry failed connections
21119 (enabled by @code{set tcp auto-retry on}) and waiting for connections
21120 that are merely slow to complete, and represents an approximate cumulative
21121 value. If @var{seconds} is @code{unlimited}, there is no timeout and
21122 @value{GDBN} will keep attempting to establish a connection forever,
21123 unless interrupted with @kbd{Ctrl-c}. The default is 15 seconds.
21124
21125 @item show tcp connect-timeout
21126 Show the current connection timeout setting.
21127 @end table
21128
21129 @cindex remote packets, enabling and disabling
21130 The @value{GDBN} remote protocol autodetects the packets supported by
21131 your debugging stub. If you need to override the autodetection, you
21132 can use these commands to enable or disable individual packets. Each
21133 packet can be set to @samp{on} (the remote target supports this
21134 packet), @samp{off} (the remote target does not support this packet),
21135 or @samp{auto} (detect remote target support for this packet). They
21136 all default to @samp{auto}. For more information about each packet,
21137 see @ref{Remote Protocol}.
21138
21139 During normal use, you should not have to use any of these commands.
21140 If you do, that may be a bug in your remote debugging stub, or a bug
21141 in @value{GDBN}. You may want to report the problem to the
21142 @value{GDBN} developers.
21143
21144 For each packet @var{name}, the command to enable or disable the
21145 packet is @code{set remote @var{name}-packet}. The available settings
21146 are:
21147
21148 @multitable @columnfractions 0.28 0.32 0.25
21149 @item Command Name
21150 @tab Remote Packet
21151 @tab Related Features
21152
21153 @item @code{fetch-register}
21154 @tab @code{p}
21155 @tab @code{info registers}
21156
21157 @item @code{set-register}
21158 @tab @code{P}
21159 @tab @code{set}
21160
21161 @item @code{binary-download}
21162 @tab @code{X}
21163 @tab @code{load}, @code{set}
21164
21165 @item @code{read-aux-vector}
21166 @tab @code{qXfer:auxv:read}
21167 @tab @code{info auxv}
21168
21169 @item @code{symbol-lookup}
21170 @tab @code{qSymbol}
21171 @tab Detecting multiple threads
21172
21173 @item @code{attach}
21174 @tab @code{vAttach}
21175 @tab @code{attach}
21176
21177 @item @code{verbose-resume}
21178 @tab @code{vCont}
21179 @tab Stepping or resuming multiple threads
21180
21181 @item @code{run}
21182 @tab @code{vRun}
21183 @tab @code{run}
21184
21185 @item @code{software-breakpoint}
21186 @tab @code{Z0}
21187 @tab @code{break}
21188
21189 @item @code{hardware-breakpoint}
21190 @tab @code{Z1}
21191 @tab @code{hbreak}
21192
21193 @item @code{write-watchpoint}
21194 @tab @code{Z2}
21195 @tab @code{watch}
21196
21197 @item @code{read-watchpoint}
21198 @tab @code{Z3}
21199 @tab @code{rwatch}
21200
21201 @item @code{access-watchpoint}
21202 @tab @code{Z4}
21203 @tab @code{awatch}
21204
21205 @item @code{pid-to-exec-file}
21206 @tab @code{qXfer:exec-file:read}
21207 @tab @code{attach}, @code{run}
21208
21209 @item @code{target-features}
21210 @tab @code{qXfer:features:read}
21211 @tab @code{set architecture}
21212
21213 @item @code{library-info}
21214 @tab @code{qXfer:libraries:read}
21215 @tab @code{info sharedlibrary}
21216
21217 @item @code{memory-map}
21218 @tab @code{qXfer:memory-map:read}
21219 @tab @code{info mem}
21220
21221 @item @code{read-sdata-object}
21222 @tab @code{qXfer:sdata:read}
21223 @tab @code{print $_sdata}
21224
21225 @item @code{read-spu-object}
21226 @tab @code{qXfer:spu:read}
21227 @tab @code{info spu}
21228
21229 @item @code{write-spu-object}
21230 @tab @code{qXfer:spu:write}
21231 @tab @code{info spu}
21232
21233 @item @code{read-siginfo-object}
21234 @tab @code{qXfer:siginfo:read}
21235 @tab @code{print $_siginfo}
21236
21237 @item @code{write-siginfo-object}
21238 @tab @code{qXfer:siginfo:write}
21239 @tab @code{set $_siginfo}
21240
21241 @item @code{threads}
21242 @tab @code{qXfer:threads:read}
21243 @tab @code{info threads}
21244
21245 @item @code{get-thread-local-@*storage-address}
21246 @tab @code{qGetTLSAddr}
21247 @tab Displaying @code{__thread} variables
21248
21249 @item @code{get-thread-information-block-address}
21250 @tab @code{qGetTIBAddr}
21251 @tab Display MS-Windows Thread Information Block.
21252
21253 @item @code{search-memory}
21254 @tab @code{qSearch:memory}
21255 @tab @code{find}
21256
21257 @item @code{supported-packets}
21258 @tab @code{qSupported}
21259 @tab Remote communications parameters
21260
21261 @item @code{catch-syscalls}
21262 @tab @code{QCatchSyscalls}
21263 @tab @code{catch syscall}
21264
21265 @item @code{pass-signals}
21266 @tab @code{QPassSignals}
21267 @tab @code{handle @var{signal}}
21268
21269 @item @code{program-signals}
21270 @tab @code{QProgramSignals}
21271 @tab @code{handle @var{signal}}
21272
21273 @item @code{hostio-close-packet}
21274 @tab @code{vFile:close}
21275 @tab @code{remote get}, @code{remote put}
21276
21277 @item @code{hostio-open-packet}
21278 @tab @code{vFile:open}
21279 @tab @code{remote get}, @code{remote put}
21280
21281 @item @code{hostio-pread-packet}
21282 @tab @code{vFile:pread}
21283 @tab @code{remote get}, @code{remote put}
21284
21285 @item @code{hostio-pwrite-packet}
21286 @tab @code{vFile:pwrite}
21287 @tab @code{remote get}, @code{remote put}
21288
21289 @item @code{hostio-unlink-packet}
21290 @tab @code{vFile:unlink}
21291 @tab @code{remote delete}
21292
21293 @item @code{hostio-readlink-packet}
21294 @tab @code{vFile:readlink}
21295 @tab Host I/O
21296
21297 @item @code{hostio-fstat-packet}
21298 @tab @code{vFile:fstat}
21299 @tab Host I/O
21300
21301 @item @code{hostio-setfs-packet}
21302 @tab @code{vFile:setfs}
21303 @tab Host I/O
21304
21305 @item @code{noack-packet}
21306 @tab @code{QStartNoAckMode}
21307 @tab Packet acknowledgment
21308
21309 @item @code{osdata}
21310 @tab @code{qXfer:osdata:read}
21311 @tab @code{info os}
21312
21313 @item @code{query-attached}
21314 @tab @code{qAttached}
21315 @tab Querying remote process attach state.
21316
21317 @item @code{trace-buffer-size}
21318 @tab @code{QTBuffer:size}
21319 @tab @code{set trace-buffer-size}
21320
21321 @item @code{trace-status}
21322 @tab @code{qTStatus}
21323 @tab @code{tstatus}
21324
21325 @item @code{traceframe-info}
21326 @tab @code{qXfer:traceframe-info:read}
21327 @tab Traceframe info
21328
21329 @item @code{install-in-trace}
21330 @tab @code{InstallInTrace}
21331 @tab Install tracepoint in tracing
21332
21333 @item @code{disable-randomization}
21334 @tab @code{QDisableRandomization}
21335 @tab @code{set disable-randomization}
21336
21337 @item @code{startup-with-shell}
21338 @tab @code{QStartupWithShell}
21339 @tab @code{set startup-with-shell}
21340
21341 @item @code{environment-hex-encoded}
21342 @tab @code{QEnvironmentHexEncoded}
21343 @tab @code{set environment}
21344
21345 @item @code{environment-unset}
21346 @tab @code{QEnvironmentUnset}
21347 @tab @code{unset environment}
21348
21349 @item @code{environment-reset}
21350 @tab @code{QEnvironmentReset}
21351 @tab @code{Reset the inferior environment (i.e., unset user-set variables)}
21352
21353 @item @code{set-working-dir}
21354 @tab @code{QSetWorkingDir}
21355 @tab @code{set cwd}
21356
21357 @item @code{conditional-breakpoints-packet}
21358 @tab @code{Z0 and Z1}
21359 @tab @code{Support for target-side breakpoint condition evaluation}
21360
21361 @item @code{multiprocess-extensions}
21362 @tab @code{multiprocess extensions}
21363 @tab Debug multiple processes and remote process PID awareness
21364
21365 @item @code{swbreak-feature}
21366 @tab @code{swbreak stop reason}
21367 @tab @code{break}
21368
21369 @item @code{hwbreak-feature}
21370 @tab @code{hwbreak stop reason}
21371 @tab @code{hbreak}
21372
21373 @item @code{fork-event-feature}
21374 @tab @code{fork stop reason}
21375 @tab @code{fork}
21376
21377 @item @code{vfork-event-feature}
21378 @tab @code{vfork stop reason}
21379 @tab @code{vfork}
21380
21381 @item @code{exec-event-feature}
21382 @tab @code{exec stop reason}
21383 @tab @code{exec}
21384
21385 @item @code{thread-events}
21386 @tab @code{QThreadEvents}
21387 @tab Tracking thread lifetime.
21388
21389 @item @code{no-resumed-stop-reply}
21390 @tab @code{no resumed thread left stop reply}
21391 @tab Tracking thread lifetime.
21392
21393 @end multitable
21394
21395 @node Remote Stub
21396 @section Implementing a Remote Stub
21397
21398 @cindex debugging stub, example
21399 @cindex remote stub, example
21400 @cindex stub example, remote debugging
21401 The stub files provided with @value{GDBN} implement the target side of the
21402 communication protocol, and the @value{GDBN} side is implemented in the
21403 @value{GDBN} source file @file{remote.c}. Normally, you can simply allow
21404 these subroutines to communicate, and ignore the details. (If you're
21405 implementing your own stub file, you can still ignore the details: start
21406 with one of the existing stub files. @file{sparc-stub.c} is the best
21407 organized, and therefore the easiest to read.)
21408
21409 @cindex remote serial debugging, overview
21410 To debug a program running on another machine (the debugging
21411 @dfn{target} machine), you must first arrange for all the usual
21412 prerequisites for the program to run by itself. For example, for a C
21413 program, you need:
21414
21415 @enumerate
21416 @item
21417 A startup routine to set up the C runtime environment; these usually
21418 have a name like @file{crt0}. The startup routine may be supplied by
21419 your hardware supplier, or you may have to write your own.
21420
21421 @item
21422 A C subroutine library to support your program's
21423 subroutine calls, notably managing input and output.
21424
21425 @item
21426 A way of getting your program to the other machine---for example, a
21427 download program. These are often supplied by the hardware
21428 manufacturer, but you may have to write your own from hardware
21429 documentation.
21430 @end enumerate
21431
21432 The next step is to arrange for your program to use a serial port to
21433 communicate with the machine where @value{GDBN} is running (the @dfn{host}
21434 machine). In general terms, the scheme looks like this:
21435
21436 @table @emph
21437 @item On the host,
21438 @value{GDBN} already understands how to use this protocol; when everything
21439 else is set up, you can simply use the @samp{target remote} command
21440 (@pxref{Targets,,Specifying a Debugging Target}).
21441
21442 @item On the target,
21443 you must link with your program a few special-purpose subroutines that
21444 implement the @value{GDBN} remote serial protocol. The file containing these
21445 subroutines is called a @dfn{debugging stub}.
21446
21447 On certain remote targets, you can use an auxiliary program
21448 @code{gdbserver} instead of linking a stub into your program.
21449 @xref{Server,,Using the @code{gdbserver} Program}, for details.
21450 @end table
21451
21452 The debugging stub is specific to the architecture of the remote
21453 machine; for example, use @file{sparc-stub.c} to debug programs on
21454 @sc{sparc} boards.
21455
21456 @cindex remote serial stub list
21457 These working remote stubs are distributed with @value{GDBN}:
21458
21459 @table @code
21460
21461 @item i386-stub.c
21462 @cindex @file{i386-stub.c}
21463 @cindex Intel
21464 @cindex i386
21465 For Intel 386 and compatible architectures.
21466
21467 @item m68k-stub.c
21468 @cindex @file{m68k-stub.c}
21469 @cindex Motorola 680x0
21470 @cindex m680x0
21471 For Motorola 680x0 architectures.
21472
21473 @item sh-stub.c
21474 @cindex @file{sh-stub.c}
21475 @cindex Renesas
21476 @cindex SH
21477 For Renesas SH architectures.
21478
21479 @item sparc-stub.c
21480 @cindex @file{sparc-stub.c}
21481 @cindex Sparc
21482 For @sc{sparc} architectures.
21483
21484 @item sparcl-stub.c
21485 @cindex @file{sparcl-stub.c}
21486 @cindex Fujitsu
21487 @cindex SparcLite
21488 For Fujitsu @sc{sparclite} architectures.
21489
21490 @end table
21491
21492 The @file{README} file in the @value{GDBN} distribution may list other
21493 recently added stubs.
21494
21495 @menu
21496 * Stub Contents:: What the stub can do for you
21497 * Bootstrapping:: What you must do for the stub
21498 * Debug Session:: Putting it all together
21499 @end menu
21500
21501 @node Stub Contents
21502 @subsection What the Stub Can Do for You
21503
21504 @cindex remote serial stub
21505 The debugging stub for your architecture supplies these three
21506 subroutines:
21507
21508 @table @code
21509 @item set_debug_traps
21510 @findex set_debug_traps
21511 @cindex remote serial stub, initialization
21512 This routine arranges for @code{handle_exception} to run when your
21513 program stops. You must call this subroutine explicitly in your
21514 program's startup code.
21515
21516 @item handle_exception
21517 @findex handle_exception
21518 @cindex remote serial stub, main routine
21519 This is the central workhorse, but your program never calls it
21520 explicitly---the setup code arranges for @code{handle_exception} to
21521 run when a trap is triggered.
21522
21523 @code{handle_exception} takes control when your program stops during
21524 execution (for example, on a breakpoint), and mediates communications
21525 with @value{GDBN} on the host machine. This is where the communications
21526 protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
21527 representative on the target machine. It begins by sending summary
21528 information on the state of your program, then continues to execute,
21529 retrieving and transmitting any information @value{GDBN} needs, until you
21530 execute a @value{GDBN} command that makes your program resume; at that point,
21531 @code{handle_exception} returns control to your own code on the target
21532 machine.
21533
21534 @item breakpoint
21535 @cindex @code{breakpoint} subroutine, remote
21536 Use this auxiliary subroutine to make your program contain a
21537 breakpoint. Depending on the particular situation, this may be the only
21538 way for @value{GDBN} to get control. For instance, if your target
21539 machine has some sort of interrupt button, you won't need to call this;
21540 pressing the interrupt button transfers control to
21541 @code{handle_exception}---in effect, to @value{GDBN}. On some machines,
21542 simply receiving characters on the serial port may also trigger a trap;
21543 again, in that situation, you don't need to call @code{breakpoint} from
21544 your own program---simply running @samp{target remote} from the host
21545 @value{GDBN} session gets control.
21546
21547 Call @code{breakpoint} if none of these is true, or if you simply want
21548 to make certain your program stops at a predetermined point for the
21549 start of your debugging session.
21550 @end table
21551
21552 @node Bootstrapping
21553 @subsection What You Must Do for the Stub
21554
21555 @cindex remote stub, support routines
21556 The debugging stubs that come with @value{GDBN} are set up for a particular
21557 chip architecture, but they have no information about the rest of your
21558 debugging target machine.
21559
21560 First of all you need to tell the stub how to communicate with the
21561 serial port.
21562
21563 @table @code
21564 @item int getDebugChar()
21565 @findex getDebugChar
21566 Write this subroutine to read a single character from the serial port.
21567 It may be identical to @code{getchar} for your target system; a
21568 different name is used to allow you to distinguish the two if you wish.
21569
21570 @item void putDebugChar(int)
21571 @findex putDebugChar
21572 Write this subroutine to write a single character to the serial port.
21573 It may be identical to @code{putchar} for your target system; a
21574 different name is used to allow you to distinguish the two if you wish.
21575 @end table
21576
21577 @cindex control C, and remote debugging
21578 @cindex interrupting remote targets
21579 If you want @value{GDBN} to be able to stop your program while it is
21580 running, you need to use an interrupt-driven serial driver, and arrange
21581 for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
21582 character). That is the character which @value{GDBN} uses to tell the
21583 remote system to stop.
21584
21585 Getting the debugging target to return the proper status to @value{GDBN}
21586 probably requires changes to the standard stub; one quick and dirty way
21587 is to just execute a breakpoint instruction (the ``dirty'' part is that
21588 @value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
21589
21590 Other routines you need to supply are:
21591
21592 @table @code
21593 @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
21594 @findex exceptionHandler
21595 Write this function to install @var{exception_address} in the exception
21596 handling tables. You need to do this because the stub does not have any
21597 way of knowing what the exception handling tables on your target system
21598 are like (for example, the processor's table might be in @sc{rom},
21599 containing entries which point to a table in @sc{ram}).
21600 The @var{exception_number} specifies the exception which should be changed;
21601 its meaning is architecture-dependent (for example, different numbers
21602 might represent divide by zero, misaligned access, etc). When this
21603 exception occurs, control should be transferred directly to
21604 @var{exception_address}, and the processor state (stack, registers,
21605 and so on) should be just as it is when a processor exception occurs. So if
21606 you want to use a jump instruction to reach @var{exception_address}, it
21607 should be a simple jump, not a jump to subroutine.
21608
21609 For the 386, @var{exception_address} should be installed as an interrupt
21610 gate so that interrupts are masked while the handler runs. The gate
21611 should be at privilege level 0 (the most privileged level). The
21612 @sc{sparc} and 68k stubs are able to mask interrupts themselves without
21613 help from @code{exceptionHandler}.
21614
21615 @item void flush_i_cache()
21616 @findex flush_i_cache
21617 On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
21618 instruction cache, if any, on your target machine. If there is no
21619 instruction cache, this subroutine may be a no-op.
21620
21621 On target machines that have instruction caches, @value{GDBN} requires this
21622 function to make certain that the state of your program is stable.
21623 @end table
21624
21625 @noindent
21626 You must also make sure this library routine is available:
21627
21628 @table @code
21629 @item void *memset(void *, int, int)
21630 @findex memset
21631 This is the standard library function @code{memset} that sets an area of
21632 memory to a known value. If you have one of the free versions of
21633 @code{libc.a}, @code{memset} can be found there; otherwise, you must
21634 either obtain it from your hardware manufacturer, or write your own.
21635 @end table
21636
21637 If you do not use the GNU C compiler, you may need other standard
21638 library subroutines as well; this varies from one stub to another,
21639 but in general the stubs are likely to use any of the common library
21640 subroutines which @code{@value{NGCC}} generates as inline code.
21641
21642
21643 @node Debug Session
21644 @subsection Putting it All Together
21645
21646 @cindex remote serial debugging summary
21647 In summary, when your program is ready to debug, you must follow these
21648 steps.
21649
21650 @enumerate
21651 @item
21652 Make sure you have defined the supporting low-level routines
21653 (@pxref{Bootstrapping,,What You Must Do for the Stub}):
21654 @display
21655 @code{getDebugChar}, @code{putDebugChar},
21656 @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
21657 @end display
21658
21659 @item
21660 Insert these lines in your program's startup code, before the main
21661 procedure is called:
21662
21663 @smallexample
21664 set_debug_traps();
21665 breakpoint();
21666 @end smallexample
21667
21668 On some machines, when a breakpoint trap is raised, the hardware
21669 automatically makes the PC point to the instruction after the
21670 breakpoint. If your machine doesn't do that, you may need to adjust
21671 @code{handle_exception} to arrange for it to return to the instruction
21672 after the breakpoint on this first invocation, so that your program
21673 doesn't keep hitting the initial breakpoint instead of making
21674 progress.
21675
21676 @item
21677 For the 680x0 stub only, you need to provide a variable called
21678 @code{exceptionHook}. Normally you just use:
21679
21680 @smallexample
21681 void (*exceptionHook)() = 0;
21682 @end smallexample
21683
21684 @noindent
21685 but if before calling @code{set_debug_traps}, you set it to point to a
21686 function in your program, that function is called when
21687 @code{@value{GDBN}} continues after stopping on a trap (for example, bus
21688 error). The function indicated by @code{exceptionHook} is called with
21689 one parameter: an @code{int} which is the exception number.
21690
21691 @item
21692 Compile and link together: your program, the @value{GDBN} debugging stub for
21693 your target architecture, and the supporting subroutines.
21694
21695 @item
21696 Make sure you have a serial connection between your target machine and
21697 the @value{GDBN} host, and identify the serial port on the host.
21698
21699 @item
21700 @c The "remote" target now provides a `load' command, so we should
21701 @c document that. FIXME.
21702 Download your program to your target machine (or get it there by
21703 whatever means the manufacturer provides), and start it.
21704
21705 @item
21706 Start @value{GDBN} on the host, and connect to the target
21707 (@pxref{Connecting,,Connecting to a Remote Target}).
21708
21709 @end enumerate
21710
21711 @node Configurations
21712 @chapter Configuration-Specific Information
21713
21714 While nearly all @value{GDBN} commands are available for all native and
21715 cross versions of the debugger, there are some exceptions. This chapter
21716 describes things that are only available in certain configurations.
21717
21718 There are three major categories of configurations: native
21719 configurations, where the host and target are the same, embedded
21720 operating system configurations, which are usually the same for several
21721 different processor architectures, and bare embedded processors, which
21722 are quite different from each other.
21723
21724 @menu
21725 * Native::
21726 * Embedded OS::
21727 * Embedded Processors::
21728 * Architectures::
21729 @end menu
21730
21731 @node Native
21732 @section Native
21733
21734 This section describes details specific to particular native
21735 configurations.
21736
21737 @menu
21738 * BSD libkvm Interface:: Debugging BSD kernel memory images
21739 * Process Information:: Process information
21740 * DJGPP Native:: Features specific to the DJGPP port
21741 * Cygwin Native:: Features specific to the Cygwin port
21742 * Hurd Native:: Features specific to @sc{gnu} Hurd
21743 * Darwin:: Features specific to Darwin
21744 @end menu
21745
21746 @node BSD libkvm Interface
21747 @subsection BSD libkvm Interface
21748
21749 @cindex libkvm
21750 @cindex kernel memory image
21751 @cindex kernel crash dump
21752
21753 BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
21754 interface that provides a uniform interface for accessing kernel virtual
21755 memory images, including live systems and crash dumps. @value{GDBN}
21756 uses this interface to allow you to debug live kernels and kernel crash
21757 dumps on many native BSD configurations. This is implemented as a
21758 special @code{kvm} debugging target. For debugging a live system, load
21759 the currently running kernel into @value{GDBN} and connect to the
21760 @code{kvm} target:
21761
21762 @smallexample
21763 (@value{GDBP}) @b{target kvm}
21764 @end smallexample
21765
21766 For debugging crash dumps, provide the file name of the crash dump as an
21767 argument:
21768
21769 @smallexample
21770 (@value{GDBP}) @b{target kvm /var/crash/bsd.0}
21771 @end smallexample
21772
21773 Once connected to the @code{kvm} target, the following commands are
21774 available:
21775
21776 @table @code
21777 @kindex kvm
21778 @item kvm pcb
21779 Set current context from the @dfn{Process Control Block} (PCB) address.
21780
21781 @item kvm proc
21782 Set current context from proc address. This command isn't available on
21783 modern FreeBSD systems.
21784 @end table
21785
21786 @node Process Information
21787 @subsection Process Information
21788 @cindex /proc
21789 @cindex examine process image
21790 @cindex process info via @file{/proc}
21791
21792 Some operating systems provide interfaces to fetch additional
21793 information about running processes beyond memory and per-thread
21794 register state. If @value{GDBN} is configured for an operating system
21795 with a supported interface, the command @code{info proc} is available
21796 to report information about the process running your program, or about
21797 any process running on your system.
21798
21799 One supported interface is a facility called @samp{/proc} that can be
21800 used to examine the image of a running process using file-system
21801 subroutines. This facility is supported on @sc{gnu}/Linux and Solaris
21802 systems.
21803
21804 On FreeBSD systems, system control nodes are used to query process
21805 information.
21806
21807 In addition, some systems may provide additional process information
21808 in core files. Note that a core file may include a subset of the
21809 information available from a live process. Process information is
21810 currently avaiable from cores created on @sc{gnu}/Linux and FreeBSD
21811 systems.
21812
21813 @table @code
21814 @kindex info proc
21815 @cindex process ID
21816 @item info proc
21817 @itemx info proc @var{process-id}
21818 Summarize available information about any running process. If a
21819 process ID is specified by @var{process-id}, display information about
21820 that process; otherwise display information about the program being
21821 debugged. The summary includes the debugged process ID, the command
21822 line used to invoke it, its current working directory, and its
21823 executable file's absolute file name.
21824
21825 On some systems, @var{process-id} can be of the form
21826 @samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
21827 within a process. If the optional @var{pid} part is missing, it means
21828 a thread from the process being debugged (the leading @samp{/} still
21829 needs to be present, or else @value{GDBN} will interpret the number as
21830 a process ID rather than a thread ID).
21831
21832 @item info proc cmdline
21833 @cindex info proc cmdline
21834 Show the original command line of the process. This command is
21835 supported on @sc{gnu}/Linux and FreeBSD.
21836
21837 @item info proc cwd
21838 @cindex info proc cwd
21839 Show the current working directory of the process. This command is
21840 supported on @sc{gnu}/Linux and FreeBSD.
21841
21842 @item info proc exe
21843 @cindex info proc exe
21844 Show the name of executable of the process. This command is supported
21845 on @sc{gnu}/Linux and FreeBSD.
21846
21847 @item info proc mappings
21848 @cindex memory address space mappings
21849 Report the memory address space ranges accessible in the program. On
21850 Solaris and FreeBSD systems, each memory range includes information on
21851 whether the process has read, write, or execute access rights to each
21852 range. On @sc{gnu}/Linux and FreeBSD systems, each memory range
21853 includes the object file which is mapped to that range.
21854
21855 @item info proc stat
21856 @itemx info proc status
21857 @cindex process detailed status information
21858 Show additional process-related information, including the user ID and
21859 group ID; virtual memory usage; the signals that are pending, blocked,
21860 and ignored; its TTY; its consumption of system and user time; its
21861 stack size; its @samp{nice} value; etc. These commands are supported
21862 on @sc{gnu}/Linux and FreeBSD.
21863
21864 For @sc{gnu}/Linux systems, see the @samp{proc} man page for more
21865 information (type @kbd{man 5 proc} from your shell prompt).
21866
21867 For FreeBSD systems, @code{info proc stat} is an alias for @code{info
21868 proc status}.
21869
21870 @item info proc all
21871 Show all the information about the process described under all of the
21872 above @code{info proc} subcommands.
21873
21874 @ignore
21875 @comment These sub-options of 'info proc' were not included when
21876 @comment procfs.c was re-written. Keep their descriptions around
21877 @comment against the day when someone finds the time to put them back in.
21878 @kindex info proc times
21879 @item info proc times
21880 Starting time, user CPU time, and system CPU time for your program and
21881 its children.
21882
21883 @kindex info proc id
21884 @item info proc id
21885 Report on the process IDs related to your program: its own process ID,
21886 the ID of its parent, the process group ID, and the session ID.
21887 @end ignore
21888
21889 @item set procfs-trace
21890 @kindex set procfs-trace
21891 @cindex @code{procfs} API calls
21892 This command enables and disables tracing of @code{procfs} API calls.
21893
21894 @item show procfs-trace
21895 @kindex show procfs-trace
21896 Show the current state of @code{procfs} API call tracing.
21897
21898 @item set procfs-file @var{file}
21899 @kindex set procfs-file
21900 Tell @value{GDBN} to write @code{procfs} API trace to the named
21901 @var{file}. @value{GDBN} appends the trace info to the previous
21902 contents of the file. The default is to display the trace on the
21903 standard output.
21904
21905 @item show procfs-file
21906 @kindex show procfs-file
21907 Show the file to which @code{procfs} API trace is written.
21908
21909 @item proc-trace-entry
21910 @itemx proc-trace-exit
21911 @itemx proc-untrace-entry
21912 @itemx proc-untrace-exit
21913 @kindex proc-trace-entry
21914 @kindex proc-trace-exit
21915 @kindex proc-untrace-entry
21916 @kindex proc-untrace-exit
21917 These commands enable and disable tracing of entries into and exits
21918 from the @code{syscall} interface.
21919
21920 @item info pidlist
21921 @kindex info pidlist
21922 @cindex process list, QNX Neutrino
21923 For QNX Neutrino only, this command displays the list of all the
21924 processes and all the threads within each process.
21925
21926 @item info meminfo
21927 @kindex info meminfo
21928 @cindex mapinfo list, QNX Neutrino
21929 For QNX Neutrino only, this command displays the list of all mapinfos.
21930 @end table
21931
21932 @node DJGPP Native
21933 @subsection Features for Debugging @sc{djgpp} Programs
21934 @cindex @sc{djgpp} debugging
21935 @cindex native @sc{djgpp} debugging
21936 @cindex MS-DOS-specific commands
21937
21938 @cindex DPMI
21939 @sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
21940 MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
21941 that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
21942 top of real-mode DOS systems and their emulations.
21943
21944 @value{GDBN} supports native debugging of @sc{djgpp} programs, and
21945 defines a few commands specific to the @sc{djgpp} port. This
21946 subsection describes those commands.
21947
21948 @table @code
21949 @kindex info dos
21950 @item info dos
21951 This is a prefix of @sc{djgpp}-specific commands which print
21952 information about the target system and important OS structures.
21953
21954 @kindex sysinfo
21955 @cindex MS-DOS system info
21956 @cindex free memory information (MS-DOS)
21957 @item info dos sysinfo
21958 This command displays assorted information about the underlying
21959 platform: the CPU type and features, the OS version and flavor, the
21960 DPMI version, and the available conventional and DPMI memory.
21961
21962 @cindex GDT
21963 @cindex LDT
21964 @cindex IDT
21965 @cindex segment descriptor tables
21966 @cindex descriptor tables display
21967 @item info dos gdt
21968 @itemx info dos ldt
21969 @itemx info dos idt
21970 These 3 commands display entries from, respectively, Global, Local,
21971 and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
21972 tables are data structures which store a descriptor for each segment
21973 that is currently in use. The segment's selector is an index into a
21974 descriptor table; the table entry for that index holds the
21975 descriptor's base address and limit, and its attributes and access
21976 rights.
21977
21978 A typical @sc{djgpp} program uses 3 segments: a code segment, a data
21979 segment (used for both data and the stack), and a DOS segment (which
21980 allows access to DOS/BIOS data structures and absolute addresses in
21981 conventional memory). However, the DPMI host will usually define
21982 additional segments in order to support the DPMI environment.
21983
21984 @cindex garbled pointers
21985 These commands allow to display entries from the descriptor tables.
21986 Without an argument, all entries from the specified table are
21987 displayed. An argument, which should be an integer expression, means
21988 display a single entry whose index is given by the argument. For
21989 example, here's a convenient way to display information about the
21990 debugged program's data segment:
21991
21992 @smallexample
21993 @exdent @code{(@value{GDBP}) info dos ldt $ds}
21994 @exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
21995 @end smallexample
21996
21997 @noindent
21998 This comes in handy when you want to see whether a pointer is outside
21999 the data segment's limit (i.e.@: @dfn{garbled}).
22000
22001 @cindex page tables display (MS-DOS)
22002 @item info dos pde
22003 @itemx info dos pte
22004 These two commands display entries from, respectively, the Page
22005 Directory and the Page Tables. Page Directories and Page Tables are
22006 data structures which control how virtual memory addresses are mapped
22007 into physical addresses. A Page Table includes an entry for every
22008 page of memory that is mapped into the program's address space; there
22009 may be several Page Tables, each one holding up to 4096 entries. A
22010 Page Directory has up to 4096 entries, one each for every Page Table
22011 that is currently in use.
22012
22013 Without an argument, @kbd{info dos pde} displays the entire Page
22014 Directory, and @kbd{info dos pte} displays all the entries in all of
22015 the Page Tables. An argument, an integer expression, given to the
22016 @kbd{info dos pde} command means display only that entry from the Page
22017 Directory table. An argument given to the @kbd{info dos pte} command
22018 means display entries from a single Page Table, the one pointed to by
22019 the specified entry in the Page Directory.
22020
22021 @cindex direct memory access (DMA) on MS-DOS
22022 These commands are useful when your program uses @dfn{DMA} (Direct
22023 Memory Access), which needs physical addresses to program the DMA
22024 controller.
22025
22026 These commands are supported only with some DPMI servers.
22027
22028 @cindex physical address from linear address
22029 @item info dos address-pte @var{addr}
22030 This command displays the Page Table entry for a specified linear
22031 address. The argument @var{addr} is a linear address which should
22032 already have the appropriate segment's base address added to it,
22033 because this command accepts addresses which may belong to @emph{any}
22034 segment. For example, here's how to display the Page Table entry for
22035 the page where a variable @code{i} is stored:
22036
22037 @smallexample
22038 @exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
22039 @exdent @code{Page Table entry for address 0x11a00d30:}
22040 @exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
22041 @end smallexample
22042
22043 @noindent
22044 This says that @code{i} is stored at offset @code{0xd30} from the page
22045 whose physical base address is @code{0x02698000}, and shows all the
22046 attributes of that page.
22047
22048 Note that you must cast the addresses of variables to a @code{char *},
22049 since otherwise the value of @code{__djgpp_base_address}, the base
22050 address of all variables and functions in a @sc{djgpp} program, will
22051 be added using the rules of C pointer arithmetics: if @code{i} is
22052 declared an @code{int}, @value{GDBN} will add 4 times the value of
22053 @code{__djgpp_base_address} to the address of @code{i}.
22054
22055 Here's another example, it displays the Page Table entry for the
22056 transfer buffer:
22057
22058 @smallexample
22059 @exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
22060 @exdent @code{Page Table entry for address 0x29110:}
22061 @exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
22062 @end smallexample
22063
22064 @noindent
22065 (The @code{+ 3} offset is because the transfer buffer's address is the
22066 3rd member of the @code{_go32_info_block} structure.) The output
22067 clearly shows that this DPMI server maps the addresses in conventional
22068 memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
22069 linear (@code{0x29110}) addresses are identical.
22070
22071 This command is supported only with some DPMI servers.
22072 @end table
22073
22074 @cindex DOS serial data link, remote debugging
22075 In addition to native debugging, the DJGPP port supports remote
22076 debugging via a serial data link. The following commands are specific
22077 to remote serial debugging in the DJGPP port of @value{GDBN}.
22078
22079 @table @code
22080 @kindex set com1base
22081 @kindex set com1irq
22082 @kindex set com2base
22083 @kindex set com2irq
22084 @kindex set com3base
22085 @kindex set com3irq
22086 @kindex set com4base
22087 @kindex set com4irq
22088 @item set com1base @var{addr}
22089 This command sets the base I/O port address of the @file{COM1} serial
22090 port.
22091
22092 @item set com1irq @var{irq}
22093 This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
22094 for the @file{COM1} serial port.
22095
22096 There are similar commands @samp{set com2base}, @samp{set com3irq},
22097 etc.@: for setting the port address and the @code{IRQ} lines for the
22098 other 3 COM ports.
22099
22100 @kindex show com1base
22101 @kindex show com1irq
22102 @kindex show com2base
22103 @kindex show com2irq
22104 @kindex show com3base
22105 @kindex show com3irq
22106 @kindex show com4base
22107 @kindex show com4irq
22108 The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
22109 display the current settings of the base address and the @code{IRQ}
22110 lines used by the COM ports.
22111
22112 @item info serial
22113 @kindex info serial
22114 @cindex DOS serial port status
22115 This command prints the status of the 4 DOS serial ports. For each
22116 port, it prints whether it's active or not, its I/O base address and
22117 IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
22118 counts of various errors encountered so far.
22119 @end table
22120
22121
22122 @node Cygwin Native
22123 @subsection Features for Debugging MS Windows PE Executables
22124 @cindex MS Windows debugging
22125 @cindex native Cygwin debugging
22126 @cindex Cygwin-specific commands
22127
22128 @value{GDBN} supports native debugging of MS Windows programs, including
22129 DLLs with and without symbolic debugging information.
22130
22131 @cindex Ctrl-BREAK, MS-Windows
22132 @cindex interrupt debuggee on MS-Windows
22133 MS-Windows programs that call @code{SetConsoleMode} to switch off the
22134 special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
22135 by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
22136 supports @kbd{C-@key{BREAK}} as an alternative interrupt key
22137 sequence, which can be used to interrupt the debuggee even if it
22138 ignores @kbd{C-c}.
22139
22140 There are various additional Cygwin-specific commands, described in
22141 this section. Working with DLLs that have no debugging symbols is
22142 described in @ref{Non-debug DLL Symbols}.
22143
22144 @table @code
22145 @kindex info w32
22146 @item info w32
22147 This is a prefix of MS Windows-specific commands which print
22148 information about the target system and important OS structures.
22149
22150 @item info w32 selector
22151 This command displays information returned by
22152 the Win32 API @code{GetThreadSelectorEntry} function.
22153 It takes an optional argument that is evaluated to
22154 a long value to give the information about this given selector.
22155 Without argument, this command displays information
22156 about the six segment registers.
22157
22158 @item info w32 thread-information-block
22159 This command displays thread specific information stored in the
22160 Thread Information Block (readable on the X86 CPU family using @code{$fs}
22161 selector for 32-bit programs and @code{$gs} for 64-bit programs).
22162
22163 @kindex signal-event
22164 @item signal-event @var{id}
22165 This command signals an event with user-provided @var{id}. Used to resume
22166 crashing process when attached to it using MS-Windows JIT debugging (AeDebug).
22167
22168 To use it, create or edit the following keys in
22169 @code{HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug} and/or
22170 @code{HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug}
22171 (for x86_64 versions):
22172
22173 @itemize @minus
22174 @item
22175 @code{Debugger} (REG_SZ) --- a command to launch the debugger.
22176 Suggested command is: @code{@var{fully-qualified-path-to-gdb.exe} -ex
22177 "attach %ld" -ex "signal-event %ld" -ex "continue"}.
22178
22179 The first @code{%ld} will be replaced by the process ID of the
22180 crashing process, the second @code{%ld} will be replaced by the ID of
22181 the event that blocks the crashing process, waiting for @value{GDBN}
22182 to attach.
22183
22184 @item
22185 @code{Auto} (REG_SZ) --- either @code{1} or @code{0}. @code{1} will
22186 make the system run debugger specified by the Debugger key
22187 automatically, @code{0} will cause a dialog box with ``OK'' and
22188 ``Cancel'' buttons to appear, which allows the user to either
22189 terminate the crashing process (OK) or debug it (Cancel).
22190 @end itemize
22191
22192 @kindex set cygwin-exceptions
22193 @cindex debugging the Cygwin DLL
22194 @cindex Cygwin DLL, debugging
22195 @item set cygwin-exceptions @var{mode}
22196 If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
22197 happen inside the Cygwin DLL. If @var{mode} is @code{off},
22198 @value{GDBN} will delay recognition of exceptions, and may ignore some
22199 exceptions which seem to be caused by internal Cygwin DLL
22200 ``bookkeeping''. This option is meant primarily for debugging the
22201 Cygwin DLL itself; the default value is @code{off} to avoid annoying
22202 @value{GDBN} users with false @code{SIGSEGV} signals.
22203
22204 @kindex show cygwin-exceptions
22205 @item show cygwin-exceptions
22206 Displays whether @value{GDBN} will break on exceptions that happen
22207 inside the Cygwin DLL itself.
22208
22209 @kindex set new-console
22210 @item set new-console @var{mode}
22211 If @var{mode} is @code{on} the debuggee will
22212 be started in a new console on next start.
22213 If @var{mode} is @code{off}, the debuggee will
22214 be started in the same console as the debugger.
22215
22216 @kindex show new-console
22217 @item show new-console
22218 Displays whether a new console is used
22219 when the debuggee is started.
22220
22221 @kindex set new-group
22222 @item set new-group @var{mode}
22223 This boolean value controls whether the debuggee should
22224 start a new group or stay in the same group as the debugger.
22225 This affects the way the Windows OS handles
22226 @samp{Ctrl-C}.
22227
22228 @kindex show new-group
22229 @item show new-group
22230 Displays current value of new-group boolean.
22231
22232 @kindex set debugevents
22233 @item set debugevents
22234 This boolean value adds debug output concerning kernel events related
22235 to the debuggee seen by the debugger. This includes events that
22236 signal thread and process creation and exit, DLL loading and
22237 unloading, console interrupts, and debugging messages produced by the
22238 Windows @code{OutputDebugString} API call.
22239
22240 @kindex set debugexec
22241 @item set debugexec
22242 This boolean value adds debug output concerning execute events
22243 (such as resume thread) seen by the debugger.
22244
22245 @kindex set debugexceptions
22246 @item set debugexceptions
22247 This boolean value adds debug output concerning exceptions in the
22248 debuggee seen by the debugger.
22249
22250 @kindex set debugmemory
22251 @item set debugmemory
22252 This boolean value adds debug output concerning debuggee memory reads
22253 and writes by the debugger.
22254
22255 @kindex set shell
22256 @item set shell
22257 This boolean values specifies whether the debuggee is called
22258 via a shell or directly (default value is on).
22259
22260 @kindex show shell
22261 @item show shell
22262 Displays if the debuggee will be started with a shell.
22263
22264 @end table
22265
22266 @menu
22267 * Non-debug DLL Symbols:: Support for DLLs without debugging symbols
22268 @end menu
22269
22270 @node Non-debug DLL Symbols
22271 @subsubsection Support for DLLs without Debugging Symbols
22272 @cindex DLLs with no debugging symbols
22273 @cindex Minimal symbols and DLLs
22274
22275 Very often on windows, some of the DLLs that your program relies on do
22276 not include symbolic debugging information (for example,
22277 @file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
22278 symbols in a DLL, it relies on the minimal amount of symbolic
22279 information contained in the DLL's export table. This section
22280 describes working with such symbols, known internally to @value{GDBN} as
22281 ``minimal symbols''.
22282
22283 Note that before the debugged program has started execution, no DLLs
22284 will have been loaded. The easiest way around this problem is simply to
22285 start the program --- either by setting a breakpoint or letting the
22286 program run once to completion.
22287
22288 @subsubsection DLL Name Prefixes
22289
22290 In keeping with the naming conventions used by the Microsoft debugging
22291 tools, DLL export symbols are made available with a prefix based on the
22292 DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
22293 also entered into the symbol table, so @code{CreateFileA} is often
22294 sufficient. In some cases there will be name clashes within a program
22295 (particularly if the executable itself includes full debugging symbols)
22296 necessitating the use of the fully qualified name when referring to the
22297 contents of the DLL. Use single-quotes around the name to avoid the
22298 exclamation mark (``!'') being interpreted as a language operator.
22299
22300 Note that the internal name of the DLL may be all upper-case, even
22301 though the file name of the DLL is lower-case, or vice-versa. Since
22302 symbols within @value{GDBN} are @emph{case-sensitive} this may cause
22303 some confusion. If in doubt, try the @code{info functions} and
22304 @code{info variables} commands or even @code{maint print msymbols}
22305 (@pxref{Symbols}). Here's an example:
22306
22307 @smallexample
22308 (@value{GDBP}) info function CreateFileA
22309 All functions matching regular expression "CreateFileA":
22310
22311 Non-debugging symbols:
22312 0x77e885f4 CreateFileA
22313 0x77e885f4 KERNEL32!CreateFileA
22314 @end smallexample
22315
22316 @smallexample
22317 (@value{GDBP}) info function !
22318 All functions matching regular expression "!":
22319
22320 Non-debugging symbols:
22321 0x6100114c cygwin1!__assert
22322 0x61004034 cygwin1!_dll_crt0@@0
22323 0x61004240 cygwin1!dll_crt0(per_process *)
22324 [etc...]
22325 @end smallexample
22326
22327 @subsubsection Working with Minimal Symbols
22328
22329 Symbols extracted from a DLL's export table do not contain very much
22330 type information. All that @value{GDBN} can do is guess whether a symbol
22331 refers to a function or variable depending on the linker section that
22332 contains the symbol. Also note that the actual contents of the memory
22333 contained in a DLL are not available unless the program is running. This
22334 means that you cannot examine the contents of a variable or disassemble
22335 a function within a DLL without a running program.
22336
22337 Variables are generally treated as pointers and dereferenced
22338 automatically. For this reason, it is often necessary to prefix a
22339 variable name with the address-of operator (``&'') and provide explicit
22340 type information in the command. Here's an example of the type of
22341 problem:
22342
22343 @smallexample
22344 (@value{GDBP}) print 'cygwin1!__argv'
22345 'cygwin1!__argv' has unknown type; cast it to its declared type
22346 @end smallexample
22347
22348 @smallexample
22349 (@value{GDBP}) x 'cygwin1!__argv'
22350 'cygwin1!__argv' has unknown type; cast it to its declared type
22351 @end smallexample
22352
22353 And two possible solutions:
22354
22355 @smallexample
22356 (@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
22357 $2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
22358 @end smallexample
22359
22360 @smallexample
22361 (@value{GDBP}) x/2x &'cygwin1!__argv'
22362 0x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
22363 (@value{GDBP}) x/x 0x10021608
22364 0x10021608: 0x0022fd98
22365 (@value{GDBP}) x/s 0x0022fd98
22366 0x22fd98: "/cygdrive/c/mydirectory/myprogram"
22367 @end smallexample
22368
22369 Setting a break point within a DLL is possible even before the program
22370 starts execution. However, under these circumstances, @value{GDBN} can't
22371 examine the initial instructions of the function in order to skip the
22372 function's frame set-up code. You can work around this by using ``*&''
22373 to set the breakpoint at a raw memory address:
22374
22375 @smallexample
22376 (@value{GDBP}) break *&'python22!PyOS_Readline'
22377 Breakpoint 1 at 0x1e04eff0
22378 @end smallexample
22379
22380 The author of these extensions is not entirely convinced that setting a
22381 break point within a shared DLL like @file{kernel32.dll} is completely
22382 safe.
22383
22384 @node Hurd Native
22385 @subsection Commands Specific to @sc{gnu} Hurd Systems
22386 @cindex @sc{gnu} Hurd debugging
22387
22388 This subsection describes @value{GDBN} commands specific to the
22389 @sc{gnu} Hurd native debugging.
22390
22391 @table @code
22392 @item set signals
22393 @itemx set sigs
22394 @kindex set signals@r{, Hurd command}
22395 @kindex set sigs@r{, Hurd command}
22396 This command toggles the state of inferior signal interception by
22397 @value{GDBN}. Mach exceptions, such as breakpoint traps, are not
22398 affected by this command. @code{sigs} is a shorthand alias for
22399 @code{signals}.
22400
22401 @item show signals
22402 @itemx show sigs
22403 @kindex show signals@r{, Hurd command}
22404 @kindex show sigs@r{, Hurd command}
22405 Show the current state of intercepting inferior's signals.
22406
22407 @item set signal-thread
22408 @itemx set sigthread
22409 @kindex set signal-thread
22410 @kindex set sigthread
22411 This command tells @value{GDBN} which thread is the @code{libc} signal
22412 thread. That thread is run when a signal is delivered to a running
22413 process. @code{set sigthread} is the shorthand alias of @code{set
22414 signal-thread}.
22415
22416 @item show signal-thread
22417 @itemx show sigthread
22418 @kindex show signal-thread
22419 @kindex show sigthread
22420 These two commands show which thread will run when the inferior is
22421 delivered a signal.
22422
22423 @item set stopped
22424 @kindex set stopped@r{, Hurd command}
22425 This commands tells @value{GDBN} that the inferior process is stopped,
22426 as with the @code{SIGSTOP} signal. The stopped process can be
22427 continued by delivering a signal to it.
22428
22429 @item show stopped
22430 @kindex show stopped@r{, Hurd command}
22431 This command shows whether @value{GDBN} thinks the debuggee is
22432 stopped.
22433
22434 @item set exceptions
22435 @kindex set exceptions@r{, Hurd command}
22436 Use this command to turn off trapping of exceptions in the inferior.
22437 When exception trapping is off, neither breakpoints nor
22438 single-stepping will work. To restore the default, set exception
22439 trapping on.
22440
22441 @item show exceptions
22442 @kindex show exceptions@r{, Hurd command}
22443 Show the current state of trapping exceptions in the inferior.
22444
22445 @item set task pause
22446 @kindex set task@r{, Hurd commands}
22447 @cindex task attributes (@sc{gnu} Hurd)
22448 @cindex pause current task (@sc{gnu} Hurd)
22449 This command toggles task suspension when @value{GDBN} has control.
22450 Setting it to on takes effect immediately, and the task is suspended
22451 whenever @value{GDBN} gets control. Setting it to off will take
22452 effect the next time the inferior is continued. If this option is set
22453 to off, you can use @code{set thread default pause on} or @code{set
22454 thread pause on} (see below) to pause individual threads.
22455
22456 @item show task pause
22457 @kindex show task@r{, Hurd commands}
22458 Show the current state of task suspension.
22459
22460 @item set task detach-suspend-count
22461 @cindex task suspend count
22462 @cindex detach from task, @sc{gnu} Hurd
22463 This command sets the suspend count the task will be left with when
22464 @value{GDBN} detaches from it.
22465
22466 @item show task detach-suspend-count
22467 Show the suspend count the task will be left with when detaching.
22468
22469 @item set task exception-port
22470 @itemx set task excp
22471 @cindex task exception port, @sc{gnu} Hurd
22472 This command sets the task exception port to which @value{GDBN} will
22473 forward exceptions. The argument should be the value of the @dfn{send
22474 rights} of the task. @code{set task excp} is a shorthand alias.
22475
22476 @item set noninvasive
22477 @cindex noninvasive task options
22478 This command switches @value{GDBN} to a mode that is the least
22479 invasive as far as interfering with the inferior is concerned. This
22480 is the same as using @code{set task pause}, @code{set exceptions}, and
22481 @code{set signals} to values opposite to the defaults.
22482
22483 @item info send-rights
22484 @itemx info receive-rights
22485 @itemx info port-rights
22486 @itemx info port-sets
22487 @itemx info dead-names
22488 @itemx info ports
22489 @itemx info psets
22490 @cindex send rights, @sc{gnu} Hurd
22491 @cindex receive rights, @sc{gnu} Hurd
22492 @cindex port rights, @sc{gnu} Hurd
22493 @cindex port sets, @sc{gnu} Hurd
22494 @cindex dead names, @sc{gnu} Hurd
22495 These commands display information about, respectively, send rights,
22496 receive rights, port rights, port sets, and dead names of a task.
22497 There are also shorthand aliases: @code{info ports} for @code{info
22498 port-rights} and @code{info psets} for @code{info port-sets}.
22499
22500 @item set thread pause
22501 @kindex set thread@r{, Hurd command}
22502 @cindex thread properties, @sc{gnu} Hurd
22503 @cindex pause current thread (@sc{gnu} Hurd)
22504 This command toggles current thread suspension when @value{GDBN} has
22505 control. Setting it to on takes effect immediately, and the current
22506 thread is suspended whenever @value{GDBN} gets control. Setting it to
22507 off will take effect the next time the inferior is continued.
22508 Normally, this command has no effect, since when @value{GDBN} has
22509 control, the whole task is suspended. However, if you used @code{set
22510 task pause off} (see above), this command comes in handy to suspend
22511 only the current thread.
22512
22513 @item show thread pause
22514 @kindex show thread@r{, Hurd command}
22515 This command shows the state of current thread suspension.
22516
22517 @item set thread run
22518 This command sets whether the current thread is allowed to run.
22519
22520 @item show thread run
22521 Show whether the current thread is allowed to run.
22522
22523 @item set thread detach-suspend-count
22524 @cindex thread suspend count, @sc{gnu} Hurd
22525 @cindex detach from thread, @sc{gnu} Hurd
22526 This command sets the suspend count @value{GDBN} will leave on a
22527 thread when detaching. This number is relative to the suspend count
22528 found by @value{GDBN} when it notices the thread; use @code{set thread
22529 takeover-suspend-count} to force it to an absolute value.
22530
22531 @item show thread detach-suspend-count
22532 Show the suspend count @value{GDBN} will leave on the thread when
22533 detaching.
22534
22535 @item set thread exception-port
22536 @itemx set thread excp
22537 Set the thread exception port to which to forward exceptions. This
22538 overrides the port set by @code{set task exception-port} (see above).
22539 @code{set thread excp} is the shorthand alias.
22540
22541 @item set thread takeover-suspend-count
22542 Normally, @value{GDBN}'s thread suspend counts are relative to the
22543 value @value{GDBN} finds when it notices each thread. This command
22544 changes the suspend counts to be absolute instead.
22545
22546 @item set thread default
22547 @itemx show thread default
22548 @cindex thread default settings, @sc{gnu} Hurd
22549 Each of the above @code{set thread} commands has a @code{set thread
22550 default} counterpart (e.g., @code{set thread default pause}, @code{set
22551 thread default exception-port}, etc.). The @code{thread default}
22552 variety of commands sets the default thread properties for all
22553 threads; you can then change the properties of individual threads with
22554 the non-default commands.
22555 @end table
22556
22557 @node Darwin
22558 @subsection Darwin
22559 @cindex Darwin
22560
22561 @value{GDBN} provides the following commands specific to the Darwin target:
22562
22563 @table @code
22564 @item set debug darwin @var{num}
22565 @kindex set debug darwin
22566 When set to a non zero value, enables debugging messages specific to
22567 the Darwin support. Higher values produce more verbose output.
22568
22569 @item show debug darwin
22570 @kindex show debug darwin
22571 Show the current state of Darwin messages.
22572
22573 @item set debug mach-o @var{num}
22574 @kindex set debug mach-o
22575 When set to a non zero value, enables debugging messages while
22576 @value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
22577 file format used on Darwin for object and executable files.) Higher
22578 values produce more verbose output. This is a command to diagnose
22579 problems internal to @value{GDBN} and should not be needed in normal
22580 usage.
22581
22582 @item show debug mach-o
22583 @kindex show debug mach-o
22584 Show the current state of Mach-O file messages.
22585
22586 @item set mach-exceptions on
22587 @itemx set mach-exceptions off
22588 @kindex set mach-exceptions
22589 On Darwin, faults are first reported as a Mach exception and are then
22590 mapped to a Posix signal. Use this command to turn on trapping of
22591 Mach exceptions in the inferior. This might be sometimes useful to
22592 better understand the cause of a fault. The default is off.
22593
22594 @item show mach-exceptions
22595 @kindex show mach-exceptions
22596 Show the current state of exceptions trapping.
22597 @end table
22598
22599
22600 @node Embedded OS
22601 @section Embedded Operating Systems
22602
22603 This section describes configurations involving the debugging of
22604 embedded operating systems that are available for several different
22605 architectures.
22606
22607 @value{GDBN} includes the ability to debug programs running on
22608 various real-time operating systems.
22609
22610 @node Embedded Processors
22611 @section Embedded Processors
22612
22613 This section goes into details specific to particular embedded
22614 configurations.
22615
22616 @cindex send command to simulator
22617 Whenever a specific embedded processor has a simulator, @value{GDBN}
22618 allows to send an arbitrary command to the simulator.
22619
22620 @table @code
22621 @item sim @var{command}
22622 @kindex sim@r{, a command}
22623 Send an arbitrary @var{command} string to the simulator. Consult the
22624 documentation for the specific simulator in use for information about
22625 acceptable commands.
22626 @end table
22627
22628
22629 @menu
22630 * ARC:: Synopsys ARC
22631 * ARM:: ARM
22632 * M68K:: Motorola M68K
22633 * MicroBlaze:: Xilinx MicroBlaze
22634 * MIPS Embedded:: MIPS Embedded
22635 * OpenRISC 1000:: OpenRISC 1000 (or1k)
22636 * PowerPC Embedded:: PowerPC Embedded
22637 * AVR:: Atmel AVR
22638 * CRIS:: CRIS
22639 * Super-H:: Renesas Super-H
22640 @end menu
22641
22642 @node ARC
22643 @subsection Synopsys ARC
22644 @cindex Synopsys ARC
22645 @cindex ARC specific commands
22646 @cindex ARC600
22647 @cindex ARC700
22648 @cindex ARC EM
22649 @cindex ARC HS
22650
22651 @value{GDBN} provides the following ARC-specific commands:
22652
22653 @table @code
22654 @item set debug arc
22655 @kindex set debug arc
22656 Control the level of ARC specific debug messages. Use 0 for no messages (the
22657 default), 1 for debug messages, and 2 for even more debug messages.
22658
22659 @item show debug arc
22660 @kindex show debug arc
22661 Show the level of ARC specific debugging in operation.
22662
22663 @item maint print arc arc-instruction @var{address}
22664 @kindex maint print arc arc-instruction
22665 Print internal disassembler information about instruction at a given address.
22666
22667 @end table
22668
22669 @node ARM
22670 @subsection ARM
22671
22672 @value{GDBN} provides the following ARM-specific commands:
22673
22674 @table @code
22675 @item set arm disassembler
22676 @kindex set arm
22677 This commands selects from a list of disassembly styles. The
22678 @code{"std"} style is the standard style.
22679
22680 @item show arm disassembler
22681 @kindex show arm
22682 Show the current disassembly style.
22683
22684 @item set arm apcs32
22685 @cindex ARM 32-bit mode
22686 This command toggles ARM operation mode between 32-bit and 26-bit.
22687
22688 @item show arm apcs32
22689 Display the current usage of the ARM 32-bit mode.
22690
22691 @item set arm fpu @var{fputype}
22692 This command sets the ARM floating-point unit (FPU) type. The
22693 argument @var{fputype} can be one of these:
22694
22695 @table @code
22696 @item auto
22697 Determine the FPU type by querying the OS ABI.
22698 @item softfpa
22699 Software FPU, with mixed-endian doubles on little-endian ARM
22700 processors.
22701 @item fpa
22702 GCC-compiled FPA co-processor.
22703 @item softvfp
22704 Software FPU with pure-endian doubles.
22705 @item vfp
22706 VFP co-processor.
22707 @end table
22708
22709 @item show arm fpu
22710 Show the current type of the FPU.
22711
22712 @item set arm abi
22713 This command forces @value{GDBN} to use the specified ABI.
22714
22715 @item show arm abi
22716 Show the currently used ABI.
22717
22718 @item set arm fallback-mode (arm|thumb|auto)
22719 @value{GDBN} uses the symbol table, when available, to determine
22720 whether instructions are ARM or Thumb. This command controls
22721 @value{GDBN}'s default behavior when the symbol table is not
22722 available. The default is @samp{auto}, which causes @value{GDBN} to
22723 use the current execution mode (from the @code{T} bit in the @code{CPSR}
22724 register).
22725
22726 @item show arm fallback-mode
22727 Show the current fallback instruction mode.
22728
22729 @item set arm force-mode (arm|thumb|auto)
22730 This command overrides use of the symbol table to determine whether
22731 instructions are ARM or Thumb. The default is @samp{auto}, which
22732 causes @value{GDBN} to use the symbol table and then the setting
22733 of @samp{set arm fallback-mode}.
22734
22735 @item show arm force-mode
22736 Show the current forced instruction mode.
22737
22738 @item set debug arm
22739 Toggle whether to display ARM-specific debugging messages from the ARM
22740 target support subsystem.
22741
22742 @item show debug arm
22743 Show whether ARM-specific debugging messages are enabled.
22744 @end table
22745
22746 @table @code
22747 @item target sim @r{[}@var{simargs}@r{]} @dots{}
22748 The @value{GDBN} ARM simulator accepts the following optional arguments.
22749
22750 @table @code
22751 @item --swi-support=@var{type}
22752 Tell the simulator which SWI interfaces to support. The argument
22753 @var{type} may be a comma separated list of the following values.
22754 The default value is @code{all}.
22755
22756 @table @code
22757 @item none
22758 @item demon
22759 @item angel
22760 @item redboot
22761 @item all
22762 @end table
22763 @end table
22764 @end table
22765
22766 @node M68K
22767 @subsection M68k
22768
22769 The Motorola m68k configuration includes ColdFire support.
22770
22771 @node MicroBlaze
22772 @subsection MicroBlaze
22773 @cindex Xilinx MicroBlaze
22774 @cindex XMD, Xilinx Microprocessor Debugger
22775
22776 The MicroBlaze is a soft-core processor supported on various Xilinx
22777 FPGAs, such as Spartan or Virtex series. Boards with these processors
22778 usually have JTAG ports which connect to a host system running the Xilinx
22779 Embedded Development Kit (EDK) or Software Development Kit (SDK).
22780 This host system is used to download the configuration bitstream to
22781 the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
22782 communicates with the target board using the JTAG interface and
22783 presents a @code{gdbserver} interface to the board. By default
22784 @code{xmd} uses port @code{1234}. (While it is possible to change
22785 this default port, it requires the use of undocumented @code{xmd}
22786 commands. Contact Xilinx support if you need to do this.)
22787
22788 Use these GDB commands to connect to the MicroBlaze target processor.
22789
22790 @table @code
22791 @item target remote :1234
22792 Use this command to connect to the target if you are running @value{GDBN}
22793 on the same system as @code{xmd}.
22794
22795 @item target remote @var{xmd-host}:1234
22796 Use this command to connect to the target if it is connected to @code{xmd}
22797 running on a different system named @var{xmd-host}.
22798
22799 @item load
22800 Use this command to download a program to the MicroBlaze target.
22801
22802 @item set debug microblaze @var{n}
22803 Enable MicroBlaze-specific debugging messages if non-zero.
22804
22805 @item show debug microblaze @var{n}
22806 Show MicroBlaze-specific debugging level.
22807 @end table
22808
22809 @node MIPS Embedded
22810 @subsection @acronym{MIPS} Embedded
22811
22812 @noindent
22813 @value{GDBN} supports these special commands for @acronym{MIPS} targets:
22814
22815 @table @code
22816 @item set mipsfpu double
22817 @itemx set mipsfpu single
22818 @itemx set mipsfpu none
22819 @itemx set mipsfpu auto
22820 @itemx show mipsfpu
22821 @kindex set mipsfpu
22822 @kindex show mipsfpu
22823 @cindex @acronym{MIPS} remote floating point
22824 @cindex floating point, @acronym{MIPS} remote
22825 If your target board does not support the @acronym{MIPS} floating point
22826 coprocessor, you should use the command @samp{set mipsfpu none} (if you
22827 need this, you may wish to put the command in your @value{GDBN} init
22828 file). This tells @value{GDBN} how to find the return value of
22829 functions which return floating point values. It also allows
22830 @value{GDBN} to avoid saving the floating point registers when calling
22831 functions on the board. If you are using a floating point coprocessor
22832 with only single precision floating point support, as on the @sc{r4650}
22833 processor, use the command @samp{set mipsfpu single}. The default
22834 double precision floating point coprocessor may be selected using
22835 @samp{set mipsfpu double}.
22836
22837 In previous versions the only choices were double precision or no
22838 floating point, so @samp{set mipsfpu on} will select double precision
22839 and @samp{set mipsfpu off} will select no floating point.
22840
22841 As usual, you can inquire about the @code{mipsfpu} variable with
22842 @samp{show mipsfpu}.
22843 @end table
22844
22845 @node OpenRISC 1000
22846 @subsection OpenRISC 1000
22847 @cindex OpenRISC 1000
22848
22849 @noindent
22850 The OpenRISC 1000 provides a free RISC instruction set architecture. It is
22851 mainly provided as a soft-core which can run on Xilinx, Altera and other
22852 FPGA's.
22853
22854 @value{GDBN} for OpenRISC supports the below commands when connecting to
22855 a target:
22856
22857 @table @code
22858
22859 @kindex target sim
22860 @item target sim
22861
22862 Runs the builtin CPU simulator which can run very basic
22863 programs but does not support most hardware functions like MMU.
22864 For more complex use cases the user is advised to run an external
22865 target, and connect using @samp{target remote}.
22866
22867 Example: @code{target sim}
22868
22869 @item set debug or1k
22870 Toggle whether to display OpenRISC-specific debugging messages from the
22871 OpenRISC target support subsystem.
22872
22873 @item show debug or1k
22874 Show whether OpenRISC-specific debugging messages are enabled.
22875 @end table
22876
22877 @node PowerPC Embedded
22878 @subsection PowerPC Embedded
22879
22880 @cindex DVC register
22881 @value{GDBN} supports using the DVC (Data Value Compare) register to
22882 implement in hardware simple hardware watchpoint conditions of the form:
22883
22884 @smallexample
22885 (@value{GDBP}) watch @var{ADDRESS|VARIABLE} \
22886 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION}
22887 @end smallexample
22888
22889 The DVC register will be automatically used when @value{GDBN} detects
22890 such pattern in a condition expression, and the created watchpoint uses one
22891 debug register (either the @code{exact-watchpoints} option is on and the
22892 variable is scalar, or the variable has a length of one byte). This feature
22893 is available in native @value{GDBN} running on a Linux kernel version 2.6.34
22894 or newer.
22895
22896 When running on PowerPC embedded processors, @value{GDBN} automatically uses
22897 ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on,
22898 in which case watchpoints using only one debug register are created when
22899 watching variables of scalar types.
22900
22901 You can create an artificial array to watch an arbitrary memory
22902 region using one of the following commands (@pxref{Expressions}):
22903
22904 @smallexample
22905 (@value{GDBP}) watch *((char *) @var{address})@@@var{length}
22906 (@value{GDBP}) watch @{char[@var{length}]@} @var{address}
22907 @end smallexample
22908
22909 PowerPC embedded processors support masked watchpoints. See the discussion
22910 about the @code{mask} argument in @ref{Set Watchpoints}.
22911
22912 @cindex ranged breakpoint
22913 PowerPC embedded processors support hardware accelerated
22914 @dfn{ranged breakpoints}. A ranged breakpoint stops execution of
22915 the inferior whenever it executes an instruction at any address within
22916 the range it specifies. To set a ranged breakpoint in @value{GDBN},
22917 use the @code{break-range} command.
22918
22919 @value{GDBN} provides the following PowerPC-specific commands:
22920
22921 @table @code
22922 @kindex break-range
22923 @item break-range @var{start-location}, @var{end-location}
22924 Set a breakpoint for an address range given by
22925 @var{start-location} and @var{end-location}, which can specify a function name,
22926 a line number, an offset of lines from the current line or from the start
22927 location, or an address of an instruction (see @ref{Specify Location},
22928 for a list of all the possible ways to specify a @var{location}.)
22929 The breakpoint will stop execution of the inferior whenever it
22930 executes an instruction at any address within the specified range,
22931 (including @var{start-location} and @var{end-location}.)
22932
22933 @kindex set powerpc
22934 @item set powerpc soft-float
22935 @itemx show powerpc soft-float
22936 Force @value{GDBN} to use (or not use) a software floating point calling
22937 convention. By default, @value{GDBN} selects the calling convention based
22938 on the selected architecture and the provided executable file.
22939
22940 @item set powerpc vector-abi
22941 @itemx show powerpc vector-abi
22942 Force @value{GDBN} to use the specified calling convention for vector
22943 arguments and return values. The valid options are @samp{auto};
22944 @samp{generic}, to avoid vector registers even if they are present;
22945 @samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
22946 registers. By default, @value{GDBN} selects the calling convention
22947 based on the selected architecture and the provided executable file.
22948
22949 @item set powerpc exact-watchpoints
22950 @itemx show powerpc exact-watchpoints
22951 Allow @value{GDBN} to use only one debug register when watching a variable
22952 of scalar type, thus assuming that the variable is accessed through the
22953 address of its first byte.
22954
22955 @end table
22956
22957 @node AVR
22958 @subsection Atmel AVR
22959 @cindex AVR
22960
22961 When configured for debugging the Atmel AVR, @value{GDBN} supports the
22962 following AVR-specific commands:
22963
22964 @table @code
22965 @item info io_registers
22966 @kindex info io_registers@r{, AVR}
22967 @cindex I/O registers (Atmel AVR)
22968 This command displays information about the AVR I/O registers. For
22969 each register, @value{GDBN} prints its number and value.
22970 @end table
22971
22972 @node CRIS
22973 @subsection CRIS
22974 @cindex CRIS
22975
22976 When configured for debugging CRIS, @value{GDBN} provides the
22977 following CRIS-specific commands:
22978
22979 @table @code
22980 @item set cris-version @var{ver}
22981 @cindex CRIS version
22982 Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
22983 The CRIS version affects register names and sizes. This command is useful in
22984 case autodetection of the CRIS version fails.
22985
22986 @item show cris-version
22987 Show the current CRIS version.
22988
22989 @item set cris-dwarf2-cfi
22990 @cindex DWARF-2 CFI and CRIS
22991 Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
22992 Change to @samp{off} when using @code{gcc-cris} whose version is below
22993 @code{R59}.
22994
22995 @item show cris-dwarf2-cfi
22996 Show the current state of using DWARF-2 CFI.
22997
22998 @item set cris-mode @var{mode}
22999 @cindex CRIS mode
23000 Set the current CRIS mode to @var{mode}. It should only be changed when
23001 debugging in guru mode, in which case it should be set to
23002 @samp{guru} (the default is @samp{normal}).
23003
23004 @item show cris-mode
23005 Show the current CRIS mode.
23006 @end table
23007
23008 @node Super-H
23009 @subsection Renesas Super-H
23010 @cindex Super-H
23011
23012 For the Renesas Super-H processor, @value{GDBN} provides these
23013 commands:
23014
23015 @table @code
23016 @item set sh calling-convention @var{convention}
23017 @kindex set sh calling-convention
23018 Set the calling-convention used when calling functions from @value{GDBN}.
23019 Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
23020 With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
23021 convention. If the DWARF-2 information of the called function specifies
23022 that the function follows the Renesas calling convention, the function
23023 is called using the Renesas calling convention. If the calling convention
23024 is set to @samp{renesas}, the Renesas calling convention is always used,
23025 regardless of the DWARF-2 information. This can be used to override the
23026 default of @samp{gcc} if debug information is missing, or the compiler
23027 does not emit the DWARF-2 calling convention entry for a function.
23028
23029 @item show sh calling-convention
23030 @kindex show sh calling-convention
23031 Show the current calling convention setting.
23032
23033 @end table
23034
23035
23036 @node Architectures
23037 @section Architectures
23038
23039 This section describes characteristics of architectures that affect
23040 all uses of @value{GDBN} with the architecture, both native and cross.
23041
23042 @menu
23043 * AArch64::
23044 * i386::
23045 * Alpha::
23046 * MIPS::
23047 * HPPA:: HP PA architecture
23048 * SPU:: Cell Broadband Engine SPU architecture
23049 * PowerPC::
23050 * Nios II::
23051 * Sparc64::
23052 @end menu
23053
23054 @node AArch64
23055 @subsection AArch64
23056 @cindex AArch64 support
23057
23058 When @value{GDBN} is debugging the AArch64 architecture, it provides the
23059 following special commands:
23060
23061 @table @code
23062 @item set debug aarch64
23063 @kindex set debug aarch64
23064 This command determines whether AArch64 architecture-specific debugging
23065 messages are to be displayed.
23066
23067 @item show debug aarch64
23068 Show whether AArch64 debugging messages are displayed.
23069
23070 @end table
23071
23072 @node i386
23073 @subsection x86 Architecture-specific Issues
23074
23075 @table @code
23076 @item set struct-convention @var{mode}
23077 @kindex set struct-convention
23078 @cindex struct return convention
23079 @cindex struct/union returned in registers
23080 Set the convention used by the inferior to return @code{struct}s and
23081 @code{union}s from functions to @var{mode}. Possible values of
23082 @var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
23083 default). @code{"default"} or @code{"pcc"} means that @code{struct}s
23084 are returned on the stack, while @code{"reg"} means that a
23085 @code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
23086 be returned in a register.
23087
23088 @item show struct-convention
23089 @kindex show struct-convention
23090 Show the current setting of the convention to return @code{struct}s
23091 from functions.
23092 @end table
23093
23094
23095 @subsubsection Intel @dfn{Memory Protection Extensions} (MPX).
23096 @cindex Intel Memory Protection Extensions (MPX).
23097
23098 Memory Protection Extension (MPX) adds the bound registers @samp{BND0}
23099 @footnote{The register named with capital letters represent the architecture
23100 registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values
23101 which are the lower bound and upper bound. Bounds are effective addresses or
23102 memory locations. The upper bounds are architecturally represented in 1's
23103 complement form. A bound having lower bound = 0, and upper bound = 0
23104 (1's complement of all bits set) will allow access to the entire address space.
23105
23106 @samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw}
23107 through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3}
23108 display the upper bound performing the complement of one operation on the
23109 upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the
23110 @value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it
23111 can also be noted that the upper bounds are inclusive.
23112
23113 As an example, assume that the register BND0 holds bounds for a pointer having
23114 access allowed for the range between 0x32 and 0x71. The values present on
23115 bnd0raw and bnd registers are presented as follows:
23116
23117 @smallexample
23118 bnd0raw = @{0x32, 0xffffffff8e@}
23119 bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64
23120 @end smallexample
23121
23122 This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any
23123 change on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its
23124 counterpart. When the bnd0@dots{}bnd3 registers are displayed via
23125 Python, the display includes the memory size, in bits, accessible to
23126 the pointer.
23127
23128 Bounds can also be stored in bounds tables, which are stored in
23129 application memory. These tables store bounds for pointers by specifying
23130 the bounds pointer's value along with its bounds. Evaluating and changing
23131 bounds located in bound tables is therefore interesting while investigating
23132 bugs on MPX context. @value{GDBN} provides commands for this purpose:
23133
23134 @table @code
23135 @item show mpx bound @var{pointer}
23136 @kindex show mpx bound
23137 Display bounds of the given @var{pointer}.
23138
23139 @item set mpx bound @var{pointer}, @var{lbound}, @var{ubound}
23140 @kindex set mpx bound
23141 Set the bounds of a pointer in the bound table.
23142 This command takes three parameters: @var{pointer} is the pointers
23143 whose bounds are to be changed, @var{lbound} and @var{ubound} are new values
23144 for lower and upper bounds respectively.
23145 @end table
23146
23147 When you call an inferior function on an Intel MPX enabled program,
23148 GDB sets the inferior's bound registers to the init (disabled) state
23149 before calling the function. As a consequence, bounds checks for the
23150 pointer arguments passed to the function will always pass.
23151
23152 This is necessary because when you call an inferior function, the
23153 program is usually in the middle of the execution of other function.
23154 Since at that point bound registers are in an arbitrary state, not
23155 clearing them would lead to random bound violations in the called
23156 function.
23157
23158 You can still examine the influence of the bound registers on the
23159 execution of the called function by stopping the execution of the
23160 called function at its prologue, setting bound registers, and
23161 continuing the execution. For example:
23162
23163 @smallexample
23164 $ break *upper
23165 Breakpoint 2 at 0x4009de: file i386-mpx-call.c, line 47.
23166 $ print upper (a, b, c, d, 1)
23167 Breakpoint 2, upper (a=0x0, b=0x6e0000005b, c=0x0, d=0x0, len=48)....
23168 $ print $bnd0
23169 @{lbound = 0x0, ubound = ffffffff@} : size -1
23170 @end smallexample
23171
23172 At this last step the value of bnd0 can be changed for investigation of bound
23173 violations caused along the execution of the call. In order to know how to
23174 set the bound registers or bound table for the call consult the ABI.
23175
23176 @node Alpha
23177 @subsection Alpha
23178
23179 See the following section.
23180
23181 @node MIPS
23182 @subsection @acronym{MIPS}
23183
23184 @cindex stack on Alpha
23185 @cindex stack on @acronym{MIPS}
23186 @cindex Alpha stack
23187 @cindex @acronym{MIPS} stack
23188 Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which
23189 sometimes requires @value{GDBN} to search backward in the object code to
23190 find the beginning of a function.
23191
23192 @cindex response time, @acronym{MIPS} debugging
23193 To improve response time (especially for embedded applications, where
23194 @value{GDBN} may be restricted to a slow serial line for this search)
23195 you may want to limit the size of this search, using one of these
23196 commands:
23197
23198 @table @code
23199 @cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS})
23200 @item set heuristic-fence-post @var{limit}
23201 Restrict @value{GDBN} to examining at most @var{limit} bytes in its
23202 search for the beginning of a function. A value of @var{0} (the
23203 default) means there is no limit. However, except for @var{0}, the
23204 larger the limit the more bytes @code{heuristic-fence-post} must search
23205 and therefore the longer it takes to run. You should only need to use
23206 this command when debugging a stripped executable.
23207
23208 @item show heuristic-fence-post
23209 Display the current limit.
23210 @end table
23211
23212 @noindent
23213 These commands are available @emph{only} when @value{GDBN} is configured
23214 for debugging programs on Alpha or @acronym{MIPS} processors.
23215
23216 Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS}
23217 programs:
23218
23219 @table @code
23220 @item set mips abi @var{arg}
23221 @kindex set mips abi
23222 @cindex set ABI for @acronym{MIPS}
23223 Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible
23224 values of @var{arg} are:
23225
23226 @table @samp
23227 @item auto
23228 The default ABI associated with the current binary (this is the
23229 default).
23230 @item o32
23231 @item o64
23232 @item n32
23233 @item n64
23234 @item eabi32
23235 @item eabi64
23236 @end table
23237
23238 @item show mips abi
23239 @kindex show mips abi
23240 Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior.
23241
23242 @item set mips compression @var{arg}
23243 @kindex set mips compression
23244 @cindex code compression, @acronym{MIPS}
23245 Tell @value{GDBN} which @acronym{MIPS} compressed
23246 @acronym{ISA, Instruction Set Architecture} encoding is used by the
23247 inferior. @value{GDBN} uses this for code disassembly and other
23248 internal interpretation purposes. This setting is only referred to
23249 when no executable has been associated with the debugging session or
23250 the executable does not provide information about the encoding it uses.
23251 Otherwise this setting is automatically updated from information
23252 provided by the executable.
23253
23254 Possible values of @var{arg} are @samp{mips16} and @samp{micromips}.
23255 The default compressed @acronym{ISA} encoding is @samp{mips16}, as
23256 executables containing @acronym{MIPS16} code frequently are not
23257 identified as such.
23258
23259 This setting is ``sticky''; that is, it retains its value across
23260 debugging sessions until reset either explicitly with this command or
23261 implicitly from an executable.
23262
23263 The compiler and/or assembler typically add symbol table annotations to
23264 identify functions compiled for the @acronym{MIPS16} or
23265 @acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations
23266 are present, @value{GDBN} uses them in preference to the global
23267 compressed @acronym{ISA} encoding setting.
23268
23269 @item show mips compression
23270 @kindex show mips compression
23271 Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by
23272 @value{GDBN} to debug the inferior.
23273
23274 @item set mipsfpu
23275 @itemx show mipsfpu
23276 @xref{MIPS Embedded, set mipsfpu}.
23277
23278 @item set mips mask-address @var{arg}
23279 @kindex set mips mask-address
23280 @cindex @acronym{MIPS} addresses, masking
23281 This command determines whether the most-significant 32 bits of 64-bit
23282 @acronym{MIPS} addresses are masked off. The argument @var{arg} can be
23283 @samp{on}, @samp{off}, or @samp{auto}. The latter is the default
23284 setting, which lets @value{GDBN} determine the correct value.
23285
23286 @item show mips mask-address
23287 @kindex show mips mask-address
23288 Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or
23289 not.
23290
23291 @item set remote-mips64-transfers-32bit-regs
23292 @kindex set remote-mips64-transfers-32bit-regs
23293 This command controls compatibility with 64-bit @acronym{MIPS} targets that
23294 transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target
23295 that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
23296 and 64 bits for other registers, set this option to @samp{on}.
23297
23298 @item show remote-mips64-transfers-32bit-regs
23299 @kindex show remote-mips64-transfers-32bit-regs
23300 Show the current setting of compatibility with older @acronym{MIPS} 64 targets.
23301
23302 @item set debug mips
23303 @kindex set debug mips
23304 This command turns on and off debugging messages for the @acronym{MIPS}-specific
23305 target code in @value{GDBN}.
23306
23307 @item show debug mips
23308 @kindex show debug mips
23309 Show the current setting of @acronym{MIPS} debugging messages.
23310 @end table
23311
23312
23313 @node HPPA
23314 @subsection HPPA
23315 @cindex HPPA support
23316
23317 When @value{GDBN} is debugging the HP PA architecture, it provides the
23318 following special commands:
23319
23320 @table @code
23321 @item set debug hppa
23322 @kindex set debug hppa
23323 This command determines whether HPPA architecture-specific debugging
23324 messages are to be displayed.
23325
23326 @item show debug hppa
23327 Show whether HPPA debugging messages are displayed.
23328
23329 @item maint print unwind @var{address}
23330 @kindex maint print unwind@r{, HPPA}
23331 This command displays the contents of the unwind table entry at the
23332 given @var{address}.
23333
23334 @end table
23335
23336
23337 @node SPU
23338 @subsection Cell Broadband Engine SPU architecture
23339 @cindex Cell Broadband Engine
23340 @cindex SPU
23341
23342 When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
23343 it provides the following special commands:
23344
23345 @table @code
23346 @item info spu event
23347 @kindex info spu
23348 Display SPU event facility status. Shows current event mask
23349 and pending event status.
23350
23351 @item info spu signal
23352 Display SPU signal notification facility status. Shows pending
23353 signal-control word and signal notification mode of both signal
23354 notification channels.
23355
23356 @item info spu mailbox
23357 Display SPU mailbox facility status. Shows all pending entries,
23358 in order of processing, in each of the SPU Write Outbound,
23359 SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
23360
23361 @item info spu dma
23362 Display MFC DMA status. Shows all pending commands in the MFC
23363 DMA queue. For each entry, opcode, tag, class IDs, effective
23364 and local store addresses and transfer size are shown.
23365
23366 @item info spu proxydma
23367 Display MFC Proxy-DMA status. Shows all pending commands in the MFC
23368 Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
23369 and local store addresses and transfer size are shown.
23370
23371 @end table
23372
23373 When @value{GDBN} is debugging a combined PowerPC/SPU application
23374 on the Cell Broadband Engine, it provides in addition the following
23375 special commands:
23376
23377 @table @code
23378 @item set spu stop-on-load @var{arg}
23379 @kindex set spu
23380 Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
23381 will give control to the user when a new SPE thread enters its @code{main}
23382 function. The default is @code{off}.
23383
23384 @item show spu stop-on-load
23385 @kindex show spu
23386 Show whether to stop for new SPE threads.
23387
23388 @item set spu auto-flush-cache @var{arg}
23389 Set whether to automatically flush the software-managed cache. When set to
23390 @code{on}, @value{GDBN} will automatically cause the SPE software-managed
23391 cache to be flushed whenever SPE execution stops. This provides a consistent
23392 view of PowerPC memory that is accessed via the cache. If an application
23393 does not use the software-managed cache, this option has no effect.
23394
23395 @item show spu auto-flush-cache
23396 Show whether to automatically flush the software-managed cache.
23397
23398 @end table
23399
23400 @node PowerPC
23401 @subsection PowerPC
23402 @cindex PowerPC architecture
23403
23404 When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
23405 pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
23406 numbers stored in the floating point registers. These values must be stored
23407 in two consecutive registers, always starting at an even register like
23408 @code{f0} or @code{f2}.
23409
23410 The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
23411 by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
23412 @code{f2} and @code{f3} for @code{$dl1} and so on.
23413
23414 For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
23415 wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
23416
23417 @node Nios II
23418 @subsection Nios II
23419 @cindex Nios II architecture
23420
23421 When @value{GDBN} is debugging the Nios II architecture,
23422 it provides the following special commands:
23423
23424 @table @code
23425
23426 @item set debug nios2
23427 @kindex set debug nios2
23428 This command turns on and off debugging messages for the Nios II
23429 target code in @value{GDBN}.
23430
23431 @item show debug nios2
23432 @kindex show debug nios2
23433 Show the current setting of Nios II debugging messages.
23434 @end table
23435
23436 @node Sparc64
23437 @subsection Sparc64
23438 @cindex Sparc64 support
23439 @cindex Application Data Integrity
23440 @subsubsection ADI Support
23441
23442 The M7 processor supports an Application Data Integrity (ADI) feature that
23443 detects invalid data accesses. When software allocates memory and enables
23444 ADI on the allocated memory, it chooses a 4-bit version number, sets the
23445 version in the upper 4 bits of the 64-bit pointer to that data, and stores
23446 the 4-bit version in every cacheline of that data. Hardware saves the latter
23447 in spare bits in the cache and memory hierarchy. On each load and store,
23448 the processor compares the upper 4 VA (virtual address) bits to the
23449 cacheline's version. If there is a mismatch, the processor generates a
23450 version mismatch trap which can be either precise or disrupting. The trap
23451 is an error condition which the kernel delivers to the process as a SIGSEGV
23452 signal.
23453
23454 Note that only 64-bit applications can use ADI and need to be built with
23455 ADI-enabled.
23456
23457 Values of the ADI version tags, which are in granularity of a
23458 cacheline (64 bytes), can be viewed or modified.
23459
23460
23461 @table @code
23462 @kindex adi examine
23463 @item adi (examine | x) [ / @var{n} ] @var{addr}
23464
23465 The @code{adi examine} command displays the value of one ADI version tag per
23466 cacheline.
23467
23468 @var{n} is a decimal integer specifying the number in bytes; the default
23469 is 1. It specifies how much ADI version information, at the ratio of 1:ADI
23470 block size, to display.
23471
23472 @var{addr} is the address in user address space where you want @value{GDBN}
23473 to begin displaying the ADI version tags.
23474
23475 Below is an example of displaying ADI versions of variable "shmaddr".
23476
23477 @smallexample
23478 (@value{GDBP}) adi x/100 shmaddr
23479 0xfff800010002c000: 0 0
23480 @end smallexample
23481
23482 @kindex adi assign
23483 @item adi (assign | a) [ / @var{n} ] @var{addr} = @var{tag}
23484
23485 The @code{adi assign} command is used to assign new ADI version tag
23486 to an address.
23487
23488 @var{n} is a decimal integer specifying the number in bytes;
23489 the default is 1. It specifies how much ADI version information, at the
23490 ratio of 1:ADI block size, to modify.
23491
23492 @var{addr} is the address in user address space where you want @value{GDBN}
23493 to begin modifying the ADI version tags.
23494
23495 @var{tag} is the new ADI version tag.
23496
23497 For example, do the following to modify then verify ADI versions of
23498 variable "shmaddr":
23499
23500 @smallexample
23501 (@value{GDBP}) adi a/100 shmaddr = 7
23502 (@value{GDBP}) adi x/100 shmaddr
23503 0xfff800010002c000: 7 7
23504 @end smallexample
23505
23506 @end table
23507
23508 @node Controlling GDB
23509 @chapter Controlling @value{GDBN}
23510
23511 You can alter the way @value{GDBN} interacts with you by using the
23512 @code{set} command. For commands controlling how @value{GDBN} displays
23513 data, see @ref{Print Settings, ,Print Settings}. Other settings are
23514 described here.
23515
23516 @menu
23517 * Prompt:: Prompt
23518 * Editing:: Command editing
23519 * Command History:: Command history
23520 * Screen Size:: Screen size
23521 * Numbers:: Numbers
23522 * ABI:: Configuring the current ABI
23523 * Auto-loading:: Automatically loading associated files
23524 * Messages/Warnings:: Optional warnings and messages
23525 * Debugging Output:: Optional messages about internal happenings
23526 * Other Misc Settings:: Other Miscellaneous Settings
23527 @end menu
23528
23529 @node Prompt
23530 @section Prompt
23531
23532 @cindex prompt
23533
23534 @value{GDBN} indicates its readiness to read a command by printing a string
23535 called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
23536 can change the prompt string with the @code{set prompt} command. For
23537 instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
23538 the prompt in one of the @value{GDBN} sessions so that you can always tell
23539 which one you are talking to.
23540
23541 @emph{Note:} @code{set prompt} does not add a space for you after the
23542 prompt you set. This allows you to set a prompt which ends in a space
23543 or a prompt that does not.
23544
23545 @table @code
23546 @kindex set prompt
23547 @item set prompt @var{newprompt}
23548 Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
23549
23550 @kindex show prompt
23551 @item show prompt
23552 Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
23553 @end table
23554
23555 Versions of @value{GDBN} that ship with Python scripting enabled have
23556 prompt extensions. The commands for interacting with these extensions
23557 are:
23558
23559 @table @code
23560 @kindex set extended-prompt
23561 @item set extended-prompt @var{prompt}
23562 Set an extended prompt that allows for substitutions.
23563 @xref{gdb.prompt}, for a list of escape sequences that can be used for
23564 substitution. Any escape sequences specified as part of the prompt
23565 string are replaced with the corresponding strings each time the prompt
23566 is displayed.
23567
23568 For example:
23569
23570 @smallexample
23571 set extended-prompt Current working directory: \w (gdb)
23572 @end smallexample
23573
23574 Note that when an extended-prompt is set, it takes control of the
23575 @var{prompt_hook} hook. @xref{prompt_hook}, for further information.
23576
23577 @kindex show extended-prompt
23578 @item show extended-prompt
23579 Prints the extended prompt. Any escape sequences specified as part of
23580 the prompt string with @code{set extended-prompt}, are replaced with the
23581 corresponding strings each time the prompt is displayed.
23582 @end table
23583
23584 @node Editing
23585 @section Command Editing
23586 @cindex readline
23587 @cindex command line editing
23588
23589 @value{GDBN} reads its input commands via the @dfn{Readline} interface. This
23590 @sc{gnu} library provides consistent behavior for programs which provide a
23591 command line interface to the user. Advantages are @sc{gnu} Emacs-style
23592 or @dfn{vi}-style inline editing of commands, @code{csh}-like history
23593 substitution, and a storage and recall of command history across
23594 debugging sessions.
23595
23596 You may control the behavior of command line editing in @value{GDBN} with the
23597 command @code{set}.
23598
23599 @table @code
23600 @kindex set editing
23601 @cindex editing
23602 @item set editing
23603 @itemx set editing on
23604 Enable command line editing (enabled by default).
23605
23606 @item set editing off
23607 Disable command line editing.
23608
23609 @kindex show editing
23610 @item show editing
23611 Show whether command line editing is enabled.
23612 @end table
23613
23614 @ifset SYSTEM_READLINE
23615 @xref{Command Line Editing, , , rluserman, GNU Readline Library},
23616 @end ifset
23617 @ifclear SYSTEM_READLINE
23618 @xref{Command Line Editing},
23619 @end ifclear
23620 for more details about the Readline
23621 interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
23622 encouraged to read that chapter.
23623
23624 @node Command History
23625 @section Command History
23626 @cindex command history
23627
23628 @value{GDBN} can keep track of the commands you type during your
23629 debugging sessions, so that you can be certain of precisely what
23630 happened. Use these commands to manage the @value{GDBN} command
23631 history facility.
23632
23633 @value{GDBN} uses the @sc{gnu} History library, a part of the Readline
23634 package, to provide the history facility.
23635 @ifset SYSTEM_READLINE
23636 @xref{Using History Interactively, , , history, GNU History Library},
23637 @end ifset
23638 @ifclear SYSTEM_READLINE
23639 @xref{Using History Interactively},
23640 @end ifclear
23641 for the detailed description of the History library.
23642
23643 To issue a command to @value{GDBN} without affecting certain aspects of
23644 the state which is seen by users, prefix it with @samp{server }
23645 (@pxref{Server Prefix}). This
23646 means that this command will not affect the command history, nor will it
23647 affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
23648 pressed on a line by itself.
23649
23650 @cindex @code{server}, command prefix
23651 The server prefix does not affect the recording of values into the value
23652 history; to print a value without recording it into the value history,
23653 use the @code{output} command instead of the @code{print} command.
23654
23655 Here is the description of @value{GDBN} commands related to command
23656 history.
23657
23658 @table @code
23659 @cindex history substitution
23660 @cindex history file
23661 @kindex set history filename
23662 @cindex @env{GDBHISTFILE}, environment variable
23663 @item set history filename @var{fname}
23664 Set the name of the @value{GDBN} command history file to @var{fname}.
23665 This is the file where @value{GDBN} reads an initial command history
23666 list, and where it writes the command history from this session when it
23667 exits. You can access this list through history expansion or through
23668 the history command editing characters listed below. This file defaults
23669 to the value of the environment variable @code{GDBHISTFILE}, or to
23670 @file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
23671 is not set.
23672
23673 @cindex save command history
23674 @kindex set history save
23675 @item set history save
23676 @itemx set history save on
23677 Record command history in a file, whose name may be specified with the
23678 @code{set history filename} command. By default, this option is disabled.
23679
23680 @item set history save off
23681 Stop recording command history in a file.
23682
23683 @cindex history size
23684 @kindex set history size
23685 @cindex @env{GDBHISTSIZE}, environment variable
23686 @item set history size @var{size}
23687 @itemx set history size unlimited
23688 Set the number of commands which @value{GDBN} keeps in its history list.
23689 This defaults to the value of the environment variable @env{GDBHISTSIZE}, or
23690 to 256 if this variable is not set. Non-numeric values of @env{GDBHISTSIZE}
23691 are ignored. If @var{size} is @code{unlimited} or if @env{GDBHISTSIZE} is
23692 either a negative number or the empty string, then the number of commands
23693 @value{GDBN} keeps in the history list is unlimited.
23694
23695 @cindex remove duplicate history
23696 @kindex set history remove-duplicates
23697 @item set history remove-duplicates @var{count}
23698 @itemx set history remove-duplicates unlimited
23699 Control the removal of duplicate history entries in the command history list.
23700 If @var{count} is non-zero, @value{GDBN} will look back at the last @var{count}
23701 history entries and remove the first entry that is a duplicate of the current
23702 entry being added to the command history list. If @var{count} is
23703 @code{unlimited} then this lookbehind is unbounded. If @var{count} is 0, then
23704 removal of duplicate history entries is disabled.
23705
23706 Only history entries added during the current session are considered for
23707 removal. This option is set to 0 by default.
23708
23709 @end table
23710
23711 History expansion assigns special meaning to the character @kbd{!}.
23712 @ifset SYSTEM_READLINE
23713 @xref{Event Designators, , , history, GNU History Library},
23714 @end ifset
23715 @ifclear SYSTEM_READLINE
23716 @xref{Event Designators},
23717 @end ifclear
23718 for more details.
23719
23720 @cindex history expansion, turn on/off
23721 Since @kbd{!} is also the logical not operator in C, history expansion
23722 is off by default. If you decide to enable history expansion with the
23723 @code{set history expansion on} command, you may sometimes need to
23724 follow @kbd{!} (when it is used as logical not, in an expression) with
23725 a space or a tab to prevent it from being expanded. The readline
23726 history facilities do not attempt substitution on the strings
23727 @kbd{!=} and @kbd{!(}, even when history expansion is enabled.
23728
23729 The commands to control history expansion are:
23730
23731 @table @code
23732 @item set history expansion on
23733 @itemx set history expansion
23734 @kindex set history expansion
23735 Enable history expansion. History expansion is off by default.
23736
23737 @item set history expansion off
23738 Disable history expansion.
23739
23740 @c @group
23741 @kindex show history
23742 @item show history
23743 @itemx show history filename
23744 @itemx show history save
23745 @itemx show history size
23746 @itemx show history expansion
23747 These commands display the state of the @value{GDBN} history parameters.
23748 @code{show history} by itself displays all four states.
23749 @c @end group
23750 @end table
23751
23752 @table @code
23753 @kindex show commands
23754 @cindex show last commands
23755 @cindex display command history
23756 @item show commands
23757 Display the last ten commands in the command history.
23758
23759 @item show commands @var{n}
23760 Print ten commands centered on command number @var{n}.
23761
23762 @item show commands +
23763 Print ten commands just after the commands last printed.
23764 @end table
23765
23766 @node Screen Size
23767 @section Screen Size
23768 @cindex size of screen
23769 @cindex screen size
23770 @cindex pagination
23771 @cindex page size
23772 @cindex pauses in output
23773
23774 Certain commands to @value{GDBN} may produce large amounts of
23775 information output to the screen. To help you read all of it,
23776 @value{GDBN} pauses and asks you for input at the end of each page of
23777 output. Type @key{RET} when you want to continue the output, or @kbd{q}
23778 to discard the remaining output. Also, the screen width setting
23779 determines when to wrap lines of output. Depending on what is being
23780 printed, @value{GDBN} tries to break the line at a readable place,
23781 rather than simply letting it overflow onto the following line.
23782
23783 Normally @value{GDBN} knows the size of the screen from the terminal
23784 driver software. For example, on Unix @value{GDBN} uses the termcap data base
23785 together with the value of the @code{TERM} environment variable and the
23786 @code{stty rows} and @code{stty cols} settings. If this is not correct,
23787 you can override it with the @code{set height} and @code{set
23788 width} commands:
23789
23790 @table @code
23791 @kindex set height
23792 @kindex set width
23793 @kindex show width
23794 @kindex show height
23795 @item set height @var{lpp}
23796 @itemx set height unlimited
23797 @itemx show height
23798 @itemx set width @var{cpl}
23799 @itemx set width unlimited
23800 @itemx show width
23801 These @code{set} commands specify a screen height of @var{lpp} lines and
23802 a screen width of @var{cpl} characters. The associated @code{show}
23803 commands display the current settings.
23804
23805 If you specify a height of either @code{unlimited} or zero lines,
23806 @value{GDBN} does not pause during output no matter how long the
23807 output is. This is useful if output is to a file or to an editor
23808 buffer.
23809
23810 Likewise, you can specify @samp{set width unlimited} or @samp{set
23811 width 0} to prevent @value{GDBN} from wrapping its output.
23812
23813 @item set pagination on
23814 @itemx set pagination off
23815 @kindex set pagination
23816 Turn the output pagination on or off; the default is on. Turning
23817 pagination off is the alternative to @code{set height unlimited}. Note that
23818 running @value{GDBN} with the @option{--batch} option (@pxref{Mode
23819 Options, -batch}) also automatically disables pagination.
23820
23821 @item show pagination
23822 @kindex show pagination
23823 Show the current pagination mode.
23824 @end table
23825
23826 @node Numbers
23827 @section Numbers
23828 @cindex number representation
23829 @cindex entering numbers
23830
23831 You can always enter numbers in octal, decimal, or hexadecimal in
23832 @value{GDBN} by the usual conventions: octal numbers begin with
23833 @samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
23834 begin with @samp{0x}. Numbers that neither begin with @samp{0} or
23835 @samp{0x}, nor end with a @samp{.} are, by default, entered in base
23836 10; likewise, the default display for numbers---when no particular
23837 format is specified---is base 10. You can change the default base for
23838 both input and output with the commands described below.
23839
23840 @table @code
23841 @kindex set input-radix
23842 @item set input-radix @var{base}
23843 Set the default base for numeric input. Supported choices
23844 for @var{base} are decimal 8, 10, or 16. The base must itself be
23845 specified either unambiguously or using the current input radix; for
23846 example, any of
23847
23848 @smallexample
23849 set input-radix 012
23850 set input-radix 10.
23851 set input-radix 0xa
23852 @end smallexample
23853
23854 @noindent
23855 sets the input base to decimal. On the other hand, @samp{set input-radix 10}
23856 leaves the input radix unchanged, no matter what it was, since
23857 @samp{10}, being without any leading or trailing signs of its base, is
23858 interpreted in the current radix. Thus, if the current radix is 16,
23859 @samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
23860 change the radix.
23861
23862 @kindex set output-radix
23863 @item set output-radix @var{base}
23864 Set the default base for numeric display. Supported choices
23865 for @var{base} are decimal 8, 10, or 16. The base must itself be
23866 specified either unambiguously or using the current input radix.
23867
23868 @kindex show input-radix
23869 @item show input-radix
23870 Display the current default base for numeric input.
23871
23872 @kindex show output-radix
23873 @item show output-radix
23874 Display the current default base for numeric display.
23875
23876 @item set radix @r{[}@var{base}@r{]}
23877 @itemx show radix
23878 @kindex set radix
23879 @kindex show radix
23880 These commands set and show the default base for both input and output
23881 of numbers. @code{set radix} sets the radix of input and output to
23882 the same base; without an argument, it resets the radix back to its
23883 default value of 10.
23884
23885 @end table
23886
23887 @node ABI
23888 @section Configuring the Current ABI
23889
23890 @value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
23891 application automatically. However, sometimes you need to override its
23892 conclusions. Use these commands to manage @value{GDBN}'s view of the
23893 current ABI.
23894
23895 @cindex OS ABI
23896 @kindex set osabi
23897 @kindex show osabi
23898 @cindex Newlib OS ABI and its influence on the longjmp handling
23899
23900 One @value{GDBN} configuration can debug binaries for multiple operating
23901 system targets, either via remote debugging or native emulation.
23902 @value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
23903 but you can override its conclusion using the @code{set osabi} command.
23904 One example where this is useful is in debugging of binaries which use
23905 an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
23906 not have the same identifying marks that the standard C library for your
23907 platform provides.
23908
23909 When @value{GDBN} is debugging the AArch64 architecture, it provides a
23910 ``Newlib'' OS ABI. This is useful for handling @code{setjmp} and
23911 @code{longjmp} when debugging binaries that use the @sc{newlib} C library.
23912 The ``Newlib'' OS ABI can be selected by @code{set osabi Newlib}.
23913
23914 @table @code
23915 @item show osabi
23916 Show the OS ABI currently in use.
23917
23918 @item set osabi
23919 With no argument, show the list of registered available OS ABI's.
23920
23921 @item set osabi @var{abi}
23922 Set the current OS ABI to @var{abi}.
23923 @end table
23924
23925 @cindex float promotion
23926
23927 Generally, the way that an argument of type @code{float} is passed to a
23928 function depends on whether the function is prototyped. For a prototyped
23929 (i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
23930 according to the architecture's convention for @code{float}. For unprototyped
23931 (i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
23932 @code{double} and then passed.
23933
23934 Unfortunately, some forms of debug information do not reliably indicate whether
23935 a function is prototyped. If @value{GDBN} calls a function that is not marked
23936 as prototyped, it consults @kbd{set coerce-float-to-double}.
23937
23938 @table @code
23939 @kindex set coerce-float-to-double
23940 @item set coerce-float-to-double
23941 @itemx set coerce-float-to-double on
23942 Arguments of type @code{float} will be promoted to @code{double} when passed
23943 to an unprototyped function. This is the default setting.
23944
23945 @item set coerce-float-to-double off
23946 Arguments of type @code{float} will be passed directly to unprototyped
23947 functions.
23948
23949 @kindex show coerce-float-to-double
23950 @item show coerce-float-to-double
23951 Show the current setting of promoting @code{float} to @code{double}.
23952 @end table
23953
23954 @kindex set cp-abi
23955 @kindex show cp-abi
23956 @value{GDBN} needs to know the ABI used for your program's C@t{++}
23957 objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
23958 used to build your application. @value{GDBN} only fully supports
23959 programs with a single C@t{++} ABI; if your program contains code using
23960 multiple C@t{++} ABI's or if @value{GDBN} can not identify your
23961 program's ABI correctly, you can tell @value{GDBN} which ABI to use.
23962 Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
23963 before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
23964 ``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
23965 use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
23966 ``auto''.
23967
23968 @table @code
23969 @item show cp-abi
23970 Show the C@t{++} ABI currently in use.
23971
23972 @item set cp-abi
23973 With no argument, show the list of supported C@t{++} ABI's.
23974
23975 @item set cp-abi @var{abi}
23976 @itemx set cp-abi auto
23977 Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
23978 @end table
23979
23980 @node Auto-loading
23981 @section Automatically loading associated files
23982 @cindex auto-loading
23983
23984 @value{GDBN} sometimes reads files with commands and settings automatically,
23985 without being explicitly told so by the user. We call this feature
23986 @dfn{auto-loading}. While auto-loading is useful for automatically adapting
23987 @value{GDBN} to the needs of your project, it can sometimes produce unexpected
23988 results or introduce security risks (e.g., if the file comes from untrusted
23989 sources).
23990
23991 @menu
23992 * Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit}
23993 * libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db}
23994
23995 * Auto-loading safe path:: @samp{set/show/info auto-load safe-path}
23996 * Auto-loading verbose mode:: @samp{set/show debug auto-load}
23997 @end menu
23998
23999 There are various kinds of files @value{GDBN} can automatically load.
24000 In addition to these files, @value{GDBN} supports auto-loading code written
24001 in various extension languages. @xref{Auto-loading extensions}.
24002
24003 Note that loading of these associated files (including the local @file{.gdbinit}
24004 file) requires accordingly configured @code{auto-load safe-path}
24005 (@pxref{Auto-loading safe path}).
24006
24007 For these reasons, @value{GDBN} includes commands and options to let you
24008 control when to auto-load files and which files should be auto-loaded.
24009
24010 @table @code
24011 @anchor{set auto-load off}
24012 @kindex set auto-load off
24013 @item set auto-load off
24014 Globally disable loading of all auto-loaded files.
24015 You may want to use this command with the @samp{-iex} option
24016 (@pxref{Option -init-eval-command}) such as:
24017 @smallexample
24018 $ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile}
24019 @end smallexample
24020
24021 Be aware that system init file (@pxref{System-wide configuration})
24022 and init files from your home directory (@pxref{Home Directory Init File})
24023 still get read (as they come from generally trusted directories).
24024 To prevent @value{GDBN} from auto-loading even those init files, use the
24025 @option{-nx} option (@pxref{Mode Options}), in addition to
24026 @code{set auto-load no}.
24027
24028 @anchor{show auto-load}
24029 @kindex show auto-load
24030 @item show auto-load
24031 Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled
24032 or disabled.
24033
24034 @smallexample
24035 (gdb) show auto-load
24036 gdb-scripts: Auto-loading of canned sequences of commands scripts is on.
24037 libthread-db: Auto-loading of inferior specific libthread_db is on.
24038 local-gdbinit: Auto-loading of .gdbinit script from current directory
24039 is on.
24040 python-scripts: Auto-loading of Python scripts is on.
24041 safe-path: List of directories from which it is safe to auto-load files
24042 is $debugdir:$datadir/auto-load.
24043 scripts-directory: List of directories from which to load auto-loaded scripts
24044 is $debugdir:$datadir/auto-load.
24045 @end smallexample
24046
24047 @anchor{info auto-load}
24048 @kindex info auto-load
24049 @item info auto-load
24050 Print whether each specific @samp{auto-load} file(s) have been auto-loaded or
24051 not.
24052
24053 @smallexample
24054 (gdb) info auto-load
24055 gdb-scripts:
24056 Loaded Script
24057 Yes /home/user/gdb/gdb-gdb.gdb
24058 libthread-db: No auto-loaded libthread-db.
24059 local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been
24060 loaded.
24061 python-scripts:
24062 Loaded Script
24063 Yes /home/user/gdb/gdb-gdb.py
24064 @end smallexample
24065 @end table
24066
24067 These are @value{GDBN} control commands for the auto-loading:
24068
24069 @multitable @columnfractions .5 .5
24070 @item @xref{set auto-load off}.
24071 @tab Disable auto-loading globally.
24072 @item @xref{show auto-load}.
24073 @tab Show setting of all kinds of files.
24074 @item @xref{info auto-load}.
24075 @tab Show state of all kinds of files.
24076 @item @xref{set auto-load gdb-scripts}.
24077 @tab Control for @value{GDBN} command scripts.
24078 @item @xref{show auto-load gdb-scripts}.
24079 @tab Show setting of @value{GDBN} command scripts.
24080 @item @xref{info auto-load gdb-scripts}.
24081 @tab Show state of @value{GDBN} command scripts.
24082 @item @xref{set auto-load python-scripts}.
24083 @tab Control for @value{GDBN} Python scripts.
24084 @item @xref{show auto-load python-scripts}.
24085 @tab Show setting of @value{GDBN} Python scripts.
24086 @item @xref{info auto-load python-scripts}.
24087 @tab Show state of @value{GDBN} Python scripts.
24088 @item @xref{set auto-load guile-scripts}.
24089 @tab Control for @value{GDBN} Guile scripts.
24090 @item @xref{show auto-load guile-scripts}.
24091 @tab Show setting of @value{GDBN} Guile scripts.
24092 @item @xref{info auto-load guile-scripts}.
24093 @tab Show state of @value{GDBN} Guile scripts.
24094 @item @xref{set auto-load scripts-directory}.
24095 @tab Control for @value{GDBN} auto-loaded scripts location.
24096 @item @xref{show auto-load scripts-directory}.
24097 @tab Show @value{GDBN} auto-loaded scripts location.
24098 @item @xref{add-auto-load-scripts-directory}.
24099 @tab Add directory for auto-loaded scripts location list.
24100 @item @xref{set auto-load local-gdbinit}.
24101 @tab Control for init file in the current directory.
24102 @item @xref{show auto-load local-gdbinit}.
24103 @tab Show setting of init file in the current directory.
24104 @item @xref{info auto-load local-gdbinit}.
24105 @tab Show state of init file in the current directory.
24106 @item @xref{set auto-load libthread-db}.
24107 @tab Control for thread debugging library.
24108 @item @xref{show auto-load libthread-db}.
24109 @tab Show setting of thread debugging library.
24110 @item @xref{info auto-load libthread-db}.
24111 @tab Show state of thread debugging library.
24112 @item @xref{set auto-load safe-path}.
24113 @tab Control directories trusted for automatic loading.
24114 @item @xref{show auto-load safe-path}.
24115 @tab Show directories trusted for automatic loading.
24116 @item @xref{add-auto-load-safe-path}.
24117 @tab Add directory trusted for automatic loading.
24118 @end multitable
24119
24120 @node Init File in the Current Directory
24121 @subsection Automatically loading init file in the current directory
24122 @cindex auto-loading init file in the current directory
24123
24124 By default, @value{GDBN} reads and executes the canned sequences of commands
24125 from init file (if any) in the current working directory,
24126 see @ref{Init File in the Current Directory during Startup}.
24127
24128 Note that loading of this local @file{.gdbinit} file also requires accordingly
24129 configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
24130
24131 @table @code
24132 @anchor{set auto-load local-gdbinit}
24133 @kindex set auto-load local-gdbinit
24134 @item set auto-load local-gdbinit [on|off]
24135 Enable or disable the auto-loading of canned sequences of commands
24136 (@pxref{Sequences}) found in init file in the current directory.
24137
24138 @anchor{show auto-load local-gdbinit}
24139 @kindex show auto-load local-gdbinit
24140 @item show auto-load local-gdbinit
24141 Show whether auto-loading of canned sequences of commands from init file in the
24142 current directory is enabled or disabled.
24143
24144 @anchor{info auto-load local-gdbinit}
24145 @kindex info auto-load local-gdbinit
24146 @item info auto-load local-gdbinit
24147 Print whether canned sequences of commands from init file in the
24148 current directory have been auto-loaded.
24149 @end table
24150
24151 @node libthread_db.so.1 file
24152 @subsection Automatically loading thread debugging library
24153 @cindex auto-loading libthread_db.so.1
24154
24155 This feature is currently present only on @sc{gnu}/Linux native hosts.
24156
24157 @value{GDBN} reads in some cases thread debugging library from places specific
24158 to the inferior (@pxref{set libthread-db-search-path}).
24159
24160 The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed
24161 without checking this @samp{set auto-load libthread-db} switch as system
24162 libraries have to be trusted in general. In all other cases of
24163 @samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set
24164 auto-load libthread-db} is enabled before trying to open such thread debugging
24165 library.
24166
24167 Note that loading of this debugging library also requires accordingly configured
24168 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
24169
24170 @table @code
24171 @anchor{set auto-load libthread-db}
24172 @kindex set auto-load libthread-db
24173 @item set auto-load libthread-db [on|off]
24174 Enable or disable the auto-loading of inferior specific thread debugging library.
24175
24176 @anchor{show auto-load libthread-db}
24177 @kindex show auto-load libthread-db
24178 @item show auto-load libthread-db
24179 Show whether auto-loading of inferior specific thread debugging library is
24180 enabled or disabled.
24181
24182 @anchor{info auto-load libthread-db}
24183 @kindex info auto-load libthread-db
24184 @item info auto-load libthread-db
24185 Print the list of all loaded inferior specific thread debugging libraries and
24186 for each such library print list of inferior @var{pid}s using it.
24187 @end table
24188
24189 @node Auto-loading safe path
24190 @subsection Security restriction for auto-loading
24191 @cindex auto-loading safe-path
24192
24193 As the files of inferior can come from untrusted source (such as submitted by
24194 an application user) @value{GDBN} does not always load any files automatically.
24195 @value{GDBN} provides the @samp{set auto-load safe-path} setting to list
24196 directories trusted for loading files not explicitly requested by user.
24197 Each directory can also be a shell wildcard pattern.
24198
24199 If the path is not set properly you will see a warning and the file will not
24200 get loaded:
24201
24202 @smallexample
24203 $ ./gdb -q ./gdb
24204 Reading symbols from /home/user/gdb/gdb...done.
24205 warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
24206 declined by your `auto-load safe-path' set
24207 to "$debugdir:$datadir/auto-load".
24208 warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been
24209 declined by your `auto-load safe-path' set
24210 to "$debugdir:$datadir/auto-load".
24211 @end smallexample
24212
24213 @noindent
24214 To instruct @value{GDBN} to go ahead and use the init files anyway,
24215 invoke @value{GDBN} like this:
24216
24217 @smallexample
24218 $ gdb -q -iex "set auto-load safe-path /home/user/gdb" ./gdb
24219 @end smallexample
24220
24221 The list of trusted directories is controlled by the following commands:
24222
24223 @table @code
24224 @anchor{set auto-load safe-path}
24225 @kindex set auto-load safe-path
24226 @item set auto-load safe-path @r{[}@var{directories}@r{]}
24227 Set the list of directories (and their subdirectories) trusted for automatic
24228 loading and execution of scripts. You can also enter a specific trusted file.
24229 Each directory can also be a shell wildcard pattern; wildcards do not match
24230 directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch}
24231 (@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}).
24232 If you omit @var{directories}, @samp{auto-load safe-path} will be reset to
24233 its default value as specified during @value{GDBN} compilation.
24234
24235 The list of directories uses path separator (@samp{:} on GNU and Unix
24236 systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
24237 to the @env{PATH} environment variable.
24238
24239 @anchor{show auto-load safe-path}
24240 @kindex show auto-load safe-path
24241 @item show auto-load safe-path
24242 Show the list of directories trusted for automatic loading and execution of
24243 scripts.
24244
24245 @anchor{add-auto-load-safe-path}
24246 @kindex add-auto-load-safe-path
24247 @item add-auto-load-safe-path
24248 Add an entry (or list of entries) to the list of directories trusted for
24249 automatic loading and execution of scripts. Multiple entries may be delimited
24250 by the host platform path separator in use.
24251 @end table
24252
24253 This variable defaults to what @code{--with-auto-load-dir} has been configured
24254 to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir}
24255 substitution applies the same as for @ref{set auto-load scripts-directory}.
24256 The default @code{set auto-load safe-path} value can be also overriden by
24257 @value{GDBN} configuration option @option{--with-auto-load-safe-path}.
24258
24259 Setting this variable to @file{/} disables this security protection,
24260 corresponding @value{GDBN} configuration option is
24261 @option{--without-auto-load-safe-path}.
24262 This variable is supposed to be set to the system directories writable by the
24263 system superuser only. Users can add their source directories in init files in
24264 their home directories (@pxref{Home Directory Init File}). See also deprecated
24265 init file in the current directory
24266 (@pxref{Init File in the Current Directory during Startup}).
24267
24268 To force @value{GDBN} to load the files it declined to load in the previous
24269 example, you could use one of the following ways:
24270
24271 @table @asis
24272 @item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb}
24273 Specify this trusted directory (or a file) as additional component of the list.
24274 You have to specify also any existing directories displayed by
24275 by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example).
24276
24277 @item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}}
24278 Specify this directory as in the previous case but just for a single
24279 @value{GDBN} session.
24280
24281 @item @kbd{gdb -iex "set auto-load safe-path /" @dots{}}
24282 Disable auto-loading safety for a single @value{GDBN} session.
24283 This assumes all the files you debug during this @value{GDBN} session will come
24284 from trusted sources.
24285
24286 @item @kbd{./configure --without-auto-load-safe-path}
24287 During compilation of @value{GDBN} you may disable any auto-loading safety.
24288 This assumes all the files you will ever debug with this @value{GDBN} come from
24289 trusted sources.
24290 @end table
24291
24292 On the other hand you can also explicitly forbid automatic files loading which
24293 also suppresses any such warning messages:
24294
24295 @table @asis
24296 @item @kbd{gdb -iex "set auto-load no" @dots{}}
24297 You can use @value{GDBN} command-line option for a single @value{GDBN} session.
24298
24299 @item @file{~/.gdbinit}: @samp{set auto-load no}
24300 Disable auto-loading globally for the user
24301 (@pxref{Home Directory Init File}). While it is improbable, you could also
24302 use system init file instead (@pxref{System-wide configuration}).
24303 @end table
24304
24305 This setting applies to the file names as entered by user. If no entry matches
24306 @value{GDBN} tries as a last resort to also resolve all the file names into
24307 their canonical form (typically resolving symbolic links) and compare the
24308 entries again. @value{GDBN} already canonicalizes most of the filenames on its
24309 own before starting the comparison so a canonical form of directories is
24310 recommended to be entered.
24311
24312 @node Auto-loading verbose mode
24313 @subsection Displaying files tried for auto-load
24314 @cindex auto-loading verbose mode
24315
24316 For better visibility of all the file locations where you can place scripts to
24317 be auto-loaded with inferior --- or to protect yourself against accidental
24318 execution of untrusted scripts --- @value{GDBN} provides a feature for printing
24319 all the files attempted to be loaded. Both existing and non-existing files may
24320 be printed.
24321
24322 For example the list of directories from which it is safe to auto-load files
24323 (@pxref{Auto-loading safe path}) applies also to canonicalized filenames which
24324 may not be too obvious while setting it up.
24325
24326 @smallexample
24327 (gdb) set debug auto-load on
24328 (gdb) file ~/src/t/true
24329 auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb"
24330 for objfile "/tmp/true".
24331 auto-load: Updating directories of "/usr:/opt".
24332 auto-load: Using directory "/usr".
24333 auto-load: Using directory "/opt".
24334 warning: File "/tmp/true-gdb.gdb" auto-loading has been declined
24335 by your `auto-load safe-path' set to "/usr:/opt".
24336 @end smallexample
24337
24338 @table @code
24339 @anchor{set debug auto-load}
24340 @kindex set debug auto-load
24341 @item set debug auto-load [on|off]
24342 Set whether to print the filenames attempted to be auto-loaded.
24343
24344 @anchor{show debug auto-load}
24345 @kindex show debug auto-load
24346 @item show debug auto-load
24347 Show whether printing of the filenames attempted to be auto-loaded is turned
24348 on or off.
24349 @end table
24350
24351 @node Messages/Warnings
24352 @section Optional Warnings and Messages
24353
24354 @cindex verbose operation
24355 @cindex optional warnings
24356 By default, @value{GDBN} is silent about its inner workings. If you are
24357 running on a slow machine, you may want to use the @code{set verbose}
24358 command. This makes @value{GDBN} tell you when it does a lengthy
24359 internal operation, so you will not think it has crashed.
24360
24361 Currently, the messages controlled by @code{set verbose} are those
24362 which announce that the symbol table for a source file is being read;
24363 see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
24364
24365 @table @code
24366 @kindex set verbose
24367 @item set verbose on
24368 Enables @value{GDBN} output of certain informational messages.
24369
24370 @item set verbose off
24371 Disables @value{GDBN} output of certain informational messages.
24372
24373 @kindex show verbose
24374 @item show verbose
24375 Displays whether @code{set verbose} is on or off.
24376 @end table
24377
24378 By default, if @value{GDBN} encounters bugs in the symbol table of an
24379 object file, it is silent; but if you are debugging a compiler, you may
24380 find this information useful (@pxref{Symbol Errors, ,Errors Reading
24381 Symbol Files}).
24382
24383 @table @code
24384
24385 @kindex set complaints
24386 @item set complaints @var{limit}
24387 Permits @value{GDBN} to output @var{limit} complaints about each type of
24388 unusual symbols before becoming silent about the problem. Set
24389 @var{limit} to zero to suppress all complaints; set it to a large number
24390 to prevent complaints from being suppressed.
24391
24392 @kindex show complaints
24393 @item show complaints
24394 Displays how many symbol complaints @value{GDBN} is permitted to produce.
24395
24396 @end table
24397
24398 @anchor{confirmation requests}
24399 By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
24400 lot of stupid questions to confirm certain commands. For example, if
24401 you try to run a program which is already running:
24402
24403 @smallexample
24404 (@value{GDBP}) run
24405 The program being debugged has been started already.
24406 Start it from the beginning? (y or n)
24407 @end smallexample
24408
24409 If you are willing to unflinchingly face the consequences of your own
24410 commands, you can disable this ``feature'':
24411
24412 @table @code
24413
24414 @kindex set confirm
24415 @cindex flinching
24416 @cindex confirmation
24417 @cindex stupid questions
24418 @item set confirm off
24419 Disables confirmation requests. Note that running @value{GDBN} with
24420 the @option{--batch} option (@pxref{Mode Options, -batch}) also
24421 automatically disables confirmation requests.
24422
24423 @item set confirm on
24424 Enables confirmation requests (the default).
24425
24426 @kindex show confirm
24427 @item show confirm
24428 Displays state of confirmation requests.
24429
24430 @end table
24431
24432 @cindex command tracing
24433 If you need to debug user-defined commands or sourced files you may find it
24434 useful to enable @dfn{command tracing}. In this mode each command will be
24435 printed as it is executed, prefixed with one or more @samp{+} symbols, the
24436 quantity denoting the call depth of each command.
24437
24438 @table @code
24439 @kindex set trace-commands
24440 @cindex command scripts, debugging
24441 @item set trace-commands on
24442 Enable command tracing.
24443 @item set trace-commands off
24444 Disable command tracing.
24445 @item show trace-commands
24446 Display the current state of command tracing.
24447 @end table
24448
24449 @node Debugging Output
24450 @section Optional Messages about Internal Happenings
24451 @cindex optional debugging messages
24452
24453 @value{GDBN} has commands that enable optional debugging messages from
24454 various @value{GDBN} subsystems; normally these commands are of
24455 interest to @value{GDBN} maintainers, or when reporting a bug. This
24456 section documents those commands.
24457
24458 @table @code
24459 @kindex set exec-done-display
24460 @item set exec-done-display
24461 Turns on or off the notification of asynchronous commands'
24462 completion. When on, @value{GDBN} will print a message when an
24463 asynchronous command finishes its execution. The default is off.
24464 @kindex show exec-done-display
24465 @item show exec-done-display
24466 Displays the current setting of asynchronous command completion
24467 notification.
24468 @kindex set debug
24469 @cindex ARM AArch64
24470 @item set debug aarch64
24471 Turns on or off display of debugging messages related to ARM AArch64.
24472 The default is off.
24473 @kindex show debug
24474 @item show debug aarch64
24475 Displays the current state of displaying debugging messages related to
24476 ARM AArch64.
24477 @cindex gdbarch debugging info
24478 @cindex architecture debugging info
24479 @item set debug arch
24480 Turns on or off display of gdbarch debugging info. The default is off
24481 @item show debug arch
24482 Displays the current state of displaying gdbarch debugging info.
24483 @item set debug aix-solib
24484 @cindex AIX shared library debugging
24485 Control display of debugging messages from the AIX shared library
24486 support module. The default is off.
24487 @item show debug aix-thread
24488 Show the current state of displaying AIX shared library debugging messages.
24489 @item set debug aix-thread
24490 @cindex AIX threads
24491 Display debugging messages about inner workings of the AIX thread
24492 module.
24493 @item show debug aix-thread
24494 Show the current state of AIX thread debugging info display.
24495 @item set debug check-physname
24496 @cindex physname
24497 Check the results of the ``physname'' computation. When reading DWARF
24498 debugging information for C@t{++}, @value{GDBN} attempts to compute
24499 each entity's name. @value{GDBN} can do this computation in two
24500 different ways, depending on exactly what information is present.
24501 When enabled, this setting causes @value{GDBN} to compute the names
24502 both ways and display any discrepancies.
24503 @item show debug check-physname
24504 Show the current state of ``physname'' checking.
24505 @item set debug coff-pe-read
24506 @cindex COFF/PE exported symbols
24507 Control display of debugging messages related to reading of COFF/PE
24508 exported symbols. The default is off.
24509 @item show debug coff-pe-read
24510 Displays the current state of displaying debugging messages related to
24511 reading of COFF/PE exported symbols.
24512 @item set debug dwarf-die
24513 @cindex DWARF DIEs
24514 Dump DWARF DIEs after they are read in.
24515 The value is the number of nesting levels to print.
24516 A value of zero turns off the display.
24517 @item show debug dwarf-die
24518 Show the current state of DWARF DIE debugging.
24519 @item set debug dwarf-line
24520 @cindex DWARF Line Tables
24521 Turns on or off display of debugging messages related to reading
24522 DWARF line tables. The default is 0 (off).
24523 A value of 1 provides basic information.
24524 A value greater than 1 provides more verbose information.
24525 @item show debug dwarf-line
24526 Show the current state of DWARF line table debugging.
24527 @item set debug dwarf-read
24528 @cindex DWARF Reading
24529 Turns on or off display of debugging messages related to reading
24530 DWARF debug info. The default is 0 (off).
24531 A value of 1 provides basic information.
24532 A value greater than 1 provides more verbose information.
24533 @item show debug dwarf-read
24534 Show the current state of DWARF reader debugging.
24535 @item set debug displaced
24536 @cindex displaced stepping debugging info
24537 Turns on or off display of @value{GDBN} debugging info for the
24538 displaced stepping support. The default is off.
24539 @item show debug displaced
24540 Displays the current state of displaying @value{GDBN} debugging info
24541 related to displaced stepping.
24542 @item set debug event
24543 @cindex event debugging info
24544 Turns on or off display of @value{GDBN} event debugging info. The
24545 default is off.
24546 @item show debug event
24547 Displays the current state of displaying @value{GDBN} event debugging
24548 info.
24549 @item set debug expression
24550 @cindex expression debugging info
24551 Turns on or off display of debugging info about @value{GDBN}
24552 expression parsing. The default is off.
24553 @item show debug expression
24554 Displays the current state of displaying debugging info about
24555 @value{GDBN} expression parsing.
24556 @item set debug fbsd-lwp
24557 @cindex FreeBSD LWP debug messages
24558 Turns on or off debugging messages from the FreeBSD LWP debug support.
24559 @item show debug fbsd-lwp
24560 Show the current state of FreeBSD LWP debugging messages.
24561 @item set debug fbsd-nat
24562 @cindex FreeBSD native target debug messages
24563 Turns on or off debugging messages from the FreeBSD native target.
24564 @item show debug fbsd-nat
24565 Show the current state of FreeBSD native target debugging messages.
24566 @item set debug frame
24567 @cindex frame debugging info
24568 Turns on or off display of @value{GDBN} frame debugging info. The
24569 default is off.
24570 @item show debug frame
24571 Displays the current state of displaying @value{GDBN} frame debugging
24572 info.
24573 @item set debug gnu-nat
24574 @cindex @sc{gnu}/Hurd debug messages
24575 Turn on or off debugging messages from the @sc{gnu}/Hurd debug support.
24576 @item show debug gnu-nat
24577 Show the current state of @sc{gnu}/Hurd debugging messages.
24578 @item set debug infrun
24579 @cindex inferior debugging info
24580 Turns on or off display of @value{GDBN} debugging info for running the inferior.
24581 The default is off. @file{infrun.c} contains GDB's runtime state machine used
24582 for implementing operations such as single-stepping the inferior.
24583 @item show debug infrun
24584 Displays the current state of @value{GDBN} inferior debugging.
24585 @item set debug jit
24586 @cindex just-in-time compilation, debugging messages
24587 Turn on or off debugging messages from JIT debug support.
24588 @item show debug jit
24589 Displays the current state of @value{GDBN} JIT debugging.
24590 @item set debug lin-lwp
24591 @cindex @sc{gnu}/Linux LWP debug messages
24592 @cindex Linux lightweight processes
24593 Turn on or off debugging messages from the Linux LWP debug support.
24594 @item show debug lin-lwp
24595 Show the current state of Linux LWP debugging messages.
24596 @item set debug linux-namespaces
24597 @cindex @sc{gnu}/Linux namespaces debug messages
24598 Turn on or off debugging messages from the Linux namespaces debug support.
24599 @item show debug linux-namespaces
24600 Show the current state of Linux namespaces debugging messages.
24601 @item set debug mach-o
24602 @cindex Mach-O symbols processing
24603 Control display of debugging messages related to Mach-O symbols
24604 processing. The default is off.
24605 @item show debug mach-o
24606 Displays the current state of displaying debugging messages related to
24607 reading of COFF/PE exported symbols.
24608 @item set debug notification
24609 @cindex remote async notification debugging info
24610 Turn on or off debugging messages about remote async notification.
24611 The default is off.
24612 @item show debug notification
24613 Displays the current state of remote async notification debugging messages.
24614 @item set debug observer
24615 @cindex observer debugging info
24616 Turns on or off display of @value{GDBN} observer debugging. This
24617 includes info such as the notification of observable events.
24618 @item show debug observer
24619 Displays the current state of observer debugging.
24620 @item set debug overload
24621 @cindex C@t{++} overload debugging info
24622 Turns on or off display of @value{GDBN} C@t{++} overload debugging
24623 info. This includes info such as ranking of functions, etc. The default
24624 is off.
24625 @item show debug overload
24626 Displays the current state of displaying @value{GDBN} C@t{++} overload
24627 debugging info.
24628 @cindex expression parser, debugging info
24629 @cindex debug expression parser
24630 @item set debug parser
24631 Turns on or off the display of expression parser debugging output.
24632 Internally, this sets the @code{yydebug} variable in the expression
24633 parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
24634 details. The default is off.
24635 @item show debug parser
24636 Show the current state of expression parser debugging.
24637 @cindex packets, reporting on stdout
24638 @cindex serial connections, debugging
24639 @cindex debug remote protocol
24640 @cindex remote protocol debugging
24641 @cindex display remote packets
24642 @item set debug remote
24643 Turns on or off display of reports on all packets sent back and forth across
24644 the serial line to the remote machine. The info is printed on the
24645 @value{GDBN} standard output stream. The default is off.
24646 @item show debug remote
24647 Displays the state of display of remote packets.
24648
24649 @item set debug separate-debug-file
24650 Turns on or off display of debug output about separate debug file search.
24651 @item show debug separate-debug-file
24652 Displays the state of separate debug file search debug output.
24653
24654 @item set debug serial
24655 Turns on or off display of @value{GDBN} serial debugging info. The
24656 default is off.
24657 @item show debug serial
24658 Displays the current state of displaying @value{GDBN} serial debugging
24659 info.
24660 @item set debug solib-frv
24661 @cindex FR-V shared-library debugging
24662 Turn on or off debugging messages for FR-V shared-library code.
24663 @item show debug solib-frv
24664 Display the current state of FR-V shared-library code debugging
24665 messages.
24666 @item set debug symbol-lookup
24667 @cindex symbol lookup
24668 Turns on or off display of debugging messages related to symbol lookup.
24669 The default is 0 (off).
24670 A value of 1 provides basic information.
24671 A value greater than 1 provides more verbose information.
24672 @item show debug symbol-lookup
24673 Show the current state of symbol lookup debugging messages.
24674 @item set debug symfile
24675 @cindex symbol file functions
24676 Turns on or off display of debugging messages related to symbol file functions.
24677 The default is off. @xref{Files}.
24678 @item show debug symfile
24679 Show the current state of symbol file debugging messages.
24680 @item set debug symtab-create
24681 @cindex symbol table creation
24682 Turns on or off display of debugging messages related to symbol table creation.
24683 The default is 0 (off).
24684 A value of 1 provides basic information.
24685 A value greater than 1 provides more verbose information.
24686 @item show debug symtab-create
24687 Show the current state of symbol table creation debugging.
24688 @item set debug target
24689 @cindex target debugging info
24690 Turns on or off display of @value{GDBN} target debugging info. This info
24691 includes what is going on at the target level of GDB, as it happens. The
24692 default is 0. Set it to 1 to track events, and to 2 to also track the
24693 value of large memory transfers.
24694 @item show debug target
24695 Displays the current state of displaying @value{GDBN} target debugging
24696 info.
24697 @item set debug timestamp
24698 @cindex timestampping debugging info
24699 Turns on or off display of timestamps with @value{GDBN} debugging info.
24700 When enabled, seconds and microseconds are displayed before each debugging
24701 message.
24702 @item show debug timestamp
24703 Displays the current state of displaying timestamps with @value{GDBN}
24704 debugging info.
24705 @item set debug varobj
24706 @cindex variable object debugging info
24707 Turns on or off display of @value{GDBN} variable object debugging
24708 info. The default is off.
24709 @item show debug varobj
24710 Displays the current state of displaying @value{GDBN} variable object
24711 debugging info.
24712 @item set debug xml
24713 @cindex XML parser debugging
24714 Turn on or off debugging messages for built-in XML parsers.
24715 @item show debug xml
24716 Displays the current state of XML debugging messages.
24717 @end table
24718
24719 @node Other Misc Settings
24720 @section Other Miscellaneous Settings
24721 @cindex miscellaneous settings
24722
24723 @table @code
24724 @kindex set interactive-mode
24725 @item set interactive-mode
24726 If @code{on}, forces @value{GDBN} to assume that GDB was started
24727 in a terminal. In practice, this means that @value{GDBN} should wait
24728 for the user to answer queries generated by commands entered at
24729 the command prompt. If @code{off}, forces @value{GDBN} to operate
24730 in the opposite mode, and it uses the default answers to all queries.
24731 If @code{auto} (the default), @value{GDBN} tries to determine whether
24732 its standard input is a terminal, and works in interactive-mode if it
24733 is, non-interactively otherwise.
24734
24735 In the vast majority of cases, the debugger should be able to guess
24736 correctly which mode should be used. But this setting can be useful
24737 in certain specific cases, such as running a MinGW @value{GDBN}
24738 inside a cygwin window.
24739
24740 @kindex show interactive-mode
24741 @item show interactive-mode
24742 Displays whether the debugger is operating in interactive mode or not.
24743 @end table
24744
24745 @node Extending GDB
24746 @chapter Extending @value{GDBN}
24747 @cindex extending GDB
24748
24749 @value{GDBN} provides several mechanisms for extension.
24750 @value{GDBN} also provides the ability to automatically load
24751 extensions when it reads a file for debugging. This allows the
24752 user to automatically customize @value{GDBN} for the program
24753 being debugged.
24754
24755 @menu
24756 * Sequences:: Canned Sequences of @value{GDBN} Commands
24757 * Python:: Extending @value{GDBN} using Python
24758 * Guile:: Extending @value{GDBN} using Guile
24759 * Auto-loading extensions:: Automatically loading extensions
24760 * Multiple Extension Languages:: Working with multiple extension languages
24761 * Aliases:: Creating new spellings of existing commands
24762 @end menu
24763
24764 To facilitate the use of extension languages, @value{GDBN} is capable
24765 of evaluating the contents of a file. When doing so, @value{GDBN}
24766 can recognize which extension language is being used by looking at
24767 the filename extension. Files with an unrecognized filename extension
24768 are always treated as a @value{GDBN} Command Files.
24769 @xref{Command Files,, Command files}.
24770
24771 You can control how @value{GDBN} evaluates these files with the following
24772 setting:
24773
24774 @table @code
24775 @kindex set script-extension
24776 @kindex show script-extension
24777 @item set script-extension off
24778 All scripts are always evaluated as @value{GDBN} Command Files.
24779
24780 @item set script-extension soft
24781 The debugger determines the scripting language based on filename
24782 extension. If this scripting language is supported, @value{GDBN}
24783 evaluates the script using that language. Otherwise, it evaluates
24784 the file as a @value{GDBN} Command File.
24785
24786 @item set script-extension strict
24787 The debugger determines the scripting language based on filename
24788 extension, and evaluates the script using that language. If the
24789 language is not supported, then the evaluation fails.
24790
24791 @item show script-extension
24792 Display the current value of the @code{script-extension} option.
24793
24794 @end table
24795
24796 @node Sequences
24797 @section Canned Sequences of Commands
24798
24799 Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
24800 Command Lists}), @value{GDBN} provides two ways to store sequences of
24801 commands for execution as a unit: user-defined commands and command
24802 files.
24803
24804 @menu
24805 * Define:: How to define your own commands
24806 * Hooks:: Hooks for user-defined commands
24807 * Command Files:: How to write scripts of commands to be stored in a file
24808 * Output:: Commands for controlled output
24809 * Auto-loading sequences:: Controlling auto-loaded command files
24810 @end menu
24811
24812 @node Define
24813 @subsection User-defined Commands
24814
24815 @cindex user-defined command
24816 @cindex arguments, to user-defined commands
24817 A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
24818 which you assign a new name as a command. This is done with the
24819 @code{define} command. User commands may accept an unlimited number of arguments
24820 separated by whitespace. Arguments are accessed within the user command
24821 via @code{$arg0@dots{}$argN}. A trivial example:
24822
24823 @smallexample
24824 define adder
24825 print $arg0 + $arg1 + $arg2
24826 end
24827 @end smallexample
24828
24829 @noindent
24830 To execute the command use:
24831
24832 @smallexample
24833 adder 1 2 3
24834 @end smallexample
24835
24836 @noindent
24837 This defines the command @code{adder}, which prints the sum of
24838 its three arguments. Note the arguments are text substitutions, so they may
24839 reference variables, use complex expressions, or even perform inferior
24840 functions calls.
24841
24842 @cindex argument count in user-defined commands
24843 @cindex how many arguments (user-defined commands)
24844 In addition, @code{$argc} may be used to find out how many arguments have
24845 been passed.
24846
24847 @smallexample
24848 define adder
24849 if $argc == 2
24850 print $arg0 + $arg1
24851 end
24852 if $argc == 3
24853 print $arg0 + $arg1 + $arg2
24854 end
24855 end
24856 @end smallexample
24857
24858 Combining with the @code{eval} command (@pxref{eval}) makes it easier
24859 to process a variable number of arguments:
24860
24861 @smallexample
24862 define adder
24863 set $i = 0
24864 set $sum = 0
24865 while $i < $argc
24866 eval "set $sum = $sum + $arg%d", $i
24867 set $i = $i + 1
24868 end
24869 print $sum
24870 end
24871 @end smallexample
24872
24873 @table @code
24874
24875 @kindex define
24876 @item define @var{commandname}
24877 Define a command named @var{commandname}. If there is already a command
24878 by that name, you are asked to confirm that you want to redefine it.
24879 The argument @var{commandname} may be a bare command name consisting of letters,
24880 numbers, dashes, and underscores. It may also start with any predefined
24881 prefix command. For example, @samp{define target my-target} creates
24882 a user-defined @samp{target my-target} command.
24883
24884 The definition of the command is made up of other @value{GDBN} command lines,
24885 which are given following the @code{define} command. The end of these
24886 commands is marked by a line containing @code{end}.
24887
24888 @kindex document
24889 @kindex end@r{ (user-defined commands)}
24890 @item document @var{commandname}
24891 Document the user-defined command @var{commandname}, so that it can be
24892 accessed by @code{help}. The command @var{commandname} must already be
24893 defined. This command reads lines of documentation just as @code{define}
24894 reads the lines of the command definition, ending with @code{end}.
24895 After the @code{document} command is finished, @code{help} on command
24896 @var{commandname} displays the documentation you have written.
24897
24898 You may use the @code{document} command again to change the
24899 documentation of a command. Redefining the command with @code{define}
24900 does not change the documentation.
24901
24902 @kindex dont-repeat
24903 @cindex don't repeat command
24904 @item dont-repeat
24905 Used inside a user-defined command, this tells @value{GDBN} that this
24906 command should not be repeated when the user hits @key{RET}
24907 (@pxref{Command Syntax, repeat last command}).
24908
24909 @kindex help user-defined
24910 @item help user-defined
24911 List all user-defined commands and all python commands defined in class
24912 COMAND_USER. The first line of the documentation or docstring is
24913 included (if any).
24914
24915 @kindex show user
24916 @item show user
24917 @itemx show user @var{commandname}
24918 Display the @value{GDBN} commands used to define @var{commandname} (but
24919 not its documentation). If no @var{commandname} is given, display the
24920 definitions for all user-defined commands.
24921 This does not work for user-defined python commands.
24922
24923 @cindex infinite recursion in user-defined commands
24924 @kindex show max-user-call-depth
24925 @kindex set max-user-call-depth
24926 @item show max-user-call-depth
24927 @itemx set max-user-call-depth
24928 The value of @code{max-user-call-depth} controls how many recursion
24929 levels are allowed in user-defined commands before @value{GDBN} suspects an
24930 infinite recursion and aborts the command.
24931 This does not apply to user-defined python commands.
24932 @end table
24933
24934 In addition to the above commands, user-defined commands frequently
24935 use control flow commands, described in @ref{Command Files}.
24936
24937 When user-defined commands are executed, the
24938 commands of the definition are not printed. An error in any command
24939 stops execution of the user-defined command.
24940
24941 If used interactively, commands that would ask for confirmation proceed
24942 without asking when used inside a user-defined command. Many @value{GDBN}
24943 commands that normally print messages to say what they are doing omit the
24944 messages when used in a user-defined command.
24945
24946 @node Hooks
24947 @subsection User-defined Command Hooks
24948 @cindex command hooks
24949 @cindex hooks, for commands
24950 @cindex hooks, pre-command
24951
24952 @kindex hook
24953 You may define @dfn{hooks}, which are a special kind of user-defined
24954 command. Whenever you run the command @samp{foo}, if the user-defined
24955 command @samp{hook-foo} exists, it is executed (with no arguments)
24956 before that command.
24957
24958 @cindex hooks, post-command
24959 @kindex hookpost
24960 A hook may also be defined which is run after the command you executed.
24961 Whenever you run the command @samp{foo}, if the user-defined command
24962 @samp{hookpost-foo} exists, it is executed (with no arguments) after
24963 that command. Post-execution hooks may exist simultaneously with
24964 pre-execution hooks, for the same command.
24965
24966 It is valid for a hook to call the command which it hooks. If this
24967 occurs, the hook is not re-executed, thereby avoiding infinite recursion.
24968
24969 @c It would be nice if hookpost could be passed a parameter indicating
24970 @c if the command it hooks executed properly or not. FIXME!
24971
24972 @kindex stop@r{, a pseudo-command}
24973 In addition, a pseudo-command, @samp{stop} exists. Defining
24974 (@samp{hook-stop}) makes the associated commands execute every time
24975 execution stops in your program: before breakpoint commands are run,
24976 displays are printed, or the stack frame is printed.
24977
24978 For example, to ignore @code{SIGALRM} signals while
24979 single-stepping, but treat them normally during normal execution,
24980 you could define:
24981
24982 @smallexample
24983 define hook-stop
24984 handle SIGALRM nopass
24985 end
24986
24987 define hook-run
24988 handle SIGALRM pass
24989 end
24990
24991 define hook-continue
24992 handle SIGALRM pass
24993 end
24994 @end smallexample
24995
24996 As a further example, to hook at the beginning and end of the @code{echo}
24997 command, and to add extra text to the beginning and end of the message,
24998 you could define:
24999
25000 @smallexample
25001 define hook-echo
25002 echo <<<---
25003 end
25004
25005 define hookpost-echo
25006 echo --->>>\n
25007 end
25008
25009 (@value{GDBP}) echo Hello World
25010 <<<---Hello World--->>>
25011 (@value{GDBP})
25012
25013 @end smallexample
25014
25015 You can define a hook for any single-word command in @value{GDBN}, but
25016 not for command aliases; you should define a hook for the basic command
25017 name, e.g.@: @code{backtrace} rather than @code{bt}.
25018 @c FIXME! So how does Joe User discover whether a command is an alias
25019 @c or not?
25020 You can hook a multi-word command by adding @code{hook-} or
25021 @code{hookpost-} to the last word of the command, e.g.@:
25022 @samp{define target hook-remote} to add a hook to @samp{target remote}.
25023
25024 If an error occurs during the execution of your hook, execution of
25025 @value{GDBN} commands stops and @value{GDBN} issues a prompt
25026 (before the command that you actually typed had a chance to run).
25027
25028 If you try to define a hook which does not match any known command, you
25029 get a warning from the @code{define} command.
25030
25031 @node Command Files
25032 @subsection Command Files
25033
25034 @cindex command files
25035 @cindex scripting commands
25036 A command file for @value{GDBN} is a text file made of lines that are
25037 @value{GDBN} commands. Comments (lines starting with @kbd{#}) may
25038 also be included. An empty line in a command file does nothing; it
25039 does not mean to repeat the last command, as it would from the
25040 terminal.
25041
25042 You can request the execution of a command file with the @code{source}
25043 command. Note that the @code{source} command is also used to evaluate
25044 scripts that are not Command Files. The exact behavior can be configured
25045 using the @code{script-extension} setting.
25046 @xref{Extending GDB,, Extending GDB}.
25047
25048 @table @code
25049 @kindex source
25050 @cindex execute commands from a file
25051 @item source [-s] [-v] @var{filename}
25052 Execute the command file @var{filename}.
25053 @end table
25054
25055 The lines in a command file are generally executed sequentially,
25056 unless the order of execution is changed by one of the
25057 @emph{flow-control commands} described below. The commands are not
25058 printed as they are executed. An error in any command terminates
25059 execution of the command file and control is returned to the console.
25060
25061 @value{GDBN} first searches for @var{filename} in the current directory.
25062 If the file is not found there, and @var{filename} does not specify a
25063 directory, then @value{GDBN} also looks for the file on the source search path
25064 (specified with the @samp{directory} command);
25065 except that @file{$cdir} is not searched because the compilation directory
25066 is not relevant to scripts.
25067
25068 If @code{-s} is specified, then @value{GDBN} searches for @var{filename}
25069 on the search path even if @var{filename} specifies a directory.
25070 The search is done by appending @var{filename} to each element of the
25071 search path. So, for example, if @var{filename} is @file{mylib/myscript}
25072 and the search path contains @file{/home/user} then @value{GDBN} will
25073 look for the script @file{/home/user/mylib/myscript}.
25074 The search is also done if @var{filename} is an absolute path.
25075 For example, if @var{filename} is @file{/tmp/myscript} and
25076 the search path contains @file{/home/user} then @value{GDBN} will
25077 look for the script @file{/home/user/tmp/myscript}.
25078 For DOS-like systems, if @var{filename} contains a drive specification,
25079 it is stripped before concatenation. For example, if @var{filename} is
25080 @file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN}
25081 will look for the script @file{c:/tmp/myscript}.
25082
25083 If @code{-v}, for verbose mode, is given then @value{GDBN} displays
25084 each command as it is executed. The option must be given before
25085 @var{filename}, and is interpreted as part of the filename anywhere else.
25086
25087 Commands that would ask for confirmation if used interactively proceed
25088 without asking when used in a command file. Many @value{GDBN} commands that
25089 normally print messages to say what they are doing omit the messages
25090 when called from command files.
25091
25092 @value{GDBN} also accepts command input from standard input. In this
25093 mode, normal output goes to standard output and error output goes to
25094 standard error. Errors in a command file supplied on standard input do
25095 not terminate execution of the command file---execution continues with
25096 the next command.
25097
25098 @smallexample
25099 gdb < cmds > log 2>&1
25100 @end smallexample
25101
25102 (The syntax above will vary depending on the shell used.) This example
25103 will execute commands from the file @file{cmds}. All output and errors
25104 would be directed to @file{log}.
25105
25106 Since commands stored on command files tend to be more general than
25107 commands typed interactively, they frequently need to deal with
25108 complicated situations, such as different or unexpected values of
25109 variables and symbols, changes in how the program being debugged is
25110 built, etc. @value{GDBN} provides a set of flow-control commands to
25111 deal with these complexities. Using these commands, you can write
25112 complex scripts that loop over data structures, execute commands
25113 conditionally, etc.
25114
25115 @table @code
25116 @kindex if
25117 @kindex else
25118 @item if
25119 @itemx else
25120 This command allows to include in your script conditionally executed
25121 commands. The @code{if} command takes a single argument, which is an
25122 expression to evaluate. It is followed by a series of commands that
25123 are executed only if the expression is true (its value is nonzero).
25124 There can then optionally be an @code{else} line, followed by a series
25125 of commands that are only executed if the expression was false. The
25126 end of the list is marked by a line containing @code{end}.
25127
25128 @kindex while
25129 @item while
25130 This command allows to write loops. Its syntax is similar to
25131 @code{if}: the command takes a single argument, which is an expression
25132 to evaluate, and must be followed by the commands to execute, one per
25133 line, terminated by an @code{end}. These commands are called the
25134 @dfn{body} of the loop. The commands in the body of @code{while} are
25135 executed repeatedly as long as the expression evaluates to true.
25136
25137 @kindex loop_break
25138 @item loop_break
25139 This command exits the @code{while} loop in whose body it is included.
25140 Execution of the script continues after that @code{while}s @code{end}
25141 line.
25142
25143 @kindex loop_continue
25144 @item loop_continue
25145 This command skips the execution of the rest of the body of commands
25146 in the @code{while} loop in whose body it is included. Execution
25147 branches to the beginning of the @code{while} loop, where it evaluates
25148 the controlling expression.
25149
25150 @kindex end@r{ (if/else/while commands)}
25151 @item end
25152 Terminate the block of commands that are the body of @code{if},
25153 @code{else}, or @code{while} flow-control commands.
25154 @end table
25155
25156
25157 @node Output
25158 @subsection Commands for Controlled Output
25159
25160 During the execution of a command file or a user-defined command, normal
25161 @value{GDBN} output is suppressed; the only output that appears is what is
25162 explicitly printed by the commands in the definition. This section
25163 describes three commands useful for generating exactly the output you
25164 want.
25165
25166 @table @code
25167 @kindex echo
25168 @item echo @var{text}
25169 @c I do not consider backslash-space a standard C escape sequence
25170 @c because it is not in ANSI.
25171 Print @var{text}. Nonprinting characters can be included in
25172 @var{text} using C escape sequences, such as @samp{\n} to print a
25173 newline. @strong{No newline is printed unless you specify one.}
25174 In addition to the standard C escape sequences, a backslash followed
25175 by a space stands for a space. This is useful for displaying a
25176 string with spaces at the beginning or the end, since leading and
25177 trailing spaces are otherwise trimmed from all arguments.
25178 To print @samp{@w{ }and foo =@w{ }}, use the command
25179 @samp{echo \@w{ }and foo = \@w{ }}.
25180
25181 A backslash at the end of @var{text} can be used, as in C, to continue
25182 the command onto subsequent lines. For example,
25183
25184 @smallexample
25185 echo This is some text\n\
25186 which is continued\n\
25187 onto several lines.\n
25188 @end smallexample
25189
25190 produces the same output as
25191
25192 @smallexample
25193 echo This is some text\n
25194 echo which is continued\n
25195 echo onto several lines.\n
25196 @end smallexample
25197
25198 @kindex output
25199 @item output @var{expression}
25200 Print the value of @var{expression} and nothing but that value: no
25201 newlines, no @samp{$@var{nn} = }. The value is not entered in the
25202 value history either. @xref{Expressions, ,Expressions}, for more information
25203 on expressions.
25204
25205 @item output/@var{fmt} @var{expression}
25206 Print the value of @var{expression} in format @var{fmt}. You can use
25207 the same formats as for @code{print}. @xref{Output Formats,,Output
25208 Formats}, for more information.
25209
25210 @kindex printf
25211 @item printf @var{template}, @var{expressions}@dots{}
25212 Print the values of one or more @var{expressions} under the control of
25213 the string @var{template}. To print several values, make
25214 @var{expressions} be a comma-separated list of individual expressions,
25215 which may be either numbers or pointers. Their values are printed as
25216 specified by @var{template}, exactly as a C program would do by
25217 executing the code below:
25218
25219 @smallexample
25220 printf (@var{template}, @var{expressions}@dots{});
25221 @end smallexample
25222
25223 As in @code{C} @code{printf}, ordinary characters in @var{template}
25224 are printed verbatim, while @dfn{conversion specification} introduced
25225 by the @samp{%} character cause subsequent @var{expressions} to be
25226 evaluated, their values converted and formatted according to type and
25227 style information encoded in the conversion specifications, and then
25228 printed.
25229
25230 For example, you can print two values in hex like this:
25231
25232 @smallexample
25233 printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
25234 @end smallexample
25235
25236 @code{printf} supports all the standard @code{C} conversion
25237 specifications, including the flags and modifiers between the @samp{%}
25238 character and the conversion letter, with the following exceptions:
25239
25240 @itemize @bullet
25241 @item
25242 The argument-ordering modifiers, such as @samp{2$}, are not supported.
25243
25244 @item
25245 The modifier @samp{*} is not supported for specifying precision or
25246 width.
25247
25248 @item
25249 The @samp{'} flag (for separation of digits into groups according to
25250 @code{LC_NUMERIC'}) is not supported.
25251
25252 @item
25253 The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
25254 supported.
25255
25256 @item
25257 The conversion letter @samp{n} (as in @samp{%n}) is not supported.
25258
25259 @item
25260 The conversion letters @samp{a} and @samp{A} are not supported.
25261 @end itemize
25262
25263 @noindent
25264 Note that the @samp{ll} type modifier is supported only if the
25265 underlying @code{C} implementation used to build @value{GDBN} supports
25266 the @code{long long int} type, and the @samp{L} type modifier is
25267 supported only if @code{long double} type is available.
25268
25269 As in @code{C}, @code{printf} supports simple backslash-escape
25270 sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
25271 @samp{\a}, and @samp{\f}, that consist of backslash followed by a
25272 single character. Octal and hexadecimal escape sequences are not
25273 supported.
25274
25275 Additionally, @code{printf} supports conversion specifications for DFP
25276 (@dfn{Decimal Floating Point}) types using the following length modifiers
25277 together with a floating point specifier.
25278 letters:
25279
25280 @itemize @bullet
25281 @item
25282 @samp{H} for printing @code{Decimal32} types.
25283
25284 @item
25285 @samp{D} for printing @code{Decimal64} types.
25286
25287 @item
25288 @samp{DD} for printing @code{Decimal128} types.
25289 @end itemize
25290
25291 If the underlying @code{C} implementation used to build @value{GDBN} has
25292 support for the three length modifiers for DFP types, other modifiers
25293 such as width and precision will also be available for @value{GDBN} to use.
25294
25295 In case there is no such @code{C} support, no additional modifiers will be
25296 available and the value will be printed in the standard way.
25297
25298 Here's an example of printing DFP types using the above conversion letters:
25299 @smallexample
25300 printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
25301 @end smallexample
25302
25303 @anchor{eval}
25304 @kindex eval
25305 @item eval @var{template}, @var{expressions}@dots{}
25306 Convert the values of one or more @var{expressions} under the control of
25307 the string @var{template} to a command line, and call it.
25308
25309 @end table
25310
25311 @node Auto-loading sequences
25312 @subsection Controlling auto-loading native @value{GDBN} scripts
25313 @cindex native script auto-loading
25314
25315 When a new object file is read (for example, due to the @code{file}
25316 command, or because the inferior has loaded a shared library),
25317 @value{GDBN} will look for the command file @file{@var{objfile}-gdb.gdb}.
25318 @xref{Auto-loading extensions}.
25319
25320 Auto-loading can be enabled or disabled,
25321 and the list of auto-loaded scripts can be printed.
25322
25323 @table @code
25324 @anchor{set auto-load gdb-scripts}
25325 @kindex set auto-load gdb-scripts
25326 @item set auto-load gdb-scripts [on|off]
25327 Enable or disable the auto-loading of canned sequences of commands scripts.
25328
25329 @anchor{show auto-load gdb-scripts}
25330 @kindex show auto-load gdb-scripts
25331 @item show auto-load gdb-scripts
25332 Show whether auto-loading of canned sequences of commands scripts is enabled or
25333 disabled.
25334
25335 @anchor{info auto-load gdb-scripts}
25336 @kindex info auto-load gdb-scripts
25337 @cindex print list of auto-loaded canned sequences of commands scripts
25338 @item info auto-load gdb-scripts [@var{regexp}]
25339 Print the list of all canned sequences of commands scripts that @value{GDBN}
25340 auto-loaded.
25341 @end table
25342
25343 If @var{regexp} is supplied only canned sequences of commands scripts with
25344 matching names are printed.
25345
25346 @c Python docs live in a separate file.
25347 @include python.texi
25348
25349 @c Guile docs live in a separate file.
25350 @include guile.texi
25351
25352 @node Auto-loading extensions
25353 @section Auto-loading extensions
25354 @cindex auto-loading extensions
25355
25356 @value{GDBN} provides two mechanisms for automatically loading extensions
25357 when a new object file is read (for example, due to the @code{file}
25358 command, or because the inferior has loaded a shared library):
25359 @file{@var{objfile}-gdb.@var{ext}} and the @code{.debug_gdb_scripts}
25360 section of modern file formats like ELF.
25361
25362 @menu
25363 * objfile-gdb.ext file: objfile-gdbdotext file. The @file{@var{objfile}-gdb.@var{ext}} file
25364 * .debug_gdb_scripts section: dotdebug_gdb_scripts section. The @code{.debug_gdb_scripts} section
25365 * Which flavor to choose?::
25366 @end menu
25367
25368 The auto-loading feature is useful for supplying application-specific
25369 debugging commands and features.
25370
25371 Auto-loading can be enabled or disabled,
25372 and the list of auto-loaded scripts can be printed.
25373 See the @samp{auto-loading} section of each extension language
25374 for more information.
25375 For @value{GDBN} command files see @ref{Auto-loading sequences}.
25376 For Python files see @ref{Python Auto-loading}.
25377
25378 Note that loading of this script file also requires accordingly configured
25379 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
25380
25381 @node objfile-gdbdotext file
25382 @subsection The @file{@var{objfile}-gdb.@var{ext}} file
25383 @cindex @file{@var{objfile}-gdb.gdb}
25384 @cindex @file{@var{objfile}-gdb.py}
25385 @cindex @file{@var{objfile}-gdb.scm}
25386
25387 When a new object file is read, @value{GDBN} looks for a file named
25388 @file{@var{objfile}-gdb.@var{ext}} (we call it @var{script-name} below),
25389 where @var{objfile} is the object file's name and
25390 where @var{ext} is the file extension for the extension language:
25391
25392 @table @code
25393 @item @file{@var{objfile}-gdb.gdb}
25394 GDB's own command language
25395 @item @file{@var{objfile}-gdb.py}
25396 Python
25397 @item @file{@var{objfile}-gdb.scm}
25398 Guile
25399 @end table
25400
25401 @var{script-name} is formed by ensuring that the file name of @var{objfile}
25402 is absolute, following all symlinks, and resolving @code{.} and @code{..}
25403 components, and appending the @file{-gdb.@var{ext}} suffix.
25404 If this file exists and is readable, @value{GDBN} will evaluate it as a
25405 script in the specified extension language.
25406
25407 If this file does not exist, then @value{GDBN} will look for
25408 @var{script-name} file in all of the directories as specified below.
25409
25410 Note that loading of these files requires an accordingly configured
25411 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
25412
25413 For object files using @file{.exe} suffix @value{GDBN} tries to load first the
25414 scripts normally according to its @file{.exe} filename. But if no scripts are
25415 found @value{GDBN} also tries script filenames matching the object file without
25416 its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it
25417 is attempted on any platform. This makes the script filenames compatible
25418 between Unix and MS-Windows hosts.
25419
25420 @table @code
25421 @anchor{set auto-load scripts-directory}
25422 @kindex set auto-load scripts-directory
25423 @item set auto-load scripts-directory @r{[}@var{directories}@r{]}
25424 Control @value{GDBN} auto-loaded scripts location. Multiple directory entries
25425 may be delimited by the host platform path separator in use
25426 (@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS).
25427
25428 Each entry here needs to be covered also by the security setting
25429 @code{set auto-load safe-path} (@pxref{set auto-load safe-path}).
25430
25431 @anchor{with-auto-load-dir}
25432 This variable defaults to @file{$debugdir:$datadir/auto-load}. The default
25433 @code{set auto-load safe-path} value can be also overriden by @value{GDBN}
25434 configuration option @option{--with-auto-load-dir}.
25435
25436 Any reference to @file{$debugdir} will get replaced by
25437 @var{debug-file-directory} value (@pxref{Separate Debug Files}) and any
25438 reference to @file{$datadir} will get replaced by @var{data-directory} which is
25439 determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and
25440 @file{$datadir} must be placed as a directory component --- either alone or
25441 delimited by @file{/} or @file{\} directory separators, depending on the host
25442 platform.
25443
25444 The list of directories uses path separator (@samp{:} on GNU and Unix
25445 systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
25446 to the @env{PATH} environment variable.
25447
25448 @anchor{show auto-load scripts-directory}
25449 @kindex show auto-load scripts-directory
25450 @item show auto-load scripts-directory
25451 Show @value{GDBN} auto-loaded scripts location.
25452
25453 @anchor{add-auto-load-scripts-directory}
25454 @kindex add-auto-load-scripts-directory
25455 @item add-auto-load-scripts-directory @r{[}@var{directories}@dots{}@r{]}
25456 Add an entry (or list of entries) to the list of auto-loaded scripts locations.
25457 Multiple entries may be delimited by the host platform path separator in use.
25458 @end table
25459
25460 @value{GDBN} does not track which files it has already auto-loaded this way.
25461 @value{GDBN} will load the associated script every time the corresponding
25462 @var{objfile} is opened.
25463 So your @file{-gdb.@var{ext}} file should be careful to avoid errors if it
25464 is evaluated more than once.
25465
25466 @node dotdebug_gdb_scripts section
25467 @subsection The @code{.debug_gdb_scripts} section
25468 @cindex @code{.debug_gdb_scripts} section
25469
25470 For systems using file formats like ELF and COFF,
25471 when @value{GDBN} loads a new object file
25472 it will look for a special section named @code{.debug_gdb_scripts}.
25473 If this section exists, its contents is a list of null-terminated entries
25474 specifying scripts to load. Each entry begins with a non-null prefix byte that
25475 specifies the kind of entry, typically the extension language and whether the
25476 script is in a file or inlined in @code{.debug_gdb_scripts}.
25477
25478 The following entries are supported:
25479
25480 @table @code
25481 @item SECTION_SCRIPT_ID_PYTHON_FILE = 1
25482 @item SECTION_SCRIPT_ID_SCHEME_FILE = 3
25483 @item SECTION_SCRIPT_ID_PYTHON_TEXT = 4
25484 @item SECTION_SCRIPT_ID_SCHEME_TEXT = 6
25485 @end table
25486
25487 @subsubsection Script File Entries
25488
25489 If the entry specifies a file, @value{GDBN} will look for the file first
25490 in the current directory and then along the source search path
25491 (@pxref{Source Path, ,Specifying Source Directories}),
25492 except that @file{$cdir} is not searched, since the compilation
25493 directory is not relevant to scripts.
25494
25495 File entries can be placed in section @code{.debug_gdb_scripts} with,
25496 for example, this GCC macro for Python scripts.
25497
25498 @example
25499 /* Note: The "MS" section flags are to remove duplicates. */
25500 #define DEFINE_GDB_PY_SCRIPT(script_name) \
25501 asm("\
25502 .pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\
25503 .byte 1 /* Python */\n\
25504 .asciz \"" script_name "\"\n\
25505 .popsection \n\
25506 ");
25507 @end example
25508
25509 @noindent
25510 For Guile scripts, replace @code{.byte 1} with @code{.byte 3}.
25511 Then one can reference the macro in a header or source file like this:
25512
25513 @example
25514 DEFINE_GDB_PY_SCRIPT ("my-app-scripts.py")
25515 @end example
25516
25517 The script name may include directories if desired.
25518
25519 Note that loading of this script file also requires accordingly configured
25520 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
25521
25522 If the macro invocation is put in a header, any application or library
25523 using this header will get a reference to the specified script,
25524 and with the use of @code{"MS"} attributes on the section, the linker
25525 will remove duplicates.
25526
25527 @subsubsection Script Text Entries
25528
25529 Script text entries allow to put the executable script in the entry
25530 itself instead of loading it from a file.
25531 The first line of the entry, everything after the prefix byte and up to
25532 the first newline (@code{0xa}) character, is the script name, and must not
25533 contain any kind of space character, e.g., spaces or tabs.
25534 The rest of the entry, up to the trailing null byte, is the script to
25535 execute in the specified language. The name needs to be unique among
25536 all script names, as @value{GDBN} executes each script only once based
25537 on its name.
25538
25539 Here is an example from file @file{py-section-script.c} in the @value{GDBN}
25540 testsuite.
25541
25542 @example
25543 #include "symcat.h"
25544 #include "gdb/section-scripts.h"
25545 asm(
25546 ".pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n"
25547 ".byte " XSTRING (SECTION_SCRIPT_ID_PYTHON_TEXT) "\n"
25548 ".ascii \"gdb.inlined-script\\n\"\n"
25549 ".ascii \"class test_cmd (gdb.Command):\\n\"\n"
25550 ".ascii \" def __init__ (self):\\n\"\n"
25551 ".ascii \" super (test_cmd, self).__init__ ("
25552 "\\\"test-cmd\\\", gdb.COMMAND_OBSCURE)\\n\"\n"
25553 ".ascii \" def invoke (self, arg, from_tty):\\n\"\n"
25554 ".ascii \" print (\\\"test-cmd output, arg = %s\\\" % arg)\\n\"\n"
25555 ".ascii \"test_cmd ()\\n\"\n"
25556 ".byte 0\n"
25557 ".popsection\n"
25558 );
25559 @end example
25560
25561 Loading of inlined scripts requires a properly configured
25562 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
25563 The path to specify in @code{auto-load safe-path} is the path of the file
25564 containing the @code{.debug_gdb_scripts} section.
25565
25566 @node Which flavor to choose?
25567 @subsection Which flavor to choose?
25568
25569 Given the multiple ways of auto-loading extensions, it might not always
25570 be clear which one to choose. This section provides some guidance.
25571
25572 @noindent
25573 Benefits of the @file{-gdb.@var{ext}} way:
25574
25575 @itemize @bullet
25576 @item
25577 Can be used with file formats that don't support multiple sections.
25578
25579 @item
25580 Ease of finding scripts for public libraries.
25581
25582 Scripts specified in the @code{.debug_gdb_scripts} section are searched for
25583 in the source search path.
25584 For publicly installed libraries, e.g., @file{libstdc++}, there typically
25585 isn't a source directory in which to find the script.
25586
25587 @item
25588 Doesn't require source code additions.
25589 @end itemize
25590
25591 @noindent
25592 Benefits of the @code{.debug_gdb_scripts} way:
25593
25594 @itemize @bullet
25595 @item
25596 Works with static linking.
25597
25598 Scripts for libraries done the @file{-gdb.@var{ext}} way require an objfile to
25599 trigger their loading. When an application is statically linked the only
25600 objfile available is the executable, and it is cumbersome to attach all the
25601 scripts from all the input libraries to the executable's
25602 @file{-gdb.@var{ext}} script.
25603
25604 @item
25605 Works with classes that are entirely inlined.
25606
25607 Some classes can be entirely inlined, and thus there may not be an associated
25608 shared library to attach a @file{-gdb.@var{ext}} script to.
25609
25610 @item
25611 Scripts needn't be copied out of the source tree.
25612
25613 In some circumstances, apps can be built out of large collections of internal
25614 libraries, and the build infrastructure necessary to install the
25615 @file{-gdb.@var{ext}} scripts in a place where @value{GDBN} can find them is
25616 cumbersome. It may be easier to specify the scripts in the
25617 @code{.debug_gdb_scripts} section as relative paths, and add a path to the
25618 top of the source tree to the source search path.
25619 @end itemize
25620
25621 @node Multiple Extension Languages
25622 @section Multiple Extension Languages
25623
25624 The Guile and Python extension languages do not share any state,
25625 and generally do not interfere with each other.
25626 There are some things to be aware of, however.
25627
25628 @subsection Python comes first
25629
25630 Python was @value{GDBN}'s first extension language, and to avoid breaking
25631 existing behaviour Python comes first. This is generally solved by the
25632 ``first one wins'' principle. @value{GDBN} maintains a list of enabled
25633 extension languages, and when it makes a call to an extension language,
25634 (say to pretty-print a value), it tries each in turn until an extension
25635 language indicates it has performed the request (e.g., has returned the
25636 pretty-printed form of a value).
25637 This extends to errors while performing such requests: If an error happens
25638 while, for example, trying to pretty-print an object then the error is
25639 reported and any following extension languages are not tried.
25640
25641 @node Aliases
25642 @section Creating new spellings of existing commands
25643 @cindex aliases for commands
25644
25645 It is often useful to define alternate spellings of existing commands.
25646 For example, if a new @value{GDBN} command defined in Python has
25647 a long name to type, it is handy to have an abbreviated version of it
25648 that involves less typing.
25649
25650 @value{GDBN} itself uses aliases. For example @samp{s} is an alias
25651 of the @samp{step} command even though it is otherwise an ambiguous
25652 abbreviation of other commands like @samp{set} and @samp{show}.
25653
25654 Aliases are also used to provide shortened or more common versions
25655 of multi-word commands. For example, @value{GDBN} provides the
25656 @samp{tty} alias of the @samp{set inferior-tty} command.
25657
25658 You can define a new alias with the @samp{alias} command.
25659
25660 @table @code
25661
25662 @kindex alias
25663 @item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
25664
25665 @end table
25666
25667 @var{ALIAS} specifies the name of the new alias.
25668 Each word of @var{ALIAS} must consist of letters, numbers, dashes and
25669 underscores.
25670
25671 @var{COMMAND} specifies the name of an existing command
25672 that is being aliased.
25673
25674 The @samp{-a} option specifies that the new alias is an abbreviation
25675 of the command. Abbreviations are not shown in command
25676 lists displayed by the @samp{help} command.
25677
25678 The @samp{--} option specifies the end of options,
25679 and is useful when @var{ALIAS} begins with a dash.
25680
25681 Here is a simple example showing how to make an abbreviation
25682 of a command so that there is less to type.
25683 Suppose you were tired of typing @samp{disas}, the current
25684 shortest unambiguous abbreviation of the @samp{disassemble} command
25685 and you wanted an even shorter version named @samp{di}.
25686 The following will accomplish this.
25687
25688 @smallexample
25689 (gdb) alias -a di = disas
25690 @end smallexample
25691
25692 Note that aliases are different from user-defined commands.
25693 With a user-defined command, you also need to write documentation
25694 for it with the @samp{document} command.
25695 An alias automatically picks up the documentation of the existing command.
25696
25697 Here is an example where we make @samp{elms} an abbreviation of
25698 @samp{elements} in the @samp{set print elements} command.
25699 This is to show that you can make an abbreviation of any part
25700 of a command.
25701
25702 @smallexample
25703 (gdb) alias -a set print elms = set print elements
25704 (gdb) alias -a show print elms = show print elements
25705 (gdb) set p elms 20
25706 (gdb) show p elms
25707 Limit on string chars or array elements to print is 200.
25708 @end smallexample
25709
25710 Note that if you are defining an alias of a @samp{set} command,
25711 and you want to have an alias for the corresponding @samp{show}
25712 command, then you need to define the latter separately.
25713
25714 Unambiguously abbreviated commands are allowed in @var{COMMAND} and
25715 @var{ALIAS}, just as they are normally.
25716
25717 @smallexample
25718 (gdb) alias -a set pr elms = set p ele
25719 @end smallexample
25720
25721 Finally, here is an example showing the creation of a one word
25722 alias for a more complex command.
25723 This creates alias @samp{spe} of the command @samp{set print elements}.
25724
25725 @smallexample
25726 (gdb) alias spe = set print elements
25727 (gdb) spe 20
25728 @end smallexample
25729
25730 @node Interpreters
25731 @chapter Command Interpreters
25732 @cindex command interpreters
25733
25734 @value{GDBN} supports multiple command interpreters, and some command
25735 infrastructure to allow users or user interface writers to switch
25736 between interpreters or run commands in other interpreters.
25737
25738 @value{GDBN} currently supports two command interpreters, the console
25739 interpreter (sometimes called the command-line interpreter or @sc{cli})
25740 and the machine interface interpreter (or @sc{gdb/mi}). This manual
25741 describes both of these interfaces in great detail.
25742
25743 By default, @value{GDBN} will start with the console interpreter.
25744 However, the user may choose to start @value{GDBN} with another
25745 interpreter by specifying the @option{-i} or @option{--interpreter}
25746 startup options. Defined interpreters include:
25747
25748 @table @code
25749 @item console
25750 @cindex console interpreter
25751 The traditional console or command-line interpreter. This is the most often
25752 used interpreter with @value{GDBN}. With no interpreter specified at runtime,
25753 @value{GDBN} will use this interpreter.
25754
25755 @item mi
25756 @cindex mi interpreter
25757 The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
25758 by programs wishing to use @value{GDBN} as a backend for a debugger GUI
25759 or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
25760 Interface}.
25761
25762 @item mi2
25763 @cindex mi2 interpreter
25764 The current @sc{gdb/mi} interface.
25765
25766 @item mi1
25767 @cindex mi1 interpreter
25768 The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
25769
25770 @end table
25771
25772 @cindex invoke another interpreter
25773
25774 @kindex interpreter-exec
25775 You may execute commands in any interpreter from the current
25776 interpreter using the appropriate command. If you are running the
25777 console interpreter, simply use the @code{interpreter-exec} command:
25778
25779 @smallexample
25780 interpreter-exec mi "-data-list-register-names"
25781 @end smallexample
25782
25783 @sc{gdb/mi} has a similar command, although it is only available in versions of
25784 @value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
25785
25786 Note that @code{interpreter-exec} only changes the interpreter for the
25787 duration of the specified command. It does not change the interpreter
25788 permanently.
25789
25790 @cindex start a new independent interpreter
25791
25792 Although you may only choose a single interpreter at startup, it is
25793 possible to run an independent interpreter on a specified input/output
25794 device (usually a tty).
25795
25796 For example, consider a debugger GUI or IDE that wants to provide a
25797 @value{GDBN} console view. It may do so by embedding a terminal
25798 emulator widget in its GUI, starting @value{GDBN} in the traditional
25799 command-line mode with stdin/stdout/stderr redirected to that
25800 terminal, and then creating an MI interpreter running on a specified
25801 input/output device. The console interpreter created by @value{GDBN}
25802 at startup handles commands the user types in the terminal widget,
25803 while the GUI controls and synchronizes state with @value{GDBN} using
25804 the separate MI interpreter.
25805
25806 To start a new secondary @dfn{user interface} running MI, use the
25807 @code{new-ui} command:
25808
25809 @kindex new-ui
25810 @cindex new user interface
25811 @smallexample
25812 new-ui @var{interpreter} @var{tty}
25813 @end smallexample
25814
25815 The @var{interpreter} parameter specifies the interpreter to run.
25816 This accepts the same values as the @code{interpreter-exec} command.
25817 For example, @samp{console}, @samp{mi}, @samp{mi2}, etc. The
25818 @var{tty} parameter specifies the name of the bidirectional file the
25819 interpreter uses for input/output, usually the name of a
25820 pseudoterminal slave on Unix systems. For example:
25821
25822 @smallexample
25823 (@value{GDBP}) new-ui mi /dev/pts/9
25824 @end smallexample
25825
25826 @noindent
25827 runs an MI interpreter on @file{/dev/pts/9}.
25828
25829 @node TUI
25830 @chapter @value{GDBN} Text User Interface
25831 @cindex TUI
25832 @cindex Text User Interface
25833
25834 @menu
25835 * TUI Overview:: TUI overview
25836 * TUI Keys:: TUI key bindings
25837 * TUI Single Key Mode:: TUI single key mode
25838 * TUI Commands:: TUI-specific commands
25839 * TUI Configuration:: TUI configuration variables
25840 @end menu
25841
25842 The @value{GDBN} Text User Interface (TUI) is a terminal
25843 interface which uses the @code{curses} library to show the source
25844 file, the assembly output, the program registers and @value{GDBN}
25845 commands in separate text windows. The TUI mode is supported only
25846 on platforms where a suitable version of the @code{curses} library
25847 is available.
25848
25849 The TUI mode is enabled by default when you invoke @value{GDBN} as
25850 @samp{@value{GDBP} -tui}.
25851 You can also switch in and out of TUI mode while @value{GDBN} runs by
25852 using various TUI commands and key bindings, such as @command{tui
25853 enable} or @kbd{C-x C-a}. @xref{TUI Commands, ,TUI Commands}, and
25854 @ref{TUI Keys, ,TUI Key Bindings}.
25855
25856 @node TUI Overview
25857 @section TUI Overview
25858
25859 In TUI mode, @value{GDBN} can display several text windows:
25860
25861 @table @emph
25862 @item command
25863 This window is the @value{GDBN} command window with the @value{GDBN}
25864 prompt and the @value{GDBN} output. The @value{GDBN} input is still
25865 managed using readline.
25866
25867 @item source
25868 The source window shows the source file of the program. The current
25869 line and active breakpoints are displayed in this window.
25870
25871 @item assembly
25872 The assembly window shows the disassembly output of the program.
25873
25874 @item register
25875 This window shows the processor registers. Registers are highlighted
25876 when their values change.
25877 @end table
25878
25879 The source and assembly windows show the current program position
25880 by highlighting the current line and marking it with a @samp{>} marker.
25881 Breakpoints are indicated with two markers. The first marker
25882 indicates the breakpoint type:
25883
25884 @table @code
25885 @item B
25886 Breakpoint which was hit at least once.
25887
25888 @item b
25889 Breakpoint which was never hit.
25890
25891 @item H
25892 Hardware breakpoint which was hit at least once.
25893
25894 @item h
25895 Hardware breakpoint which was never hit.
25896 @end table
25897
25898 The second marker indicates whether the breakpoint is enabled or not:
25899
25900 @table @code
25901 @item +
25902 Breakpoint is enabled.
25903
25904 @item -
25905 Breakpoint is disabled.
25906 @end table
25907
25908 The source, assembly and register windows are updated when the current
25909 thread changes, when the frame changes, or when the program counter
25910 changes.
25911
25912 These windows are not all visible at the same time. The command
25913 window is always visible. The others can be arranged in several
25914 layouts:
25915
25916 @itemize @bullet
25917 @item
25918 source only,
25919
25920 @item
25921 assembly only,
25922
25923 @item
25924 source and assembly,
25925
25926 @item
25927 source and registers, or
25928
25929 @item
25930 assembly and registers.
25931 @end itemize
25932
25933 A status line above the command window shows the following information:
25934
25935 @table @emph
25936 @item target
25937 Indicates the current @value{GDBN} target.
25938 (@pxref{Targets, ,Specifying a Debugging Target}).
25939
25940 @item process
25941 Gives the current process or thread number.
25942 When no process is being debugged, this field is set to @code{No process}.
25943
25944 @item function
25945 Gives the current function name for the selected frame.
25946 The name is demangled if demangling is turned on (@pxref{Print Settings}).
25947 When there is no symbol corresponding to the current program counter,
25948 the string @code{??} is displayed.
25949
25950 @item line
25951 Indicates the current line number for the selected frame.
25952 When the current line number is not known, the string @code{??} is displayed.
25953
25954 @item pc
25955 Indicates the current program counter address.
25956 @end table
25957
25958 @node TUI Keys
25959 @section TUI Key Bindings
25960 @cindex TUI key bindings
25961
25962 The TUI installs several key bindings in the readline keymaps
25963 @ifset SYSTEM_READLINE
25964 (@pxref{Command Line Editing, , , rluserman, GNU Readline Library}).
25965 @end ifset
25966 @ifclear SYSTEM_READLINE
25967 (@pxref{Command Line Editing}).
25968 @end ifclear
25969 The following key bindings are installed for both TUI mode and the
25970 @value{GDBN} standard mode.
25971
25972 @table @kbd
25973 @kindex C-x C-a
25974 @item C-x C-a
25975 @kindex C-x a
25976 @itemx C-x a
25977 @kindex C-x A
25978 @itemx C-x A
25979 Enter or leave the TUI mode. When leaving the TUI mode,
25980 the curses window management stops and @value{GDBN} operates using
25981 its standard mode, writing on the terminal directly. When reentering
25982 the TUI mode, control is given back to the curses windows.
25983 The screen is then refreshed.
25984
25985 @kindex C-x 1
25986 @item C-x 1
25987 Use a TUI layout with only one window. The layout will
25988 either be @samp{source} or @samp{assembly}. When the TUI mode
25989 is not active, it will switch to the TUI mode.
25990
25991 Think of this key binding as the Emacs @kbd{C-x 1} binding.
25992
25993 @kindex C-x 2
25994 @item C-x 2
25995 Use a TUI layout with at least two windows. When the current
25996 layout already has two windows, the next layout with two windows is used.
25997 When a new layout is chosen, one window will always be common to the
25998 previous layout and the new one.
25999
26000 Think of it as the Emacs @kbd{C-x 2} binding.
26001
26002 @kindex C-x o
26003 @item C-x o
26004 Change the active window. The TUI associates several key bindings
26005 (like scrolling and arrow keys) with the active window. This command
26006 gives the focus to the next TUI window.
26007
26008 Think of it as the Emacs @kbd{C-x o} binding.
26009
26010 @kindex C-x s
26011 @item C-x s
26012 Switch in and out of the TUI SingleKey mode that binds single
26013 keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
26014 @end table
26015
26016 The following key bindings only work in the TUI mode:
26017
26018 @table @asis
26019 @kindex PgUp
26020 @item @key{PgUp}
26021 Scroll the active window one page up.
26022
26023 @kindex PgDn
26024 @item @key{PgDn}
26025 Scroll the active window one page down.
26026
26027 @kindex Up
26028 @item @key{Up}
26029 Scroll the active window one line up.
26030
26031 @kindex Down
26032 @item @key{Down}
26033 Scroll the active window one line down.
26034
26035 @kindex Left
26036 @item @key{Left}
26037 Scroll the active window one column left.
26038
26039 @kindex Right
26040 @item @key{Right}
26041 Scroll the active window one column right.
26042
26043 @kindex C-L
26044 @item @kbd{C-L}
26045 Refresh the screen.
26046 @end table
26047
26048 Because the arrow keys scroll the active window in the TUI mode, they
26049 are not available for their normal use by readline unless the command
26050 window has the focus. When another window is active, you must use
26051 other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
26052 and @kbd{C-f} to control the command window.
26053
26054 @node TUI Single Key Mode
26055 @section TUI Single Key Mode
26056 @cindex TUI single key mode
26057
26058 The TUI also provides a @dfn{SingleKey} mode, which binds several
26059 frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
26060 switch into this mode, where the following key bindings are used:
26061
26062 @table @kbd
26063 @kindex c @r{(SingleKey TUI key)}
26064 @item c
26065 continue
26066
26067 @kindex d @r{(SingleKey TUI key)}
26068 @item d
26069 down
26070
26071 @kindex f @r{(SingleKey TUI key)}
26072 @item f
26073 finish
26074
26075 @kindex n @r{(SingleKey TUI key)}
26076 @item n
26077 next
26078
26079 @kindex o @r{(SingleKey TUI key)}
26080 @item o
26081 nexti. The shortcut letter @samp{o} stands for ``step Over''.
26082
26083 @kindex q @r{(SingleKey TUI key)}
26084 @item q
26085 exit the SingleKey mode.
26086
26087 @kindex r @r{(SingleKey TUI key)}
26088 @item r
26089 run
26090
26091 @kindex s @r{(SingleKey TUI key)}
26092 @item s
26093 step
26094
26095 @kindex i @r{(SingleKey TUI key)}
26096 @item i
26097 stepi. The shortcut letter @samp{i} stands for ``step Into''.
26098
26099 @kindex u @r{(SingleKey TUI key)}
26100 @item u
26101 up
26102
26103 @kindex v @r{(SingleKey TUI key)}
26104 @item v
26105 info locals
26106
26107 @kindex w @r{(SingleKey TUI key)}
26108 @item w
26109 where
26110 @end table
26111
26112 Other keys temporarily switch to the @value{GDBN} command prompt.
26113 The key that was pressed is inserted in the editing buffer so that
26114 it is possible to type most @value{GDBN} commands without interaction
26115 with the TUI SingleKey mode. Once the command is entered the TUI
26116 SingleKey mode is restored. The only way to permanently leave
26117 this mode is by typing @kbd{q} or @kbd{C-x s}.
26118
26119
26120 @node TUI Commands
26121 @section TUI-specific Commands
26122 @cindex TUI commands
26123
26124 The TUI has specific commands to control the text windows.
26125 These commands are always available, even when @value{GDBN} is not in
26126 the TUI mode. When @value{GDBN} is in the standard mode, most
26127 of these commands will automatically switch to the TUI mode.
26128
26129 Note that if @value{GDBN}'s @code{stdout} is not connected to a
26130 terminal, or @value{GDBN} has been started with the machine interface
26131 interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
26132 these commands will fail with an error, because it would not be
26133 possible or desirable to enable curses window management.
26134
26135 @table @code
26136 @item tui enable
26137 @kindex tui enable
26138 Activate TUI mode. The last active TUI window layout will be used if
26139 TUI mode has prevsiouly been used in the current debugging session,
26140 otherwise a default layout is used.
26141
26142 @item tui disable
26143 @kindex tui disable
26144 Disable TUI mode, returning to the console interpreter.
26145
26146 @item info win
26147 @kindex info win
26148 List and give the size of all displayed windows.
26149
26150 @item layout @var{name}
26151 @kindex layout
26152 Changes which TUI windows are displayed. In each layout the command
26153 window is always displayed, the @var{name} parameter controls which
26154 additional windows are displayed, and can be any of the following:
26155
26156 @table @code
26157 @item next
26158 Display the next layout.
26159
26160 @item prev
26161 Display the previous layout.
26162
26163 @item src
26164 Display the source and command windows.
26165
26166 @item asm
26167 Display the assembly and command windows.
26168
26169 @item split
26170 Display the source, assembly, and command windows.
26171
26172 @item regs
26173 When in @code{src} layout display the register, source, and command
26174 windows. When in @code{asm} or @code{split} layout display the
26175 register, assembler, and command windows.
26176 @end table
26177
26178 @item focus @var{name}
26179 @kindex focus
26180 Changes which TUI window is currently active for scrolling. The
26181 @var{name} parameter can be any of the following:
26182
26183 @table @code
26184 @item next
26185 Make the next window active for scrolling.
26186
26187 @item prev
26188 Make the previous window active for scrolling.
26189
26190 @item src
26191 Make the source window active for scrolling.
26192
26193 @item asm
26194 Make the assembly window active for scrolling.
26195
26196 @item regs
26197 Make the register window active for scrolling.
26198
26199 @item cmd
26200 Make the command window active for scrolling.
26201 @end table
26202
26203 @item refresh
26204 @kindex refresh
26205 Refresh the screen. This is similar to typing @kbd{C-L}.
26206
26207 @item tui reg @var{group}
26208 @kindex tui reg
26209 Changes the register group displayed in the tui register window to
26210 @var{group}. If the register window is not currently displayed this
26211 command will cause the register window to be displayed. The list of
26212 register groups, as well as their order is target specific. The
26213 following groups are available on most targets:
26214 @table @code
26215 @item next
26216 Repeatedly selecting this group will cause the display to cycle
26217 through all of the available register groups.
26218
26219 @item prev
26220 Repeatedly selecting this group will cause the display to cycle
26221 through all of the available register groups in the reverse order to
26222 @var{next}.
26223
26224 @item general
26225 Display the general registers.
26226 @item float
26227 Display the floating point registers.
26228 @item system
26229 Display the system registers.
26230 @item vector
26231 Display the vector registers.
26232 @item all
26233 Display all registers.
26234 @end table
26235
26236 @item update
26237 @kindex update
26238 Update the source window and the current execution point.
26239
26240 @item winheight @var{name} +@var{count}
26241 @itemx winheight @var{name} -@var{count}
26242 @kindex winheight
26243 Change the height of the window @var{name} by @var{count}
26244 lines. Positive counts increase the height, while negative counts
26245 decrease it. The @var{name} parameter can be one of @code{src} (the
26246 source window), @code{cmd} (the command window), @code{asm} (the
26247 disassembly window), or @code{regs} (the register display window).
26248
26249 @item tabset @var{nchars}
26250 @kindex tabset
26251 Set the width of tab stops to be @var{nchars} characters. This
26252 setting affects the display of TAB characters in the source and
26253 assembly windows.
26254 @end table
26255
26256 @node TUI Configuration
26257 @section TUI Configuration Variables
26258 @cindex TUI configuration variables
26259
26260 Several configuration variables control the appearance of TUI windows.
26261
26262 @table @code
26263 @item set tui border-kind @var{kind}
26264 @kindex set tui border-kind
26265 Select the border appearance for the source, assembly and register windows.
26266 The possible values are the following:
26267 @table @code
26268 @item space
26269 Use a space character to draw the border.
26270
26271 @item ascii
26272 Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
26273
26274 @item acs
26275 Use the Alternate Character Set to draw the border. The border is
26276 drawn using character line graphics if the terminal supports them.
26277 @end table
26278
26279 @item set tui border-mode @var{mode}
26280 @kindex set tui border-mode
26281 @itemx set tui active-border-mode @var{mode}
26282 @kindex set tui active-border-mode
26283 Select the display attributes for the borders of the inactive windows
26284 or the active window. The @var{mode} can be one of the following:
26285 @table @code
26286 @item normal
26287 Use normal attributes to display the border.
26288
26289 @item standout
26290 Use standout mode.
26291
26292 @item reverse
26293 Use reverse video mode.
26294
26295 @item half
26296 Use half bright mode.
26297
26298 @item half-standout
26299 Use half bright and standout mode.
26300
26301 @item bold
26302 Use extra bright or bold mode.
26303
26304 @item bold-standout
26305 Use extra bright or bold and standout mode.
26306 @end table
26307 @end table
26308
26309 @node Emacs
26310 @chapter Using @value{GDBN} under @sc{gnu} Emacs
26311
26312 @cindex Emacs
26313 @cindex @sc{gnu} Emacs
26314 A special interface allows you to use @sc{gnu} Emacs to view (and
26315 edit) the source files for the program you are debugging with
26316 @value{GDBN}.
26317
26318 To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
26319 executable file you want to debug as an argument. This command starts
26320 @value{GDBN} as a subprocess of Emacs, with input and output through a newly
26321 created Emacs buffer.
26322 @c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
26323
26324 Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
26325 things:
26326
26327 @itemize @bullet
26328 @item
26329 All ``terminal'' input and output goes through an Emacs buffer, called
26330 the GUD buffer.
26331
26332 This applies both to @value{GDBN} commands and their output, and to the input
26333 and output done by the program you are debugging.
26334
26335 This is useful because it means that you can copy the text of previous
26336 commands and input them again; you can even use parts of the output
26337 in this way.
26338
26339 All the facilities of Emacs' Shell mode are available for interacting
26340 with your program. In particular, you can send signals the usual
26341 way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
26342 stop.
26343
26344 @item
26345 @value{GDBN} displays source code through Emacs.
26346
26347 Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
26348 source file for that frame and puts an arrow (@samp{=>}) at the
26349 left margin of the current line. Emacs uses a separate buffer for
26350 source display, and splits the screen to show both your @value{GDBN} session
26351 and the source.
26352
26353 Explicit @value{GDBN} @code{list} or search commands still produce output as
26354 usual, but you probably have no reason to use them from Emacs.
26355 @end itemize
26356
26357 We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
26358 a graphical mode, enabled by default, which provides further buffers
26359 that can control the execution and describe the state of your program.
26360 @xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
26361
26362 If you specify an absolute file name when prompted for the @kbd{M-x
26363 gdb} argument, then Emacs sets your current working directory to where
26364 your program resides. If you only specify the file name, then Emacs
26365 sets your current working directory to the directory associated
26366 with the previous buffer. In this case, @value{GDBN} may find your
26367 program by searching your environment's @code{PATH} variable, but on
26368 some operating systems it might not find the source. So, although the
26369 @value{GDBN} input and output session proceeds normally, the auxiliary
26370 buffer does not display the current source and line of execution.
26371
26372 The initial working directory of @value{GDBN} is printed on the top
26373 line of the GUD buffer and this serves as a default for the commands
26374 that specify files for @value{GDBN} to operate on. @xref{Files,
26375 ,Commands to Specify Files}.
26376
26377 By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
26378 need to call @value{GDBN} by a different name (for example, if you
26379 keep several configurations around, with different names) you can
26380 customize the Emacs variable @code{gud-gdb-command-name} to run the
26381 one you want.
26382
26383 In the GUD buffer, you can use these special Emacs commands in
26384 addition to the standard Shell mode commands:
26385
26386 @table @kbd
26387 @item C-h m
26388 Describe the features of Emacs' GUD Mode.
26389
26390 @item C-c C-s
26391 Execute to another source line, like the @value{GDBN} @code{step} command; also
26392 update the display window to show the current file and location.
26393
26394 @item C-c C-n
26395 Execute to next source line in this function, skipping all function
26396 calls, like the @value{GDBN} @code{next} command. Then update the display window
26397 to show the current file and location.
26398
26399 @item C-c C-i
26400 Execute one instruction, like the @value{GDBN} @code{stepi} command; update
26401 display window accordingly.
26402
26403 @item C-c C-f
26404 Execute until exit from the selected stack frame, like the @value{GDBN}
26405 @code{finish} command.
26406
26407 @item C-c C-r
26408 Continue execution of your program, like the @value{GDBN} @code{continue}
26409 command.
26410
26411 @item C-c <
26412 Go up the number of frames indicated by the numeric argument
26413 (@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
26414 like the @value{GDBN} @code{up} command.
26415
26416 @item C-c >
26417 Go down the number of frames indicated by the numeric argument, like the
26418 @value{GDBN} @code{down} command.
26419 @end table
26420
26421 In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
26422 tells @value{GDBN} to set a breakpoint on the source line point is on.
26423
26424 In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
26425 separate frame which shows a backtrace when the GUD buffer is current.
26426 Move point to any frame in the stack and type @key{RET} to make it
26427 become the current frame and display the associated source in the
26428 source buffer. Alternatively, click @kbd{Mouse-2} to make the
26429 selected frame become the current one. In graphical mode, the
26430 speedbar displays watch expressions.
26431
26432 If you accidentally delete the source-display buffer, an easy way to get
26433 it back is to type the command @code{f} in the @value{GDBN} buffer, to
26434 request a frame display; when you run under Emacs, this recreates
26435 the source buffer if necessary to show you the context of the current
26436 frame.
26437
26438 The source files displayed in Emacs are in ordinary Emacs buffers
26439 which are visiting the source files in the usual way. You can edit
26440 the files with these buffers if you wish; but keep in mind that @value{GDBN}
26441 communicates with Emacs in terms of line numbers. If you add or
26442 delete lines from the text, the line numbers that @value{GDBN} knows cease
26443 to correspond properly with the code.
26444
26445 A more detailed description of Emacs' interaction with @value{GDBN} is
26446 given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
26447 Emacs Manual}).
26448
26449 @node GDB/MI
26450 @chapter The @sc{gdb/mi} Interface
26451
26452 @unnumberedsec Function and Purpose
26453
26454 @cindex @sc{gdb/mi}, its purpose
26455 @sc{gdb/mi} is a line based machine oriented text interface to
26456 @value{GDBN} and is activated by specifying using the
26457 @option{--interpreter} command line option (@pxref{Mode Options}). It
26458 is specifically intended to support the development of systems which
26459 use the debugger as just one small component of a larger system.
26460
26461 This chapter is a specification of the @sc{gdb/mi} interface. It is written
26462 in the form of a reference manual.
26463
26464 Note that @sc{gdb/mi} is still under construction, so some of the
26465 features described below are incomplete and subject to change
26466 (@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
26467
26468 @unnumberedsec Notation and Terminology
26469
26470 @cindex notational conventions, for @sc{gdb/mi}
26471 This chapter uses the following notation:
26472
26473 @itemize @bullet
26474 @item
26475 @code{|} separates two alternatives.
26476
26477 @item
26478 @code{[ @var{something} ]} indicates that @var{something} is optional:
26479 it may or may not be given.
26480
26481 @item
26482 @code{( @var{group} )*} means that @var{group} inside the parentheses
26483 may repeat zero or more times.
26484
26485 @item
26486 @code{( @var{group} )+} means that @var{group} inside the parentheses
26487 may repeat one or more times.
26488
26489 @item
26490 @code{"@var{string}"} means a literal @var{string}.
26491 @end itemize
26492
26493 @ignore
26494 @heading Dependencies
26495 @end ignore
26496
26497 @menu
26498 * GDB/MI General Design::
26499 * GDB/MI Command Syntax::
26500 * GDB/MI Compatibility with CLI::
26501 * GDB/MI Development and Front Ends::
26502 * GDB/MI Output Records::
26503 * GDB/MI Simple Examples::
26504 * GDB/MI Command Description Format::
26505 * GDB/MI Breakpoint Commands::
26506 * GDB/MI Catchpoint Commands::
26507 * GDB/MI Program Context::
26508 * GDB/MI Thread Commands::
26509 * GDB/MI Ada Tasking Commands::
26510 * GDB/MI Program Execution::
26511 * GDB/MI Stack Manipulation::
26512 * GDB/MI Variable Objects::
26513 * GDB/MI Data Manipulation::
26514 * GDB/MI Tracepoint Commands::
26515 * GDB/MI Symbol Query::
26516 * GDB/MI File Commands::
26517 @ignore
26518 * GDB/MI Kod Commands::
26519 * GDB/MI Memory Overlay Commands::
26520 * GDB/MI Signal Handling Commands::
26521 @end ignore
26522 * GDB/MI Target Manipulation::
26523 * GDB/MI File Transfer Commands::
26524 * GDB/MI Ada Exceptions Commands::
26525 * GDB/MI Support Commands::
26526 * GDB/MI Miscellaneous Commands::
26527 @end menu
26528
26529 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26530 @node GDB/MI General Design
26531 @section @sc{gdb/mi} General Design
26532 @cindex GDB/MI General Design
26533
26534 Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
26535 parts---commands sent to @value{GDBN}, responses to those commands
26536 and notifications. Each command results in exactly one response,
26537 indicating either successful completion of the command, or an error.
26538 For the commands that do not resume the target, the response contains the
26539 requested information. For the commands that resume the target, the
26540 response only indicates whether the target was successfully resumed.
26541 Notifications is the mechanism for reporting changes in the state of the
26542 target, or in @value{GDBN} state, that cannot conveniently be associated with
26543 a command and reported as part of that command response.
26544
26545 The important examples of notifications are:
26546 @itemize @bullet
26547
26548 @item
26549 Exec notifications. These are used to report changes in
26550 target state---when a target is resumed, or stopped. It would not
26551 be feasible to include this information in response of resuming
26552 commands, because one resume commands can result in multiple events in
26553 different threads. Also, quite some time may pass before any event
26554 happens in the target, while a frontend needs to know whether the resuming
26555 command itself was successfully executed.
26556
26557 @item
26558 Console output, and status notifications. Console output
26559 notifications are used to report output of CLI commands, as well as
26560 diagnostics for other commands. Status notifications are used to
26561 report the progress of a long-running operation. Naturally, including
26562 this information in command response would mean no output is produced
26563 until the command is finished, which is undesirable.
26564
26565 @item
26566 General notifications. Commands may have various side effects on
26567 the @value{GDBN} or target state beyond their official purpose. For example,
26568 a command may change the selected thread. Although such changes can
26569 be included in command response, using notification allows for more
26570 orthogonal frontend design.
26571
26572 @end itemize
26573
26574 There's no guarantee that whenever an MI command reports an error,
26575 @value{GDBN} or the target are in any specific state, and especially,
26576 the state is not reverted to the state before the MI command was
26577 processed. Therefore, whenever an MI command results in an error,
26578 we recommend that the frontend refreshes all the information shown in
26579 the user interface.
26580
26581
26582 @menu
26583 * Context management::
26584 * Asynchronous and non-stop modes::
26585 * Thread groups::
26586 @end menu
26587
26588 @node Context management
26589 @subsection Context management
26590
26591 @subsubsection Threads and Frames
26592
26593 In most cases when @value{GDBN} accesses the target, this access is
26594 done in context of a specific thread and frame (@pxref{Frames}).
26595 Often, even when accessing global data, the target requires that a thread
26596 be specified. The CLI interface maintains the selected thread and frame,
26597 and supplies them to target on each command. This is convenient,
26598 because a command line user would not want to specify that information
26599 explicitly on each command, and because user interacts with
26600 @value{GDBN} via a single terminal, so no confusion is possible as
26601 to what thread and frame are the current ones.
26602
26603 In the case of MI, the concept of selected thread and frame is less
26604 useful. First, a frontend can easily remember this information
26605 itself. Second, a graphical frontend can have more than one window,
26606 each one used for debugging a different thread, and the frontend might
26607 want to access additional threads for internal purposes. This
26608 increases the risk that by relying on implicitly selected thread, the
26609 frontend may be operating on a wrong one. Therefore, each MI command
26610 should explicitly specify which thread and frame to operate on. To
26611 make it possible, each MI command accepts the @samp{--thread} and
26612 @samp{--frame} options, the value to each is @value{GDBN} global
26613 identifier for thread and frame to operate on.
26614
26615 Usually, each top-level window in a frontend allows the user to select
26616 a thread and a frame, and remembers the user selection for further
26617 operations. However, in some cases @value{GDBN} may suggest that the
26618 current thread or frame be changed. For example, when stopping on a
26619 breakpoint it is reasonable to switch to the thread where breakpoint is
26620 hit. For another example, if the user issues the CLI @samp{thread} or
26621 @samp{frame} commands via the frontend, it is desirable to change the
26622 frontend's selection to the one specified by user. @value{GDBN}
26623 communicates the suggestion to change current thread and frame using the
26624 @samp{=thread-selected} notification.
26625
26626 Note that historically, MI shares the selected thread with CLI, so
26627 frontends used the @code{-thread-select} to execute commands in the
26628 right context. However, getting this to work right is cumbersome. The
26629 simplest way is for frontend to emit @code{-thread-select} command
26630 before every command. This doubles the number of commands that need
26631 to be sent. The alternative approach is to suppress @code{-thread-select}
26632 if the selected thread in @value{GDBN} is supposed to be identical to the
26633 thread the frontend wants to operate on. However, getting this
26634 optimization right can be tricky. In particular, if the frontend
26635 sends several commands to @value{GDBN}, and one of the commands changes the
26636 selected thread, then the behaviour of subsequent commands will
26637 change. So, a frontend should either wait for response from such
26638 problematic commands, or explicitly add @code{-thread-select} for
26639 all subsequent commands. No frontend is known to do this exactly
26640 right, so it is suggested to just always pass the @samp{--thread} and
26641 @samp{--frame} options.
26642
26643 @subsubsection Language
26644
26645 The execution of several commands depends on which language is selected.
26646 By default, the current language (@pxref{show language}) is used.
26647 But for commands known to be language-sensitive, it is recommended
26648 to use the @samp{--language} option. This option takes one argument,
26649 which is the name of the language to use while executing the command.
26650 For instance:
26651
26652 @smallexample
26653 -data-evaluate-expression --language c "sizeof (void*)"
26654 ^done,value="4"
26655 (gdb)
26656 @end smallexample
26657
26658 The valid language names are the same names accepted by the
26659 @samp{set language} command (@pxref{Manually}), excluding @samp{auto},
26660 @samp{local} or @samp{unknown}.
26661
26662 @node Asynchronous and non-stop modes
26663 @subsection Asynchronous command execution and non-stop mode
26664
26665 On some targets, @value{GDBN} is capable of processing MI commands
26666 even while the target is running. This is called @dfn{asynchronous
26667 command execution} (@pxref{Background Execution}). The frontend may
26668 specify a preferrence for asynchronous execution using the
26669 @code{-gdb-set mi-async 1} command, which should be emitted before
26670 either running the executable or attaching to the target. After the
26671 frontend has started the executable or attached to the target, it can
26672 find if asynchronous execution is enabled using the
26673 @code{-list-target-features} command.
26674
26675 @table @code
26676 @item -gdb-set mi-async on
26677 @item -gdb-set mi-async off
26678 Set whether MI is in asynchronous mode.
26679
26680 When @code{off}, which is the default, MI execution commands (e.g.,
26681 @code{-exec-continue}) are foreground commands, and @value{GDBN} waits
26682 for the program to stop before processing further commands.
26683
26684 When @code{on}, MI execution commands are background execution
26685 commands (e.g., @code{-exec-continue} becomes the equivalent of the
26686 @code{c&} CLI command), and so @value{GDBN} is capable of processing
26687 MI commands even while the target is running.
26688
26689 @item -gdb-show mi-async
26690 Show whether MI asynchronous mode is enabled.
26691 @end table
26692
26693 Note: In @value{GDBN} version 7.7 and earlier, this option was called
26694 @code{target-async} instead of @code{mi-async}, and it had the effect
26695 of both putting MI in asynchronous mode and making CLI background
26696 commands possible. CLI background commands are now always possible
26697 ``out of the box'' if the target supports them. The old spelling is
26698 kept as a deprecated alias for backwards compatibility.
26699
26700 Even if @value{GDBN} can accept a command while target is running,
26701 many commands that access the target do not work when the target is
26702 running. Therefore, asynchronous command execution is most useful
26703 when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
26704 it is possible to examine the state of one thread, while other threads
26705 are running.
26706
26707 When a given thread is running, MI commands that try to access the
26708 target in the context of that thread may not work, or may work only on
26709 some targets. In particular, commands that try to operate on thread's
26710 stack will not work, on any target. Commands that read memory, or
26711 modify breakpoints, may work or not work, depending on the target. Note
26712 that even commands that operate on global state, such as @code{print},
26713 @code{set}, and breakpoint commands, still access the target in the
26714 context of a specific thread, so frontend should try to find a
26715 stopped thread and perform the operation on that thread (using the
26716 @samp{--thread} option).
26717
26718 Which commands will work in the context of a running thread is
26719 highly target dependent. However, the two commands
26720 @code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
26721 to find the state of a thread, will always work.
26722
26723 @node Thread groups
26724 @subsection Thread groups
26725 @value{GDBN} may be used to debug several processes at the same time.
26726 On some platfroms, @value{GDBN} may support debugging of several
26727 hardware systems, each one having several cores with several different
26728 processes running on each core. This section describes the MI
26729 mechanism to support such debugging scenarios.
26730
26731 The key observation is that regardless of the structure of the
26732 target, MI can have a global list of threads, because most commands that
26733 accept the @samp{--thread} option do not need to know what process that
26734 thread belongs to. Therefore, it is not necessary to introduce
26735 neither additional @samp{--process} option, nor an notion of the
26736 current process in the MI interface. The only strictly new feature
26737 that is required is the ability to find how the threads are grouped
26738 into processes.
26739
26740 To allow the user to discover such grouping, and to support arbitrary
26741 hierarchy of machines/cores/processes, MI introduces the concept of a
26742 @dfn{thread group}. Thread group is a collection of threads and other
26743 thread groups. A thread group always has a string identifier, a type,
26744 and may have additional attributes specific to the type. A new
26745 command, @code{-list-thread-groups}, returns the list of top-level
26746 thread groups, which correspond to processes that @value{GDBN} is
26747 debugging at the moment. By passing an identifier of a thread group
26748 to the @code{-list-thread-groups} command, it is possible to obtain
26749 the members of specific thread group.
26750
26751 To allow the user to easily discover processes, and other objects, he
26752 wishes to debug, a concept of @dfn{available thread group} is
26753 introduced. Available thread group is an thread group that
26754 @value{GDBN} is not debugging, but that can be attached to, using the
26755 @code{-target-attach} command. The list of available top-level thread
26756 groups can be obtained using @samp{-list-thread-groups --available}.
26757 In general, the content of a thread group may be only retrieved only
26758 after attaching to that thread group.
26759
26760 Thread groups are related to inferiors (@pxref{Inferiors and
26761 Programs}). Each inferior corresponds to a thread group of a special
26762 type @samp{process}, and some additional operations are permitted on
26763 such thread groups.
26764
26765 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26766 @node GDB/MI Command Syntax
26767 @section @sc{gdb/mi} Command Syntax
26768
26769 @menu
26770 * GDB/MI Input Syntax::
26771 * GDB/MI Output Syntax::
26772 @end menu
26773
26774 @node GDB/MI Input Syntax
26775 @subsection @sc{gdb/mi} Input Syntax
26776
26777 @cindex input syntax for @sc{gdb/mi}
26778 @cindex @sc{gdb/mi}, input syntax
26779 @table @code
26780 @item @var{command} @expansion{}
26781 @code{@var{cli-command} | @var{mi-command}}
26782
26783 @item @var{cli-command} @expansion{}
26784 @code{[ @var{token} ] @var{cli-command} @var{nl}}, where
26785 @var{cli-command} is any existing @value{GDBN} CLI command.
26786
26787 @item @var{mi-command} @expansion{}
26788 @code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
26789 @code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
26790
26791 @item @var{token} @expansion{}
26792 "any sequence of digits"
26793
26794 @item @var{option} @expansion{}
26795 @code{"-" @var{parameter} [ " " @var{parameter} ]}
26796
26797 @item @var{parameter} @expansion{}
26798 @code{@var{non-blank-sequence} | @var{c-string}}
26799
26800 @item @var{operation} @expansion{}
26801 @emph{any of the operations described in this chapter}
26802
26803 @item @var{non-blank-sequence} @expansion{}
26804 @emph{anything, provided it doesn't contain special characters such as
26805 "-", @var{nl}, """ and of course " "}
26806
26807 @item @var{c-string} @expansion{}
26808 @code{""" @var{seven-bit-iso-c-string-content} """}
26809
26810 @item @var{nl} @expansion{}
26811 @code{CR | CR-LF}
26812 @end table
26813
26814 @noindent
26815 Notes:
26816
26817 @itemize @bullet
26818 @item
26819 The CLI commands are still handled by the @sc{mi} interpreter; their
26820 output is described below.
26821
26822 @item
26823 The @code{@var{token}}, when present, is passed back when the command
26824 finishes.
26825
26826 @item
26827 Some @sc{mi} commands accept optional arguments as part of the parameter
26828 list. Each option is identified by a leading @samp{-} (dash) and may be
26829 followed by an optional argument parameter. Options occur first in the
26830 parameter list and can be delimited from normal parameters using
26831 @samp{--} (this is useful when some parameters begin with a dash).
26832 @end itemize
26833
26834 Pragmatics:
26835
26836 @itemize @bullet
26837 @item
26838 We want easy access to the existing CLI syntax (for debugging).
26839
26840 @item
26841 We want it to be easy to spot a @sc{mi} operation.
26842 @end itemize
26843
26844 @node GDB/MI Output Syntax
26845 @subsection @sc{gdb/mi} Output Syntax
26846
26847 @cindex output syntax of @sc{gdb/mi}
26848 @cindex @sc{gdb/mi}, output syntax
26849 The output from @sc{gdb/mi} consists of zero or more out-of-band records
26850 followed, optionally, by a single result record. This result record
26851 is for the most recent command. The sequence of output records is
26852 terminated by @samp{(gdb)}.
26853
26854 If an input command was prefixed with a @code{@var{token}} then the
26855 corresponding output for that command will also be prefixed by that same
26856 @var{token}.
26857
26858 @table @code
26859 @item @var{output} @expansion{}
26860 @code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
26861
26862 @item @var{result-record} @expansion{}
26863 @code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
26864
26865 @item @var{out-of-band-record} @expansion{}
26866 @code{@var{async-record} | @var{stream-record}}
26867
26868 @item @var{async-record} @expansion{}
26869 @code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
26870
26871 @item @var{exec-async-output} @expansion{}
26872 @code{[ @var{token} ] "*" @var{async-output nl}}
26873
26874 @item @var{status-async-output} @expansion{}
26875 @code{[ @var{token} ] "+" @var{async-output nl}}
26876
26877 @item @var{notify-async-output} @expansion{}
26878 @code{[ @var{token} ] "=" @var{async-output nl}}
26879
26880 @item @var{async-output} @expansion{}
26881 @code{@var{async-class} ( "," @var{result} )*}
26882
26883 @item @var{result-class} @expansion{}
26884 @code{"done" | "running" | "connected" | "error" | "exit"}
26885
26886 @item @var{async-class} @expansion{}
26887 @code{"stopped" | @var{others}} (where @var{others} will be added
26888 depending on the needs---this is still in development).
26889
26890 @item @var{result} @expansion{}
26891 @code{ @var{variable} "=" @var{value}}
26892
26893 @item @var{variable} @expansion{}
26894 @code{ @var{string} }
26895
26896 @item @var{value} @expansion{}
26897 @code{ @var{const} | @var{tuple} | @var{list} }
26898
26899 @item @var{const} @expansion{}
26900 @code{@var{c-string}}
26901
26902 @item @var{tuple} @expansion{}
26903 @code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
26904
26905 @item @var{list} @expansion{}
26906 @code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
26907 @var{result} ( "," @var{result} )* "]" }
26908
26909 @item @var{stream-record} @expansion{}
26910 @code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
26911
26912 @item @var{console-stream-output} @expansion{}
26913 @code{"~" @var{c-string nl}}
26914
26915 @item @var{target-stream-output} @expansion{}
26916 @code{"@@" @var{c-string nl}}
26917
26918 @item @var{log-stream-output} @expansion{}
26919 @code{"&" @var{c-string nl}}
26920
26921 @item @var{nl} @expansion{}
26922 @code{CR | CR-LF}
26923
26924 @item @var{token} @expansion{}
26925 @emph{any sequence of digits}.
26926 @end table
26927
26928 @noindent
26929 Notes:
26930
26931 @itemize @bullet
26932 @item
26933 All output sequences end in a single line containing a period.
26934
26935 @item
26936 The @code{@var{token}} is from the corresponding request. Note that
26937 for all async output, while the token is allowed by the grammar and
26938 may be output by future versions of @value{GDBN} for select async
26939 output messages, it is generally omitted. Frontends should treat
26940 all async output as reporting general changes in the state of the
26941 target and there should be no need to associate async output to any
26942 prior command.
26943
26944 @item
26945 @cindex status output in @sc{gdb/mi}
26946 @var{status-async-output} contains on-going status information about the
26947 progress of a slow operation. It can be discarded. All status output is
26948 prefixed by @samp{+}.
26949
26950 @item
26951 @cindex async output in @sc{gdb/mi}
26952 @var{exec-async-output} contains asynchronous state change on the target
26953 (stopped, started, disappeared). All async output is prefixed by
26954 @samp{*}.
26955
26956 @item
26957 @cindex notify output in @sc{gdb/mi}
26958 @var{notify-async-output} contains supplementary information that the
26959 client should handle (e.g., a new breakpoint information). All notify
26960 output is prefixed by @samp{=}.
26961
26962 @item
26963 @cindex console output in @sc{gdb/mi}
26964 @var{console-stream-output} is output that should be displayed as is in the
26965 console. It is the textual response to a CLI command. All the console
26966 output is prefixed by @samp{~}.
26967
26968 @item
26969 @cindex target output in @sc{gdb/mi}
26970 @var{target-stream-output} is the output produced by the target program.
26971 All the target output is prefixed by @samp{@@}.
26972
26973 @item
26974 @cindex log output in @sc{gdb/mi}
26975 @var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
26976 instance messages that should be displayed as part of an error log. All
26977 the log output is prefixed by @samp{&}.
26978
26979 @item
26980 @cindex list output in @sc{gdb/mi}
26981 New @sc{gdb/mi} commands should only output @var{lists} containing
26982 @var{values}.
26983
26984
26985 @end itemize
26986
26987 @xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
26988 details about the various output records.
26989
26990 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26991 @node GDB/MI Compatibility with CLI
26992 @section @sc{gdb/mi} Compatibility with CLI
26993
26994 @cindex compatibility, @sc{gdb/mi} and CLI
26995 @cindex @sc{gdb/mi}, compatibility with CLI
26996
26997 For the developers convenience CLI commands can be entered directly,
26998 but there may be some unexpected behaviour. For example, commands
26999 that query the user will behave as if the user replied yes, breakpoint
27000 command lists are not executed and some CLI commands, such as
27001 @code{if}, @code{when} and @code{define}, prompt for further input with
27002 @samp{>}, which is not valid MI output.
27003
27004 This feature may be removed at some stage in the future and it is
27005 recommended that front ends use the @code{-interpreter-exec} command
27006 (@pxref{-interpreter-exec}).
27007
27008 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27009 @node GDB/MI Development and Front Ends
27010 @section @sc{gdb/mi} Development and Front Ends
27011 @cindex @sc{gdb/mi} development
27012
27013 The application which takes the MI output and presents the state of the
27014 program being debugged to the user is called a @dfn{front end}.
27015
27016 Although @sc{gdb/mi} is still incomplete, it is currently being used
27017 by a variety of front ends to @value{GDBN}. This makes it difficult
27018 to introduce new functionality without breaking existing usage. This
27019 section tries to minimize the problems by describing how the protocol
27020 might change.
27021
27022 Some changes in MI need not break a carefully designed front end, and
27023 for these the MI version will remain unchanged. The following is a
27024 list of changes that may occur within one level, so front ends should
27025 parse MI output in a way that can handle them:
27026
27027 @itemize @bullet
27028 @item
27029 New MI commands may be added.
27030
27031 @item
27032 New fields may be added to the output of any MI command.
27033
27034 @item
27035 The range of values for fields with specified values, e.g.,
27036 @code{in_scope} (@pxref{-var-update}) may be extended.
27037
27038 @c The format of field's content e.g type prefix, may change so parse it
27039 @c at your own risk. Yes, in general?
27040
27041 @c The order of fields may change? Shouldn't really matter but it might
27042 @c resolve inconsistencies.
27043 @end itemize
27044
27045 If the changes are likely to break front ends, the MI version level
27046 will be increased by one. This will allow the front end to parse the
27047 output according to the MI version. Apart from mi0, new versions of
27048 @value{GDBN} will not support old versions of MI and it will be the
27049 responsibility of the front end to work with the new one.
27050
27051 @c Starting with mi3, add a new command -mi-version that prints the MI
27052 @c version?
27053
27054 The best way to avoid unexpected changes in MI that might break your front
27055 end is to make your project known to @value{GDBN} developers and
27056 follow development on @email{gdb@@sourceware.org} and
27057 @email{gdb-patches@@sourceware.org}.
27058 @cindex mailing lists
27059
27060 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27061 @node GDB/MI Output Records
27062 @section @sc{gdb/mi} Output Records
27063
27064 @menu
27065 * GDB/MI Result Records::
27066 * GDB/MI Stream Records::
27067 * GDB/MI Async Records::
27068 * GDB/MI Breakpoint Information::
27069 * GDB/MI Frame Information::
27070 * GDB/MI Thread Information::
27071 * GDB/MI Ada Exception Information::
27072 @end menu
27073
27074 @node GDB/MI Result Records
27075 @subsection @sc{gdb/mi} Result Records
27076
27077 @cindex result records in @sc{gdb/mi}
27078 @cindex @sc{gdb/mi}, result records
27079 In addition to a number of out-of-band notifications, the response to a
27080 @sc{gdb/mi} command includes one of the following result indications:
27081
27082 @table @code
27083 @findex ^done
27084 @item "^done" [ "," @var{results} ]
27085 The synchronous operation was successful, @code{@var{results}} are the return
27086 values.
27087
27088 @item "^running"
27089 @findex ^running
27090 This result record is equivalent to @samp{^done}. Historically, it
27091 was output instead of @samp{^done} if the command has resumed the
27092 target. This behaviour is maintained for backward compatibility, but
27093 all frontends should treat @samp{^done} and @samp{^running}
27094 identically and rely on the @samp{*running} output record to determine
27095 which threads are resumed.
27096
27097 @item "^connected"
27098 @findex ^connected
27099 @value{GDBN} has connected to a remote target.
27100
27101 @item "^error" "," "msg=" @var{c-string} [ "," "code=" @var{c-string} ]
27102 @findex ^error
27103 The operation failed. The @code{msg=@var{c-string}} variable contains
27104 the corresponding error message.
27105
27106 If present, the @code{code=@var{c-string}} variable provides an error
27107 code on which consumers can rely on to detect the corresponding
27108 error condition. At present, only one error code is defined:
27109
27110 @table @samp
27111 @item "undefined-command"
27112 Indicates that the command causing the error does not exist.
27113 @end table
27114
27115 @item "^exit"
27116 @findex ^exit
27117 @value{GDBN} has terminated.
27118
27119 @end table
27120
27121 @node GDB/MI Stream Records
27122 @subsection @sc{gdb/mi} Stream Records
27123
27124 @cindex @sc{gdb/mi}, stream records
27125 @cindex stream records in @sc{gdb/mi}
27126 @value{GDBN} internally maintains a number of output streams: the console, the
27127 target, and the log. The output intended for each of these streams is
27128 funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
27129
27130 Each stream record begins with a unique @dfn{prefix character} which
27131 identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
27132 Syntax}). In addition to the prefix, each stream record contains a
27133 @code{@var{string-output}}. This is either raw text (with an implicit new
27134 line) or a quoted C string (which does not contain an implicit newline).
27135
27136 @table @code
27137 @item "~" @var{string-output}
27138 The console output stream contains text that should be displayed in the
27139 CLI console window. It contains the textual responses to CLI commands.
27140
27141 @item "@@" @var{string-output}
27142 The target output stream contains any textual output from the running
27143 target. This is only present when GDB's event loop is truly
27144 asynchronous, which is currently only the case for remote targets.
27145
27146 @item "&" @var{string-output}
27147 The log stream contains debugging messages being produced by @value{GDBN}'s
27148 internals.
27149 @end table
27150
27151 @node GDB/MI Async Records
27152 @subsection @sc{gdb/mi} Async Records
27153
27154 @cindex async records in @sc{gdb/mi}
27155 @cindex @sc{gdb/mi}, async records
27156 @dfn{Async} records are used to notify the @sc{gdb/mi} client of
27157 additional changes that have occurred. Those changes can either be a
27158 consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
27159 target activity (e.g., target stopped).
27160
27161 The following is the list of possible async records:
27162
27163 @table @code
27164
27165 @item *running,thread-id="@var{thread}"
27166 The target is now running. The @var{thread} field can be the global
27167 thread ID of the the thread that is now running, and it can be
27168 @samp{all} if all threads are running. The frontend should assume
27169 that no interaction with a running thread is possible after this
27170 notification is produced. The frontend should not assume that this
27171 notification is output only once for any command. @value{GDBN} may
27172 emit this notification several times, either for different threads,
27173 because it cannot resume all threads together, or even for a single
27174 thread, if the thread must be stepped though some code before letting
27175 it run freely.
27176
27177 @item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
27178 The target has stopped. The @var{reason} field can have one of the
27179 following values:
27180
27181 @table @code
27182 @item breakpoint-hit
27183 A breakpoint was reached.
27184 @item watchpoint-trigger
27185 A watchpoint was triggered.
27186 @item read-watchpoint-trigger
27187 A read watchpoint was triggered.
27188 @item access-watchpoint-trigger
27189 An access watchpoint was triggered.
27190 @item function-finished
27191 An -exec-finish or similar CLI command was accomplished.
27192 @item location-reached
27193 An -exec-until or similar CLI command was accomplished.
27194 @item watchpoint-scope
27195 A watchpoint has gone out of scope.
27196 @item end-stepping-range
27197 An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
27198 similar CLI command was accomplished.
27199 @item exited-signalled
27200 The inferior exited because of a signal.
27201 @item exited
27202 The inferior exited.
27203 @item exited-normally
27204 The inferior exited normally.
27205 @item signal-received
27206 A signal was received by the inferior.
27207 @item solib-event
27208 The inferior has stopped due to a library being loaded or unloaded.
27209 This can happen when @code{stop-on-solib-events} (@pxref{Files}) is
27210 set or when a @code{catch load} or @code{catch unload} catchpoint is
27211 in use (@pxref{Set Catchpoints}).
27212 @item fork
27213 The inferior has forked. This is reported when @code{catch fork}
27214 (@pxref{Set Catchpoints}) has been used.
27215 @item vfork
27216 The inferior has vforked. This is reported in when @code{catch vfork}
27217 (@pxref{Set Catchpoints}) has been used.
27218 @item syscall-entry
27219 The inferior entered a system call. This is reported when @code{catch
27220 syscall} (@pxref{Set Catchpoints}) has been used.
27221 @item syscall-return
27222 The inferior returned from a system call. This is reported when
27223 @code{catch syscall} (@pxref{Set Catchpoints}) has been used.
27224 @item exec
27225 The inferior called @code{exec}. This is reported when @code{catch exec}
27226 (@pxref{Set Catchpoints}) has been used.
27227 @end table
27228
27229 The @var{id} field identifies the global thread ID of the thread
27230 that directly caused the stop -- for example by hitting a breakpoint.
27231 Depending on whether all-stop
27232 mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
27233 stop all threads, or only the thread that directly triggered the stop.
27234 If all threads are stopped, the @var{stopped} field will have the
27235 value of @code{"all"}. Otherwise, the value of the @var{stopped}
27236 field will be a list of thread identifiers. Presently, this list will
27237 always include a single thread, but frontend should be prepared to see
27238 several threads in the list. The @var{core} field reports the
27239 processor core on which the stop event has happened. This field may be absent
27240 if such information is not available.
27241
27242 @item =thread-group-added,id="@var{id}"
27243 @itemx =thread-group-removed,id="@var{id}"
27244 A thread group was either added or removed. The @var{id} field
27245 contains the @value{GDBN} identifier of the thread group. When a thread
27246 group is added, it generally might not be associated with a running
27247 process. When a thread group is removed, its id becomes invalid and
27248 cannot be used in any way.
27249
27250 @item =thread-group-started,id="@var{id}",pid="@var{pid}"
27251 A thread group became associated with a running program,
27252 either because the program was just started or the thread group
27253 was attached to a program. The @var{id} field contains the
27254 @value{GDBN} identifier of the thread group. The @var{pid} field
27255 contains process identifier, specific to the operating system.
27256
27257 @item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"]
27258 A thread group is no longer associated with a running program,
27259 either because the program has exited, or because it was detached
27260 from. The @var{id} field contains the @value{GDBN} identifier of the
27261 thread group. The @var{code} field is the exit code of the inferior; it exists
27262 only when the inferior exited with some code.
27263
27264 @item =thread-created,id="@var{id}",group-id="@var{gid}"
27265 @itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
27266 A thread either was created, or has exited. The @var{id} field
27267 contains the global @value{GDBN} identifier of the thread. The @var{gid}
27268 field identifies the thread group this thread belongs to.
27269
27270 @item =thread-selected,id="@var{id}"[,frame="@var{frame}"]
27271 Informs that the selected thread or frame were changed. This notification
27272 is not emitted as result of the @code{-thread-select} or
27273 @code{-stack-select-frame} commands, but is emitted whenever an MI command
27274 that is not documented to change the selected thread and frame actually
27275 changes them. In particular, invoking, directly or indirectly
27276 (via user-defined command), the CLI @code{thread} or @code{frame} commands,
27277 will generate this notification. Changing the thread or frame from another
27278 user interface (see @ref{Interpreters}) will also generate this notification.
27279
27280 The @var{frame} field is only present if the newly selected thread is
27281 stopped. See @ref{GDB/MI Frame Information} for the format of its value.
27282
27283 We suggest that in response to this notification, front ends
27284 highlight the selected thread and cause subsequent commands to apply to
27285 that thread.
27286
27287 @item =library-loaded,...
27288 Reports that a new library file was loaded by the program. This
27289 notification has 5 fields---@var{id}, @var{target-name},
27290 @var{host-name}, @var{symbols-loaded} and @var{ranges}. The @var{id} field is an
27291 opaque identifier of the library. For remote debugging case,
27292 @var{target-name} and @var{host-name} fields give the name of the
27293 library file on the target, and on the host respectively. For native
27294 debugging, both those fields have the same value. The
27295 @var{symbols-loaded} field is emitted only for backward compatibility
27296 and should not be relied on to convey any useful information. The
27297 @var{thread-group} field, if present, specifies the id of the thread
27298 group in whose context the library was loaded. If the field is
27299 absent, it means the library was loaded in the context of all present
27300 thread groups. The @var{ranges} field specifies the ranges of addresses belonging
27301 to this library.
27302
27303 @item =library-unloaded,...
27304 Reports that a library was unloaded by the program. This notification
27305 has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
27306 the same meaning as for the @code{=library-loaded} notification.
27307 The @var{thread-group} field, if present, specifies the id of the
27308 thread group in whose context the library was unloaded. If the field is
27309 absent, it means the library was unloaded in the context of all present
27310 thread groups.
27311
27312 @item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum}
27313 @itemx =traceframe-changed,end
27314 Reports that the trace frame was changed and its new number is
27315 @var{tfnum}. The number of the tracepoint associated with this trace
27316 frame is @var{tpnum}.
27317
27318 @item =tsv-created,name=@var{name},initial=@var{initial}
27319 Reports that the new trace state variable @var{name} is created with
27320 initial value @var{initial}.
27321
27322 @item =tsv-deleted,name=@var{name}
27323 @itemx =tsv-deleted
27324 Reports that the trace state variable @var{name} is deleted or all
27325 trace state variables are deleted.
27326
27327 @item =tsv-modified,name=@var{name},initial=@var{initial}[,current=@var{current}]
27328 Reports that the trace state variable @var{name} is modified with
27329 the initial value @var{initial}. The current value @var{current} of
27330 trace state variable is optional and is reported if the current
27331 value of trace state variable is known.
27332
27333 @item =breakpoint-created,bkpt=@{...@}
27334 @itemx =breakpoint-modified,bkpt=@{...@}
27335 @itemx =breakpoint-deleted,id=@var{number}
27336 Reports that a breakpoint was created, modified, or deleted,
27337 respectively. Only user-visible breakpoints are reported to the MI
27338 user.
27339
27340 The @var{bkpt} argument is of the same form as returned by the various
27341 breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The
27342 @var{number} is the ordinal number of the breakpoint.
27343
27344 Note that if a breakpoint is emitted in the result record of a
27345 command, then it will not also be emitted in an async record.
27346
27347 @item =record-started,thread-group="@var{id}",method="@var{method}"[,format="@var{format}"]
27348 @itemx =record-stopped,thread-group="@var{id}"
27349 Execution log recording was either started or stopped on an
27350 inferior. The @var{id} is the @value{GDBN} identifier of the thread
27351 group corresponding to the affected inferior.
27352
27353 The @var{method} field indicates the method used to record execution. If the
27354 method in use supports multiple recording formats, @var{format} will be present
27355 and contain the currently used format. @xref{Process Record and Replay},
27356 for existing method and format values.
27357
27358 @item =cmd-param-changed,param=@var{param},value=@var{value}
27359 Reports that a parameter of the command @code{set @var{param}} is
27360 changed to @var{value}. In the multi-word @code{set} command,
27361 the @var{param} is the whole parameter list to @code{set} command.
27362 For example, In command @code{set check type on}, @var{param}
27363 is @code{check type} and @var{value} is @code{on}.
27364
27365 @item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"]
27366 Reports that bytes from @var{addr} to @var{data} + @var{len} were
27367 written in an inferior. The @var{id} is the identifier of the
27368 thread group corresponding to the affected inferior. The optional
27369 @code{type="code"} part is reported if the memory written to holds
27370 executable code.
27371 @end table
27372
27373 @node GDB/MI Breakpoint Information
27374 @subsection @sc{gdb/mi} Breakpoint Information
27375
27376 When @value{GDBN} reports information about a breakpoint, a
27377 tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the
27378 following fields:
27379
27380 @table @code
27381 @item number
27382 The breakpoint number. For a breakpoint that represents one location
27383 of a multi-location breakpoint, this will be a dotted pair, like
27384 @samp{1.2}.
27385
27386 @item type
27387 The type of the breakpoint. For ordinary breakpoints this will be
27388 @samp{breakpoint}, but many values are possible.
27389
27390 @item catch-type
27391 If the type of the breakpoint is @samp{catchpoint}, then this
27392 indicates the exact type of catchpoint.
27393
27394 @item disp
27395 This is the breakpoint disposition---either @samp{del}, meaning that
27396 the breakpoint will be deleted at the next stop, or @samp{keep},
27397 meaning that the breakpoint will not be deleted.
27398
27399 @item enabled
27400 This indicates whether the breakpoint is enabled, in which case the
27401 value is @samp{y}, or disabled, in which case the value is @samp{n}.
27402 Note that this is not the same as the field @code{enable}.
27403
27404 @item addr
27405 The address of the breakpoint. This may be a hexidecimal number,
27406 giving the address; or the string @samp{<PENDING>}, for a pending
27407 breakpoint; or the string @samp{<MULTIPLE>}, for a breakpoint with
27408 multiple locations. This field will not be present if no address can
27409 be determined. For example, a watchpoint does not have an address.
27410
27411 @item func
27412 If known, the function in which the breakpoint appears.
27413 If not known, this field is not present.
27414
27415 @item filename
27416 The name of the source file which contains this function, if known.
27417 If not known, this field is not present.
27418
27419 @item fullname
27420 The full file name of the source file which contains this function, if
27421 known. If not known, this field is not present.
27422
27423 @item line
27424 The line number at which this breakpoint appears, if known.
27425 If not known, this field is not present.
27426
27427 @item at
27428 If the source file is not known, this field may be provided. If
27429 provided, this holds the address of the breakpoint, possibly followed
27430 by a symbol name.
27431
27432 @item pending
27433 If this breakpoint is pending, this field is present and holds the
27434 text used to set the breakpoint, as entered by the user.
27435
27436 @item evaluated-by
27437 Where this breakpoint's condition is evaluated, either @samp{host} or
27438 @samp{target}.
27439
27440 @item thread
27441 If this is a thread-specific breakpoint, then this identifies the
27442 thread in which the breakpoint can trigger.
27443
27444 @item task
27445 If this breakpoint is restricted to a particular Ada task, then this
27446 field will hold the task identifier.
27447
27448 @item cond
27449 If the breakpoint is conditional, this is the condition expression.
27450
27451 @item ignore
27452 The ignore count of the breakpoint.
27453
27454 @item enable
27455 The enable count of the breakpoint.
27456
27457 @item traceframe-usage
27458 FIXME.
27459
27460 @item static-tracepoint-marker-string-id
27461 For a static tracepoint, the name of the static tracepoint marker.
27462
27463 @item mask
27464 For a masked watchpoint, this is the mask.
27465
27466 @item pass
27467 A tracepoint's pass count.
27468
27469 @item original-location
27470 The location of the breakpoint as originally specified by the user.
27471 This field is optional.
27472
27473 @item times
27474 The number of times the breakpoint has been hit.
27475
27476 @item installed
27477 This field is only given for tracepoints. This is either @samp{y},
27478 meaning that the tracepoint is installed, or @samp{n}, meaning that it
27479 is not.
27480
27481 @item what
27482 Some extra data, the exact contents of which are type-dependent.
27483
27484 @end table
27485
27486 For example, here is what the output of @code{-break-insert}
27487 (@pxref{GDB/MI Breakpoint Commands}) might be:
27488
27489 @smallexample
27490 -> -break-insert main
27491 <- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27492 enabled="y",addr="0x08048564",func="main",file="myprog.c",
27493 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"],
27494 times="0"@}
27495 <- (gdb)
27496 @end smallexample
27497
27498 @node GDB/MI Frame Information
27499 @subsection @sc{gdb/mi} Frame Information
27500
27501 Response from many MI commands includes an information about stack
27502 frame. This information is a tuple that may have the following
27503 fields:
27504
27505 @table @code
27506 @item level
27507 The level of the stack frame. The innermost frame has the level of
27508 zero. This field is always present.
27509
27510 @item func
27511 The name of the function corresponding to the frame. This field may
27512 be absent if @value{GDBN} is unable to determine the function name.
27513
27514 @item addr
27515 The code address for the frame. This field is always present.
27516
27517 @item file
27518 The name of the source files that correspond to the frame's code
27519 address. This field may be absent.
27520
27521 @item line
27522 The source line corresponding to the frames' code address. This field
27523 may be absent.
27524
27525 @item from
27526 The name of the binary file (either executable or shared library) the
27527 corresponds to the frame's code address. This field may be absent.
27528
27529 @end table
27530
27531 @node GDB/MI Thread Information
27532 @subsection @sc{gdb/mi} Thread Information
27533
27534 Whenever @value{GDBN} has to report an information about a thread, it
27535 uses a tuple with the following fields. The fields are always present unless
27536 stated otherwise.
27537
27538 @table @code
27539 @item id
27540 The global numeric id assigned to the thread by @value{GDBN}.
27541
27542 @item target-id
27543 The target-specific string identifying the thread.
27544
27545 @item details
27546 Additional information about the thread provided by the target.
27547 It is supposed to be human-readable and not interpreted by the
27548 frontend. This field is optional.
27549
27550 @item name
27551 The name of the thread. If the user specified a name using the
27552 @code{thread name} command, then this name is given. Otherwise, if
27553 @value{GDBN} can extract the thread name from the target, then that
27554 name is given. If @value{GDBN} cannot find the thread name, then this
27555 field is omitted.
27556
27557 @item state
27558 The execution state of the thread, either @samp{stopped} or @samp{running},
27559 depending on whether the thread is presently running.
27560
27561 @item frame
27562 The stack frame currently executing in the thread. This field is only present
27563 if the thread is stopped. Its format is documented in
27564 @ref{GDB/MI Frame Information}.
27565
27566 @item core
27567 The value of this field is an integer number of the processor core the
27568 thread was last seen on. This field is optional.
27569 @end table
27570
27571 @node GDB/MI Ada Exception Information
27572 @subsection @sc{gdb/mi} Ada Exception Information
27573
27574 Whenever a @code{*stopped} record is emitted because the program
27575 stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}),
27576 @value{GDBN} provides the name of the exception that was raised via
27577 the @code{exception-name} field. Also, for exceptions that were raised
27578 with an exception message, @value{GDBN} provides that message via
27579 the @code{exception-message} field.
27580
27581 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27582 @node GDB/MI Simple Examples
27583 @section Simple Examples of @sc{gdb/mi} Interaction
27584 @cindex @sc{gdb/mi}, simple examples
27585
27586 This subsection presents several simple examples of interaction using
27587 the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
27588 following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
27589 the output received from @sc{gdb/mi}.
27590
27591 Note the line breaks shown in the examples are here only for
27592 readability, they don't appear in the real output.
27593
27594 @subheading Setting a Breakpoint
27595
27596 Setting a breakpoint generates synchronous output which contains detailed
27597 information of the breakpoint.
27598
27599 @smallexample
27600 -> -break-insert main
27601 <- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27602 enabled="y",addr="0x08048564",func="main",file="myprog.c",
27603 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"],
27604 times="0"@}
27605 <- (gdb)
27606 @end smallexample
27607
27608 @subheading Program Execution
27609
27610 Program execution generates asynchronous records and MI gives the
27611 reason that execution stopped.
27612
27613 @smallexample
27614 -> -exec-run
27615 <- ^running
27616 <- (gdb)
27617 <- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
27618 frame=@{addr="0x08048564",func="main",
27619 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
27620 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
27621 <- (gdb)
27622 -> -exec-continue
27623 <- ^running
27624 <- (gdb)
27625 <- *stopped,reason="exited-normally"
27626 <- (gdb)
27627 @end smallexample
27628
27629 @subheading Quitting @value{GDBN}
27630
27631 Quitting @value{GDBN} just prints the result class @samp{^exit}.
27632
27633 @smallexample
27634 -> (gdb)
27635 <- -gdb-exit
27636 <- ^exit
27637 @end smallexample
27638
27639 Please note that @samp{^exit} is printed immediately, but it might
27640 take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
27641 performs necessary cleanups, including killing programs being debugged
27642 or disconnecting from debug hardware, so the frontend should wait till
27643 @value{GDBN} exits and should only forcibly kill @value{GDBN} if it
27644 fails to exit in reasonable time.
27645
27646 @subheading A Bad Command
27647
27648 Here's what happens if you pass a non-existent command:
27649
27650 @smallexample
27651 -> -rubbish
27652 <- ^error,msg="Undefined MI command: rubbish"
27653 <- (gdb)
27654 @end smallexample
27655
27656
27657 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27658 @node GDB/MI Command Description Format
27659 @section @sc{gdb/mi} Command Description Format
27660
27661 The remaining sections describe blocks of commands. Each block of
27662 commands is laid out in a fashion similar to this section.
27663
27664 @subheading Motivation
27665
27666 The motivation for this collection of commands.
27667
27668 @subheading Introduction
27669
27670 A brief introduction to this collection of commands as a whole.
27671
27672 @subheading Commands
27673
27674 For each command in the block, the following is described:
27675
27676 @subsubheading Synopsis
27677
27678 @smallexample
27679 -command @var{args}@dots{}
27680 @end smallexample
27681
27682 @subsubheading Result
27683
27684 @subsubheading @value{GDBN} Command
27685
27686 The corresponding @value{GDBN} CLI command(s), if any.
27687
27688 @subsubheading Example
27689
27690 Example(s) formatted for readability. Some of the described commands have
27691 not been implemented yet and these are labeled N.A.@: (not available).
27692
27693
27694 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27695 @node GDB/MI Breakpoint Commands
27696 @section @sc{gdb/mi} Breakpoint Commands
27697
27698 @cindex breakpoint commands for @sc{gdb/mi}
27699 @cindex @sc{gdb/mi}, breakpoint commands
27700 This section documents @sc{gdb/mi} commands for manipulating
27701 breakpoints.
27702
27703 @subheading The @code{-break-after} Command
27704 @findex -break-after
27705
27706 @subsubheading Synopsis
27707
27708 @smallexample
27709 -break-after @var{number} @var{count}
27710 @end smallexample
27711
27712 The breakpoint number @var{number} is not in effect until it has been
27713 hit @var{count} times. To see how this is reflected in the output of
27714 the @samp{-break-list} command, see the description of the
27715 @samp{-break-list} command below.
27716
27717 @subsubheading @value{GDBN} Command
27718
27719 The corresponding @value{GDBN} command is @samp{ignore}.
27720
27721 @subsubheading Example
27722
27723 @smallexample
27724 (gdb)
27725 -break-insert main
27726 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27727 enabled="y",addr="0x000100d0",func="main",file="hello.c",
27728 fullname="/home/foo/hello.c",line="5",thread-groups=["i1"],
27729 times="0"@}
27730 (gdb)
27731 -break-after 1 3
27732 ~
27733 ^done
27734 (gdb)
27735 -break-list
27736 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27737 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27738 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27739 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27740 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27741 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27742 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27743 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27744 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27745 line="5",thread-groups=["i1"],times="0",ignore="3"@}]@}
27746 (gdb)
27747 @end smallexample
27748
27749 @ignore
27750 @subheading The @code{-break-catch} Command
27751 @findex -break-catch
27752 @end ignore
27753
27754 @subheading The @code{-break-commands} Command
27755 @findex -break-commands
27756
27757 @subsubheading Synopsis
27758
27759 @smallexample
27760 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
27761 @end smallexample
27762
27763 Specifies the CLI commands that should be executed when breakpoint
27764 @var{number} is hit. The parameters @var{command1} to @var{commandN}
27765 are the commands. If no command is specified, any previously-set
27766 commands are cleared. @xref{Break Commands}. Typical use of this
27767 functionality is tracing a program, that is, printing of values of
27768 some variables whenever breakpoint is hit and then continuing.
27769
27770 @subsubheading @value{GDBN} Command
27771
27772 The corresponding @value{GDBN} command is @samp{commands}.
27773
27774 @subsubheading Example
27775
27776 @smallexample
27777 (gdb)
27778 -break-insert main
27779 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27780 enabled="y",addr="0x000100d0",func="main",file="hello.c",
27781 fullname="/home/foo/hello.c",line="5",thread-groups=["i1"],
27782 times="0"@}
27783 (gdb)
27784 -break-commands 1 "print v" "continue"
27785 ^done
27786 (gdb)
27787 @end smallexample
27788
27789 @subheading The @code{-break-condition} Command
27790 @findex -break-condition
27791
27792 @subsubheading Synopsis
27793
27794 @smallexample
27795 -break-condition @var{number} @var{expr}
27796 @end smallexample
27797
27798 Breakpoint @var{number} will stop the program only if the condition in
27799 @var{expr} is true. The condition becomes part of the
27800 @samp{-break-list} output (see the description of the @samp{-break-list}
27801 command below).
27802
27803 @subsubheading @value{GDBN} Command
27804
27805 The corresponding @value{GDBN} command is @samp{condition}.
27806
27807 @subsubheading Example
27808
27809 @smallexample
27810 (gdb)
27811 -break-condition 1 1
27812 ^done
27813 (gdb)
27814 -break-list
27815 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27816 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27817 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27818 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27819 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27820 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27821 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27822 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27823 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27824 line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@}
27825 (gdb)
27826 @end smallexample
27827
27828 @subheading The @code{-break-delete} Command
27829 @findex -break-delete
27830
27831 @subsubheading Synopsis
27832
27833 @smallexample
27834 -break-delete ( @var{breakpoint} )+
27835 @end smallexample
27836
27837 Delete the breakpoint(s) whose number(s) are specified in the argument
27838 list. This is obviously reflected in the breakpoint list.
27839
27840 @subsubheading @value{GDBN} Command
27841
27842 The corresponding @value{GDBN} command is @samp{delete}.
27843
27844 @subsubheading Example
27845
27846 @smallexample
27847 (gdb)
27848 -break-delete 1
27849 ^done
27850 (gdb)
27851 -break-list
27852 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
27853 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27854 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27855 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27856 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27857 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27858 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27859 body=[]@}
27860 (gdb)
27861 @end smallexample
27862
27863 @subheading The @code{-break-disable} Command
27864 @findex -break-disable
27865
27866 @subsubheading Synopsis
27867
27868 @smallexample
27869 -break-disable ( @var{breakpoint} )+
27870 @end smallexample
27871
27872 Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
27873 break list is now set to @samp{n} for the named @var{breakpoint}(s).
27874
27875 @subsubheading @value{GDBN} Command
27876
27877 The corresponding @value{GDBN} command is @samp{disable}.
27878
27879 @subsubheading Example
27880
27881 @smallexample
27882 (gdb)
27883 -break-disable 2
27884 ^done
27885 (gdb)
27886 -break-list
27887 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27888 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27889 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27890 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27891 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27892 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27893 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27894 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
27895 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27896 line="5",thread-groups=["i1"],times="0"@}]@}
27897 (gdb)
27898 @end smallexample
27899
27900 @subheading The @code{-break-enable} Command
27901 @findex -break-enable
27902
27903 @subsubheading Synopsis
27904
27905 @smallexample
27906 -break-enable ( @var{breakpoint} )+
27907 @end smallexample
27908
27909 Enable (previously disabled) @var{breakpoint}(s).
27910
27911 @subsubheading @value{GDBN} Command
27912
27913 The corresponding @value{GDBN} command is @samp{enable}.
27914
27915 @subsubheading Example
27916
27917 @smallexample
27918 (gdb)
27919 -break-enable 2
27920 ^done
27921 (gdb)
27922 -break-list
27923 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27924 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27925 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27926 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27927 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27928 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27929 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27930 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
27931 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27932 line="5",thread-groups=["i1"],times="0"@}]@}
27933 (gdb)
27934 @end smallexample
27935
27936 @subheading The @code{-break-info} Command
27937 @findex -break-info
27938
27939 @subsubheading Synopsis
27940
27941 @smallexample
27942 -break-info @var{breakpoint}
27943 @end smallexample
27944
27945 @c REDUNDANT???
27946 Get information about a single breakpoint.
27947
27948 The result is a table of breakpoints. @xref{GDB/MI Breakpoint
27949 Information}, for details on the format of each breakpoint in the
27950 table.
27951
27952 @subsubheading @value{GDBN} Command
27953
27954 The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
27955
27956 @subsubheading Example
27957 N.A.
27958
27959 @subheading The @code{-break-insert} Command
27960 @findex -break-insert
27961 @anchor{-break-insert}
27962
27963 @subsubheading Synopsis
27964
27965 @smallexample
27966 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
27967 [ -c @var{condition} ] [ -i @var{ignore-count} ]
27968 [ -p @var{thread-id} ] [ @var{location} ]
27969 @end smallexample
27970
27971 @noindent
27972 If specified, @var{location}, can be one of:
27973
27974 @table @var
27975 @item linespec location
27976 A linespec location. @xref{Linespec Locations}.
27977
27978 @item explicit location
27979 An explicit location. @sc{gdb/mi} explicit locations are
27980 analogous to the CLI's explicit locations using the option names
27981 listed below. @xref{Explicit Locations}.
27982
27983 @table @samp
27984 @item --source @var{filename}
27985 The source file name of the location. This option requires the use
27986 of either @samp{--function} or @samp{--line}.
27987
27988 @item --function @var{function}
27989 The name of a function or method.
27990
27991 @item --label @var{label}
27992 The name of a label.
27993
27994 @item --line @var{lineoffset}
27995 An absolute or relative line offset from the start of the location.
27996 @end table
27997
27998 @item address location
27999 An address location, *@var{address}. @xref{Address Locations}.
28000 @end table
28001
28002 @noindent
28003 The possible optional parameters of this command are:
28004
28005 @table @samp
28006 @item -t
28007 Insert a temporary breakpoint.
28008 @item -h
28009 Insert a hardware breakpoint.
28010 @item -f
28011 If @var{location} cannot be parsed (for example if it
28012 refers to unknown files or functions), create a pending
28013 breakpoint. Without this flag, @value{GDBN} will report
28014 an error, and won't create a breakpoint, if @var{location}
28015 cannot be parsed.
28016 @item -d
28017 Create a disabled breakpoint.
28018 @item -a
28019 Create a tracepoint. @xref{Tracepoints}. When this parameter
28020 is used together with @samp{-h}, a fast tracepoint is created.
28021 @item -c @var{condition}
28022 Make the breakpoint conditional on @var{condition}.
28023 @item -i @var{ignore-count}
28024 Initialize the @var{ignore-count}.
28025 @item -p @var{thread-id}
28026 Restrict the breakpoint to the thread with the specified global
28027 @var{thread-id}.
28028 @end table
28029
28030 @subsubheading Result
28031
28032 @xref{GDB/MI Breakpoint Information}, for details on the format of the
28033 resulting breakpoint.
28034
28035 Note: this format is open to change.
28036 @c An out-of-band breakpoint instead of part of the result?
28037
28038 @subsubheading @value{GDBN} Command
28039
28040 The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
28041 @samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}.
28042
28043 @subsubheading Example
28044
28045 @smallexample
28046 (gdb)
28047 -break-insert main
28048 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
28049 fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"],
28050 times="0"@}
28051 (gdb)
28052 -break-insert -t foo
28053 ^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
28054 fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"],
28055 times="0"@}
28056 (gdb)
28057 -break-list
28058 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28059 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28060 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28061 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28062 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28063 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28064 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28065 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28066 addr="0x0001072c", func="main",file="recursive2.c",
28067 fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"],
28068 times="0"@},
28069 bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
28070 addr="0x00010774",func="foo",file="recursive2.c",
28071 fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"],
28072 times="0"@}]@}
28073 (gdb)
28074 @c -break-insert -r foo.*
28075 @c ~int foo(int, int);
28076 @c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
28077 @c "fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"],
28078 @c times="0"@}
28079 @c (gdb)
28080 @end smallexample
28081
28082 @subheading The @code{-dprintf-insert} Command
28083 @findex -dprintf-insert
28084
28085 @subsubheading Synopsis
28086
28087 @smallexample
28088 -dprintf-insert [ -t ] [ -f ] [ -d ]
28089 [ -c @var{condition} ] [ -i @var{ignore-count} ]
28090 [ -p @var{thread-id} ] [ @var{location} ] [ @var{format} ]
28091 [ @var{argument} ]
28092 @end smallexample
28093
28094 @noindent
28095 If supplied, @var{location} may be specified the same way as for
28096 the @code{-break-insert} command. @xref{-break-insert}.
28097
28098 The possible optional parameters of this command are:
28099
28100 @table @samp
28101 @item -t
28102 Insert a temporary breakpoint.
28103 @item -f
28104 If @var{location} cannot be parsed (for example, if it
28105 refers to unknown files or functions), create a pending
28106 breakpoint. Without this flag, @value{GDBN} will report
28107 an error, and won't create a breakpoint, if @var{location}
28108 cannot be parsed.
28109 @item -d
28110 Create a disabled breakpoint.
28111 @item -c @var{condition}
28112 Make the breakpoint conditional on @var{condition}.
28113 @item -i @var{ignore-count}
28114 Set the ignore count of the breakpoint (@pxref{Conditions, ignore count})
28115 to @var{ignore-count}.
28116 @item -p @var{thread-id}
28117 Restrict the breakpoint to the thread with the specified global
28118 @var{thread-id}.
28119 @end table
28120
28121 @subsubheading Result
28122
28123 @xref{GDB/MI Breakpoint Information}, for details on the format of the
28124 resulting breakpoint.
28125
28126 @c An out-of-band breakpoint instead of part of the result?
28127
28128 @subsubheading @value{GDBN} Command
28129
28130 The corresponding @value{GDBN} command is @samp{dprintf}.
28131
28132 @subsubheading Example
28133
28134 @smallexample
28135 (gdb)
28136 4-dprintf-insert foo "At foo entry\n"
28137 4^done,bkpt=@{number="1",type="dprintf",disp="keep",enabled="y",
28138 addr="0x000000000040061b",func="foo",file="mi-dprintf.c",
28139 fullname="mi-dprintf.c",line="25",thread-groups=["i1"],
28140 times="0",script=@{"printf \"At foo entry\\n\"","continue"@},
28141 original-location="foo"@}
28142 (gdb)
28143 5-dprintf-insert 26 "arg=%d, g=%d\n" arg g
28144 5^done,bkpt=@{number="2",type="dprintf",disp="keep",enabled="y",
28145 addr="0x000000000040062a",func="foo",file="mi-dprintf.c",
28146 fullname="mi-dprintf.c",line="26",thread-groups=["i1"],
28147 times="0",script=@{"printf \"arg=%d, g=%d\\n\", arg, g","continue"@},
28148 original-location="mi-dprintf.c:26"@}
28149 (gdb)
28150 @end smallexample
28151
28152 @subheading The @code{-break-list} Command
28153 @findex -break-list
28154
28155 @subsubheading Synopsis
28156
28157 @smallexample
28158 -break-list
28159 @end smallexample
28160
28161 Displays the list of inserted breakpoints, showing the following fields:
28162
28163 @table @samp
28164 @item Number
28165 number of the breakpoint
28166 @item Type
28167 type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
28168 @item Disposition
28169 should the breakpoint be deleted or disabled when it is hit: @samp{keep}
28170 or @samp{nokeep}
28171 @item Enabled
28172 is the breakpoint enabled or no: @samp{y} or @samp{n}
28173 @item Address
28174 memory location at which the breakpoint is set
28175 @item What
28176 logical location of the breakpoint, expressed by function name, file
28177 name, line number
28178 @item Thread-groups
28179 list of thread groups to which this breakpoint applies
28180 @item Times
28181 number of times the breakpoint has been hit
28182 @end table
28183
28184 If there are no breakpoints or watchpoints, the @code{BreakpointTable}
28185 @code{body} field is an empty list.
28186
28187 @subsubheading @value{GDBN} Command
28188
28189 The corresponding @value{GDBN} command is @samp{info break}.
28190
28191 @subsubheading Example
28192
28193 @smallexample
28194 (gdb)
28195 -break-list
28196 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28197 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28198 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28199 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28200 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28201 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28202 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28203 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28204 addr="0x000100d0",func="main",file="hello.c",line="5",thread-groups=["i1"],
28205 times="0"@},
28206 bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
28207 addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
28208 line="13",thread-groups=["i1"],times="0"@}]@}
28209 (gdb)
28210 @end smallexample
28211
28212 Here's an example of the result when there are no breakpoints:
28213
28214 @smallexample
28215 (gdb)
28216 -break-list
28217 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28218 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28219 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28220 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28221 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28222 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28223 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28224 body=[]@}
28225 (gdb)
28226 @end smallexample
28227
28228 @subheading The @code{-break-passcount} Command
28229 @findex -break-passcount
28230
28231 @subsubheading Synopsis
28232
28233 @smallexample
28234 -break-passcount @var{tracepoint-number} @var{passcount}
28235 @end smallexample
28236
28237 Set the passcount for tracepoint @var{tracepoint-number} to
28238 @var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
28239 is not a tracepoint, error is emitted. This corresponds to CLI
28240 command @samp{passcount}.
28241
28242 @subheading The @code{-break-watch} Command
28243 @findex -break-watch
28244
28245 @subsubheading Synopsis
28246
28247 @smallexample
28248 -break-watch [ -a | -r ]
28249 @end smallexample
28250
28251 Create a watchpoint. With the @samp{-a} option it will create an
28252 @dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
28253 read from or on a write to the memory location. With the @samp{-r}
28254 option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
28255 trigger only when the memory location is accessed for reading. Without
28256 either of the options, the watchpoint created is a regular watchpoint,
28257 i.e., it will trigger when the memory location is accessed for writing.
28258 @xref{Set Watchpoints, , Setting Watchpoints}.
28259
28260 Note that @samp{-break-list} will report a single list of watchpoints and
28261 breakpoints inserted.
28262
28263 @subsubheading @value{GDBN} Command
28264
28265 The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
28266 @samp{rwatch}.
28267
28268 @subsubheading Example
28269
28270 Setting a watchpoint on a variable in the @code{main} function:
28271
28272 @smallexample
28273 (gdb)
28274 -break-watch x
28275 ^done,wpt=@{number="2",exp="x"@}
28276 (gdb)
28277 -exec-continue
28278 ^running
28279 (gdb)
28280 *stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
28281 value=@{old="-268439212",new="55"@},
28282 frame=@{func="main",args=[],file="recursive2.c",
28283 fullname="/home/foo/bar/recursive2.c",line="5"@}
28284 (gdb)
28285 @end smallexample
28286
28287 Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
28288 the program execution twice: first for the variable changing value, then
28289 for the watchpoint going out of scope.
28290
28291 @smallexample
28292 (gdb)
28293 -break-watch C
28294 ^done,wpt=@{number="5",exp="C"@}
28295 (gdb)
28296 -exec-continue
28297 ^running
28298 (gdb)
28299 *stopped,reason="watchpoint-trigger",
28300 wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
28301 frame=@{func="callee4",args=[],
28302 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28303 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
28304 (gdb)
28305 -exec-continue
28306 ^running
28307 (gdb)
28308 *stopped,reason="watchpoint-scope",wpnum="5",
28309 frame=@{func="callee3",args=[@{name="strarg",
28310 value="0x11940 \"A string argument.\""@}],
28311 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28312 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
28313 (gdb)
28314 @end smallexample
28315
28316 Listing breakpoints and watchpoints, at different points in the program
28317 execution. Note that once the watchpoint goes out of scope, it is
28318 deleted.
28319
28320 @smallexample
28321 (gdb)
28322 -break-watch C
28323 ^done,wpt=@{number="2",exp="C"@}
28324 (gdb)
28325 -break-list
28326 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28327 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28328 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28329 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28330 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28331 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28332 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28333 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28334 addr="0x00010734",func="callee4",
28335 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28336 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",thread-groups=["i1"],
28337 times="1"@},
28338 bkpt=@{number="2",type="watchpoint",disp="keep",
28339 enabled="y",addr="",what="C",thread-groups=["i1"],times="0"@}]@}
28340 (gdb)
28341 -exec-continue
28342 ^running
28343 (gdb)
28344 *stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
28345 value=@{old="-276895068",new="3"@},
28346 frame=@{func="callee4",args=[],
28347 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28348 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
28349 (gdb)
28350 -break-list
28351 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28352 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28353 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28354 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28355 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28356 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28357 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28358 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28359 addr="0x00010734",func="callee4",
28360 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28361 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",thread-groups=["i1"],
28362 times="1"@},
28363 bkpt=@{number="2",type="watchpoint",disp="keep",
28364 enabled="y",addr="",what="C",thread-groups=["i1"],times="-5"@}]@}
28365 (gdb)
28366 -exec-continue
28367 ^running
28368 ^done,reason="watchpoint-scope",wpnum="2",
28369 frame=@{func="callee3",args=[@{name="strarg",
28370 value="0x11940 \"A string argument.\""@}],
28371 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28372 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
28373 (gdb)
28374 -break-list
28375 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28376 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28377 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28378 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28379 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28380 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28381 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
28382 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28383 addr="0x00010734",func="callee4",
28384 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28385 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
28386 thread-groups=["i1"],times="1"@}]@}
28387 (gdb)
28388 @end smallexample
28389
28390
28391 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28392 @node GDB/MI Catchpoint Commands
28393 @section @sc{gdb/mi} Catchpoint Commands
28394
28395 This section documents @sc{gdb/mi} commands for manipulating
28396 catchpoints.
28397
28398 @menu
28399 * Shared Library GDB/MI Catchpoint Commands::
28400 * Ada Exception GDB/MI Catchpoint Commands::
28401 @end menu
28402
28403 @node Shared Library GDB/MI Catchpoint Commands
28404 @subsection Shared Library @sc{gdb/mi} Catchpoints
28405
28406 @subheading The @code{-catch-load} Command
28407 @findex -catch-load
28408
28409 @subsubheading Synopsis
28410
28411 @smallexample
28412 -catch-load [ -t ] [ -d ] @var{regexp}
28413 @end smallexample
28414
28415 Add a catchpoint for library load events. If the @samp{-t} option is used,
28416 the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting
28417 Breakpoints}). If the @samp{-d} option is used, the catchpoint is created
28418 in a disabled state. The @samp{regexp} argument is a regular
28419 expression used to match the name of the loaded library.
28420
28421
28422 @subsubheading @value{GDBN} Command
28423
28424 The corresponding @value{GDBN} command is @samp{catch load}.
28425
28426 @subsubheading Example
28427
28428 @smallexample
28429 -catch-load -t foo.so
28430 ^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y",
28431 what="load of library matching foo.so",catch-type="load",times="0"@}
28432 (gdb)
28433 @end smallexample
28434
28435
28436 @subheading The @code{-catch-unload} Command
28437 @findex -catch-unload
28438
28439 @subsubheading Synopsis
28440
28441 @smallexample
28442 -catch-unload [ -t ] [ -d ] @var{regexp}
28443 @end smallexample
28444
28445 Add a catchpoint for library unload events. If the @samp{-t} option is
28446 used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting
28447 Breakpoints}). If the @samp{-d} option is used, the catchpoint is
28448 created in a disabled state. The @samp{regexp} argument is a regular
28449 expression used to match the name of the unloaded library.
28450
28451 @subsubheading @value{GDBN} Command
28452
28453 The corresponding @value{GDBN} command is @samp{catch unload}.
28454
28455 @subsubheading Example
28456
28457 @smallexample
28458 -catch-unload -d bar.so
28459 ^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n",
28460 what="load of library matching bar.so",catch-type="unload",times="0"@}
28461 (gdb)
28462 @end smallexample
28463
28464 @node Ada Exception GDB/MI Catchpoint Commands
28465 @subsection Ada Exception @sc{gdb/mi} Catchpoints
28466
28467 The following @sc{gdb/mi} commands can be used to create catchpoints
28468 that stop the execution when Ada exceptions are being raised.
28469
28470 @subheading The @code{-catch-assert} Command
28471 @findex -catch-assert
28472
28473 @subsubheading Synopsis
28474
28475 @smallexample
28476 -catch-assert [ -c @var{condition}] [ -d ] [ -t ]
28477 @end smallexample
28478
28479 Add a catchpoint for failed Ada assertions.
28480
28481 The possible optional parameters for this command are:
28482
28483 @table @samp
28484 @item -c @var{condition}
28485 Make the catchpoint conditional on @var{condition}.
28486 @item -d
28487 Create a disabled catchpoint.
28488 @item -t
28489 Create a temporary catchpoint.
28490 @end table
28491
28492 @subsubheading @value{GDBN} Command
28493
28494 The corresponding @value{GDBN} command is @samp{catch assert}.
28495
28496 @subsubheading Example
28497
28498 @smallexample
28499 -catch-assert
28500 ^done,bkptno="5",bkpt=@{number="5",type="breakpoint",disp="keep",
28501 enabled="y",addr="0x0000000000404888",what="failed Ada assertions",
28502 thread-groups=["i1"],times="0",
28503 original-location="__gnat_debug_raise_assert_failure"@}
28504 (gdb)
28505 @end smallexample
28506
28507 @subheading The @code{-catch-exception} Command
28508 @findex -catch-exception
28509
28510 @subsubheading Synopsis
28511
28512 @smallexample
28513 -catch-exception [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ]
28514 [ -t ] [ -u ]
28515 @end smallexample
28516
28517 Add a catchpoint stopping when Ada exceptions are raised.
28518 By default, the command stops the program when any Ada exception
28519 gets raised. But it is also possible, by using some of the
28520 optional parameters described below, to create more selective
28521 catchpoints.
28522
28523 The possible optional parameters for this command are:
28524
28525 @table @samp
28526 @item -c @var{condition}
28527 Make the catchpoint conditional on @var{condition}.
28528 @item -d
28529 Create a disabled catchpoint.
28530 @item -e @var{exception-name}
28531 Only stop when @var{exception-name} is raised. This option cannot
28532 be used combined with @samp{-u}.
28533 @item -t
28534 Create a temporary catchpoint.
28535 @item -u
28536 Stop only when an unhandled exception gets raised. This option
28537 cannot be used combined with @samp{-e}.
28538 @end table
28539
28540 @subsubheading @value{GDBN} Command
28541
28542 The corresponding @value{GDBN} commands are @samp{catch exception}
28543 and @samp{catch exception unhandled}.
28544
28545 @subsubheading Example
28546
28547 @smallexample
28548 -catch-exception -e Program_Error
28549 ^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep",
28550 enabled="y",addr="0x0000000000404874",
28551 what="`Program_Error' Ada exception", thread-groups=["i1"],
28552 times="0",original-location="__gnat_debug_raise_exception"@}
28553 (gdb)
28554 @end smallexample
28555
28556 @subheading The @code{-catch-handlers} Command
28557 @findex -catch-handlers
28558
28559 @subsubheading Synopsis
28560
28561 @smallexample
28562 -catch-handlers [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ]
28563 [ -t ]
28564 @end smallexample
28565
28566 Add a catchpoint stopping when Ada exceptions are handled.
28567 By default, the command stops the program when any Ada exception
28568 gets handled. But it is also possible, by using some of the
28569 optional parameters described below, to create more selective
28570 catchpoints.
28571
28572 The possible optional parameters for this command are:
28573
28574 @table @samp
28575 @item -c @var{condition}
28576 Make the catchpoint conditional on @var{condition}.
28577 @item -d
28578 Create a disabled catchpoint.
28579 @item -e @var{exception-name}
28580 Only stop when @var{exception-name} is handled.
28581 @item -t
28582 Create a temporary catchpoint.
28583 @end table
28584
28585 @subsubheading @value{GDBN} Command
28586
28587 The corresponding @value{GDBN} command is @samp{catch handlers}.
28588
28589 @subsubheading Example
28590
28591 @smallexample
28592 -catch-handlers -e Constraint_Error
28593 ^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep",
28594 enabled="y",addr="0x0000000000402f68",
28595 what="`Constraint_Error' Ada exception handlers",thread-groups=["i1"],
28596 times="0",original-location="__gnat_begin_handler"@}
28597 (gdb)
28598 @end smallexample
28599
28600 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28601 @node GDB/MI Program Context
28602 @section @sc{gdb/mi} Program Context
28603
28604 @subheading The @code{-exec-arguments} Command
28605 @findex -exec-arguments
28606
28607
28608 @subsubheading Synopsis
28609
28610 @smallexample
28611 -exec-arguments @var{args}
28612 @end smallexample
28613
28614 Set the inferior program arguments, to be used in the next
28615 @samp{-exec-run}.
28616
28617 @subsubheading @value{GDBN} Command
28618
28619 The corresponding @value{GDBN} command is @samp{set args}.
28620
28621 @subsubheading Example
28622
28623 @smallexample
28624 (gdb)
28625 -exec-arguments -v word
28626 ^done
28627 (gdb)
28628 @end smallexample
28629
28630
28631 @ignore
28632 @subheading The @code{-exec-show-arguments} Command
28633 @findex -exec-show-arguments
28634
28635 @subsubheading Synopsis
28636
28637 @smallexample
28638 -exec-show-arguments
28639 @end smallexample
28640
28641 Print the arguments of the program.
28642
28643 @subsubheading @value{GDBN} Command
28644
28645 The corresponding @value{GDBN} command is @samp{show args}.
28646
28647 @subsubheading Example
28648 N.A.
28649 @end ignore
28650
28651
28652 @subheading The @code{-environment-cd} Command
28653 @findex -environment-cd
28654
28655 @subsubheading Synopsis
28656
28657 @smallexample
28658 -environment-cd @var{pathdir}
28659 @end smallexample
28660
28661 Set @value{GDBN}'s working directory.
28662
28663 @subsubheading @value{GDBN} Command
28664
28665 The corresponding @value{GDBN} command is @samp{cd}.
28666
28667 @subsubheading Example
28668
28669 @smallexample
28670 (gdb)
28671 -environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28672 ^done
28673 (gdb)
28674 @end smallexample
28675
28676
28677 @subheading The @code{-environment-directory} Command
28678 @findex -environment-directory
28679
28680 @subsubheading Synopsis
28681
28682 @smallexample
28683 -environment-directory [ -r ] [ @var{pathdir} ]+
28684 @end smallexample
28685
28686 Add directories @var{pathdir} to beginning of search path for source files.
28687 If the @samp{-r} option is used, the search path is reset to the default
28688 search path. If directories @var{pathdir} are supplied in addition to the
28689 @samp{-r} option, the search path is first reset and then addition
28690 occurs as normal.
28691 Multiple directories may be specified, separated by blanks. Specifying
28692 multiple directories in a single command
28693 results in the directories added to the beginning of the
28694 search path in the same order they were presented in the command.
28695 If blanks are needed as
28696 part of a directory name, double-quotes should be used around
28697 the name. In the command output, the path will show up separated
28698 by the system directory-separator character. The directory-separator
28699 character must not be used
28700 in any directory name.
28701 If no directories are specified, the current search path is displayed.
28702
28703 @subsubheading @value{GDBN} Command
28704
28705 The corresponding @value{GDBN} command is @samp{dir}.
28706
28707 @subsubheading Example
28708
28709 @smallexample
28710 (gdb)
28711 -environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28712 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
28713 (gdb)
28714 -environment-directory ""
28715 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
28716 (gdb)
28717 -environment-directory -r /home/jjohnstn/src/gdb /usr/src
28718 ^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
28719 (gdb)
28720 -environment-directory -r
28721 ^done,source-path="$cdir:$cwd"
28722 (gdb)
28723 @end smallexample
28724
28725
28726 @subheading The @code{-environment-path} Command
28727 @findex -environment-path
28728
28729 @subsubheading Synopsis
28730
28731 @smallexample
28732 -environment-path [ -r ] [ @var{pathdir} ]+
28733 @end smallexample
28734
28735 Add directories @var{pathdir} to beginning of search path for object files.
28736 If the @samp{-r} option is used, the search path is reset to the original
28737 search path that existed at gdb start-up. If directories @var{pathdir} are
28738 supplied in addition to the
28739 @samp{-r} option, the search path is first reset and then addition
28740 occurs as normal.
28741 Multiple directories may be specified, separated by blanks. Specifying
28742 multiple directories in a single command
28743 results in the directories added to the beginning of the
28744 search path in the same order they were presented in the command.
28745 If blanks are needed as
28746 part of a directory name, double-quotes should be used around
28747 the name. In the command output, the path will show up separated
28748 by the system directory-separator character. The directory-separator
28749 character must not be used
28750 in any directory name.
28751 If no directories are specified, the current path is displayed.
28752
28753
28754 @subsubheading @value{GDBN} Command
28755
28756 The corresponding @value{GDBN} command is @samp{path}.
28757
28758 @subsubheading Example
28759
28760 @smallexample
28761 (gdb)
28762 -environment-path
28763 ^done,path="/usr/bin"
28764 (gdb)
28765 -environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
28766 ^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
28767 (gdb)
28768 -environment-path -r /usr/local/bin
28769 ^done,path="/usr/local/bin:/usr/bin"
28770 (gdb)
28771 @end smallexample
28772
28773
28774 @subheading The @code{-environment-pwd} Command
28775 @findex -environment-pwd
28776
28777 @subsubheading Synopsis
28778
28779 @smallexample
28780 -environment-pwd
28781 @end smallexample
28782
28783 Show the current working directory.
28784
28785 @subsubheading @value{GDBN} Command
28786
28787 The corresponding @value{GDBN} command is @samp{pwd}.
28788
28789 @subsubheading Example
28790
28791 @smallexample
28792 (gdb)
28793 -environment-pwd
28794 ^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
28795 (gdb)
28796 @end smallexample
28797
28798 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28799 @node GDB/MI Thread Commands
28800 @section @sc{gdb/mi} Thread Commands
28801
28802
28803 @subheading The @code{-thread-info} Command
28804 @findex -thread-info
28805
28806 @subsubheading Synopsis
28807
28808 @smallexample
28809 -thread-info [ @var{thread-id} ]
28810 @end smallexample
28811
28812 Reports information about either a specific thread, if the
28813 @var{thread-id} parameter is present, or about all threads.
28814 @var{thread-id} is the thread's global thread ID. When printing
28815 information about all threads, also reports the global ID of the
28816 current thread.
28817
28818 @subsubheading @value{GDBN} Command
28819
28820 The @samp{info thread} command prints the same information
28821 about all threads.
28822
28823 @subsubheading Result
28824
28825 The result contains the following attributes:
28826
28827 @table @samp
28828 @item threads
28829 A list of threads. The format of the elements of the list is described in
28830 @ref{GDB/MI Thread Information}.
28831
28832 @item current-thread-id
28833 The global id of the currently selected thread. This field is omitted if there
28834 is no selected thread (for example, when the selected inferior is not running,
28835 and therefore has no threads) or if a @var{thread-id} argument was passed to
28836 the command.
28837
28838 @end table
28839
28840 @subsubheading Example
28841
28842 @smallexample
28843 -thread-info
28844 ^done,threads=[
28845 @{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
28846 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",
28847 args=[]@},state="running"@},
28848 @{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
28849 frame=@{level="0",addr="0x0804891f",func="foo",
28850 args=[@{name="i",value="10"@}],
28851 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},
28852 state="running"@}],
28853 current-thread-id="1"
28854 (gdb)
28855 @end smallexample
28856
28857 @subheading The @code{-thread-list-ids} Command
28858 @findex -thread-list-ids
28859
28860 @subsubheading Synopsis
28861
28862 @smallexample
28863 -thread-list-ids
28864 @end smallexample
28865
28866 Produces a list of the currently known global @value{GDBN} thread ids.
28867 At the end of the list it also prints the total number of such
28868 threads.
28869
28870 This command is retained for historical reasons, the
28871 @code{-thread-info} command should be used instead.
28872
28873 @subsubheading @value{GDBN} Command
28874
28875 Part of @samp{info threads} supplies the same information.
28876
28877 @subsubheading Example
28878
28879 @smallexample
28880 (gdb)
28881 -thread-list-ids
28882 ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
28883 current-thread-id="1",number-of-threads="3"
28884 (gdb)
28885 @end smallexample
28886
28887
28888 @subheading The @code{-thread-select} Command
28889 @findex -thread-select
28890
28891 @subsubheading Synopsis
28892
28893 @smallexample
28894 -thread-select @var{thread-id}
28895 @end smallexample
28896
28897 Make thread with global thread number @var{thread-id} the current
28898 thread. It prints the number of the new current thread, and the
28899 topmost frame for that thread.
28900
28901 This command is deprecated in favor of explicitly using the
28902 @samp{--thread} option to each command.
28903
28904 @subsubheading @value{GDBN} Command
28905
28906 The corresponding @value{GDBN} command is @samp{thread}.
28907
28908 @subsubheading Example
28909
28910 @smallexample
28911 (gdb)
28912 -exec-next
28913 ^running
28914 (gdb)
28915 *stopped,reason="end-stepping-range",thread-id="2",line="187",
28916 file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
28917 (gdb)
28918 -thread-list-ids
28919 ^done,
28920 thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
28921 number-of-threads="3"
28922 (gdb)
28923 -thread-select 3
28924 ^done,new-thread-id="3",
28925 frame=@{level="0",func="vprintf",
28926 args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
28927 @{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
28928 (gdb)
28929 @end smallexample
28930
28931 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28932 @node GDB/MI Ada Tasking Commands
28933 @section @sc{gdb/mi} Ada Tasking Commands
28934
28935 @subheading The @code{-ada-task-info} Command
28936 @findex -ada-task-info
28937
28938 @subsubheading Synopsis
28939
28940 @smallexample
28941 -ada-task-info [ @var{task-id} ]
28942 @end smallexample
28943
28944 Reports information about either a specific Ada task, if the
28945 @var{task-id} parameter is present, or about all Ada tasks.
28946
28947 @subsubheading @value{GDBN} Command
28948
28949 The @samp{info tasks} command prints the same information
28950 about all Ada tasks (@pxref{Ada Tasks}).
28951
28952 @subsubheading Result
28953
28954 The result is a table of Ada tasks. The following columns are
28955 defined for each Ada task:
28956
28957 @table @samp
28958 @item current
28959 This field exists only for the current thread. It has the value @samp{*}.
28960
28961 @item id
28962 The identifier that @value{GDBN} uses to refer to the Ada task.
28963
28964 @item task-id
28965 The identifier that the target uses to refer to the Ada task.
28966
28967 @item thread-id
28968 The global thread identifier of the thread corresponding to the Ada
28969 task.
28970
28971 This field should always exist, as Ada tasks are always implemented
28972 on top of a thread. But if @value{GDBN} cannot find this corresponding
28973 thread for any reason, the field is omitted.
28974
28975 @item parent-id
28976 This field exists only when the task was created by another task.
28977 In this case, it provides the ID of the parent task.
28978
28979 @item priority
28980 The base priority of the task.
28981
28982 @item state
28983 The current state of the task. For a detailed description of the
28984 possible states, see @ref{Ada Tasks}.
28985
28986 @item name
28987 The name of the task.
28988
28989 @end table
28990
28991 @subsubheading Example
28992
28993 @smallexample
28994 -ada-task-info
28995 ^done,tasks=@{nr_rows="3",nr_cols="8",
28996 hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@},
28997 @{width="3",alignment="1",col_name="id",colhdr="ID"@},
28998 @{width="9",alignment="1",col_name="task-id",colhdr="TID"@},
28999 @{width="4",alignment="1",col_name="thread-id",colhdr=""@},
29000 @{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@},
29001 @{width="3",alignment="1",col_name="priority",colhdr="Pri"@},
29002 @{width="22",alignment="-1",col_name="state",colhdr="State"@},
29003 @{width="1",alignment="2",col_name="name",colhdr="Name"@}],
29004 body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48",
29005 state="Child Termination Wait",name="main_task"@}]@}
29006 (gdb)
29007 @end smallexample
29008
29009 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29010 @node GDB/MI Program Execution
29011 @section @sc{gdb/mi} Program Execution
29012
29013 These are the asynchronous commands which generate the out-of-band
29014 record @samp{*stopped}. Currently @value{GDBN} only really executes
29015 asynchronously with remote targets and this interaction is mimicked in
29016 other cases.
29017
29018 @subheading The @code{-exec-continue} Command
29019 @findex -exec-continue
29020
29021 @subsubheading Synopsis
29022
29023 @smallexample
29024 -exec-continue [--reverse] [--all|--thread-group N]
29025 @end smallexample
29026
29027 Resumes the execution of the inferior program, which will continue
29028 to execute until it reaches a debugger stop event. If the
29029 @samp{--reverse} option is specified, execution resumes in reverse until
29030 it reaches a stop event. Stop events may include
29031 @itemize @bullet
29032 @item
29033 breakpoints or watchpoints
29034 @item
29035 signals or exceptions
29036 @item
29037 the end of the process (or its beginning under @samp{--reverse})
29038 @item
29039 the end or beginning of a replay log if one is being used.
29040 @end itemize
29041 In all-stop mode (@pxref{All-Stop
29042 Mode}), may resume only one thread, or all threads, depending on the
29043 value of the @samp{scheduler-locking} variable. If @samp{--all} is
29044 specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
29045 ignored in all-stop mode. If the @samp{--thread-group} options is
29046 specified, then all threads in that thread group are resumed.
29047
29048 @subsubheading @value{GDBN} Command
29049
29050 The corresponding @value{GDBN} corresponding is @samp{continue}.
29051
29052 @subsubheading Example
29053
29054 @smallexample
29055 -exec-continue
29056 ^running
29057 (gdb)
29058 @@Hello world
29059 *stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
29060 func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
29061 line="13"@}
29062 (gdb)
29063 @end smallexample
29064
29065
29066 @subheading The @code{-exec-finish} Command
29067 @findex -exec-finish
29068
29069 @subsubheading Synopsis
29070
29071 @smallexample
29072 -exec-finish [--reverse]
29073 @end smallexample
29074
29075 Resumes the execution of the inferior program until the current
29076 function is exited. Displays the results returned by the function.
29077 If the @samp{--reverse} option is specified, resumes the reverse
29078 execution of the inferior program until the point where current
29079 function was called.
29080
29081 @subsubheading @value{GDBN} Command
29082
29083 The corresponding @value{GDBN} command is @samp{finish}.
29084
29085 @subsubheading Example
29086
29087 Function returning @code{void}.
29088
29089 @smallexample
29090 -exec-finish
29091 ^running
29092 (gdb)
29093 @@hello from foo
29094 *stopped,reason="function-finished",frame=@{func="main",args=[],
29095 file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
29096 (gdb)
29097 @end smallexample
29098
29099 Function returning other than @code{void}. The name of the internal
29100 @value{GDBN} variable storing the result is printed, together with the
29101 value itself.
29102
29103 @smallexample
29104 -exec-finish
29105 ^running
29106 (gdb)
29107 *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
29108 args=[@{name="a",value="1"],@{name="b",value="9"@}@},
29109 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29110 gdb-result-var="$1",return-value="0"
29111 (gdb)
29112 @end smallexample
29113
29114
29115 @subheading The @code{-exec-interrupt} Command
29116 @findex -exec-interrupt
29117
29118 @subsubheading Synopsis
29119
29120 @smallexample
29121 -exec-interrupt [--all|--thread-group N]
29122 @end smallexample
29123
29124 Interrupts the background execution of the target. Note how the token
29125 associated with the stop message is the one for the execution command
29126 that has been interrupted. The token for the interrupt itself only
29127 appears in the @samp{^done} output. If the user is trying to
29128 interrupt a non-running program, an error message will be printed.
29129
29130 Note that when asynchronous execution is enabled, this command is
29131 asynchronous just like other execution commands. That is, first the
29132 @samp{^done} response will be printed, and the target stop will be
29133 reported after that using the @samp{*stopped} notification.
29134
29135 In non-stop mode, only the context thread is interrupted by default.
29136 All threads (in all inferiors) will be interrupted if the
29137 @samp{--all} option is specified. If the @samp{--thread-group}
29138 option is specified, all threads in that group will be interrupted.
29139
29140 @subsubheading @value{GDBN} Command
29141
29142 The corresponding @value{GDBN} command is @samp{interrupt}.
29143
29144 @subsubheading Example
29145
29146 @smallexample
29147 (gdb)
29148 111-exec-continue
29149 111^running
29150
29151 (gdb)
29152 222-exec-interrupt
29153 222^done
29154 (gdb)
29155 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
29156 frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
29157 fullname="/home/foo/bar/try.c",line="13"@}
29158 (gdb)
29159
29160 (gdb)
29161 -exec-interrupt
29162 ^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
29163 (gdb)
29164 @end smallexample
29165
29166 @subheading The @code{-exec-jump} Command
29167 @findex -exec-jump
29168
29169 @subsubheading Synopsis
29170
29171 @smallexample
29172 -exec-jump @var{location}
29173 @end smallexample
29174
29175 Resumes execution of the inferior program at the location specified by
29176 parameter. @xref{Specify Location}, for a description of the
29177 different forms of @var{location}.
29178
29179 @subsubheading @value{GDBN} Command
29180
29181 The corresponding @value{GDBN} command is @samp{jump}.
29182
29183 @subsubheading Example
29184
29185 @smallexample
29186 -exec-jump foo.c:10
29187 *running,thread-id="all"
29188 ^running
29189 @end smallexample
29190
29191
29192 @subheading The @code{-exec-next} Command
29193 @findex -exec-next
29194
29195 @subsubheading Synopsis
29196
29197 @smallexample
29198 -exec-next [--reverse]
29199 @end smallexample
29200
29201 Resumes execution of the inferior program, stopping when the beginning
29202 of the next source line is reached.
29203
29204 If the @samp{--reverse} option is specified, resumes reverse execution
29205 of the inferior program, stopping at the beginning of the previous
29206 source line. If you issue this command on the first line of a
29207 function, it will take you back to the caller of that function, to the
29208 source line where the function was called.
29209
29210
29211 @subsubheading @value{GDBN} Command
29212
29213 The corresponding @value{GDBN} command is @samp{next}.
29214
29215 @subsubheading Example
29216
29217 @smallexample
29218 -exec-next
29219 ^running
29220 (gdb)
29221 *stopped,reason="end-stepping-range",line="8",file="hello.c"
29222 (gdb)
29223 @end smallexample
29224
29225
29226 @subheading The @code{-exec-next-instruction} Command
29227 @findex -exec-next-instruction
29228
29229 @subsubheading Synopsis
29230
29231 @smallexample
29232 -exec-next-instruction [--reverse]
29233 @end smallexample
29234
29235 Executes one machine instruction. If the instruction is a function
29236 call, continues until the function returns. If the program stops at an
29237 instruction in the middle of a source line, the address will be
29238 printed as well.
29239
29240 If the @samp{--reverse} option is specified, resumes reverse execution
29241 of the inferior program, stopping at the previous instruction. If the
29242 previously executed instruction was a return from another function,
29243 it will continue to execute in reverse until the call to that function
29244 (from the current stack frame) is reached.
29245
29246 @subsubheading @value{GDBN} Command
29247
29248 The corresponding @value{GDBN} command is @samp{nexti}.
29249
29250 @subsubheading Example
29251
29252 @smallexample
29253 (gdb)
29254 -exec-next-instruction
29255 ^running
29256
29257 (gdb)
29258 *stopped,reason="end-stepping-range",
29259 addr="0x000100d4",line="5",file="hello.c"
29260 (gdb)
29261 @end smallexample
29262
29263
29264 @subheading The @code{-exec-return} Command
29265 @findex -exec-return
29266
29267 @subsubheading Synopsis
29268
29269 @smallexample
29270 -exec-return
29271 @end smallexample
29272
29273 Makes current function return immediately. Doesn't execute the inferior.
29274 Displays the new current frame.
29275
29276 @subsubheading @value{GDBN} Command
29277
29278 The corresponding @value{GDBN} command is @samp{return}.
29279
29280 @subsubheading Example
29281
29282 @smallexample
29283 (gdb)
29284 200-break-insert callee4
29285 200^done,bkpt=@{number="1",addr="0x00010734",
29286 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
29287 (gdb)
29288 000-exec-run
29289 000^running
29290 (gdb)
29291 000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
29292 frame=@{func="callee4",args=[],
29293 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29294 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
29295 (gdb)
29296 205-break-delete
29297 205^done
29298 (gdb)
29299 111-exec-return
29300 111^done,frame=@{level="0",func="callee3",
29301 args=[@{name="strarg",
29302 value="0x11940 \"A string argument.\""@}],
29303 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29304 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
29305 (gdb)
29306 @end smallexample
29307
29308
29309 @subheading The @code{-exec-run} Command
29310 @findex -exec-run
29311
29312 @subsubheading Synopsis
29313
29314 @smallexample
29315 -exec-run [ --all | --thread-group N ] [ --start ]
29316 @end smallexample
29317
29318 Starts execution of the inferior from the beginning. The inferior
29319 executes until either a breakpoint is encountered or the program
29320 exits. In the latter case the output will include an exit code, if
29321 the program has exited exceptionally.
29322
29323 When neither the @samp{--all} nor the @samp{--thread-group} option
29324 is specified, the current inferior is started. If the
29325 @samp{--thread-group} option is specified, it should refer to a thread
29326 group of type @samp{process}, and that thread group will be started.
29327 If the @samp{--all} option is specified, then all inferiors will be started.
29328
29329 Using the @samp{--start} option instructs the debugger to stop
29330 the execution at the start of the inferior's main subprogram,
29331 following the same behavior as the @code{start} command
29332 (@pxref{Starting}).
29333
29334 @subsubheading @value{GDBN} Command
29335
29336 The corresponding @value{GDBN} command is @samp{run}.
29337
29338 @subsubheading Examples
29339
29340 @smallexample
29341 (gdb)
29342 -break-insert main
29343 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
29344 (gdb)
29345 -exec-run
29346 ^running
29347 (gdb)
29348 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
29349 frame=@{func="main",args=[],file="recursive2.c",
29350 fullname="/home/foo/bar/recursive2.c",line="4"@}
29351 (gdb)
29352 @end smallexample
29353
29354 @noindent
29355 Program exited normally:
29356
29357 @smallexample
29358 (gdb)
29359 -exec-run
29360 ^running
29361 (gdb)
29362 x = 55
29363 *stopped,reason="exited-normally"
29364 (gdb)
29365 @end smallexample
29366
29367 @noindent
29368 Program exited exceptionally:
29369
29370 @smallexample
29371 (gdb)
29372 -exec-run
29373 ^running
29374 (gdb)
29375 x = 55
29376 *stopped,reason="exited",exit-code="01"
29377 (gdb)
29378 @end smallexample
29379
29380 Another way the program can terminate is if it receives a signal such as
29381 @code{SIGINT}. In this case, @sc{gdb/mi} displays this:
29382
29383 @smallexample
29384 (gdb)
29385 *stopped,reason="exited-signalled",signal-name="SIGINT",
29386 signal-meaning="Interrupt"
29387 @end smallexample
29388
29389
29390 @c @subheading -exec-signal
29391
29392
29393 @subheading The @code{-exec-step} Command
29394 @findex -exec-step
29395
29396 @subsubheading Synopsis
29397
29398 @smallexample
29399 -exec-step [--reverse]
29400 @end smallexample
29401
29402 Resumes execution of the inferior program, stopping when the beginning
29403 of the next source line is reached, if the next source line is not a
29404 function call. If it is, stop at the first instruction of the called
29405 function. If the @samp{--reverse} option is specified, resumes reverse
29406 execution of the inferior program, stopping at the beginning of the
29407 previously executed source line.
29408
29409 @subsubheading @value{GDBN} Command
29410
29411 The corresponding @value{GDBN} command is @samp{step}.
29412
29413 @subsubheading Example
29414
29415 Stepping into a function:
29416
29417 @smallexample
29418 -exec-step
29419 ^running
29420 (gdb)
29421 *stopped,reason="end-stepping-range",
29422 frame=@{func="foo",args=[@{name="a",value="10"@},
29423 @{name="b",value="0"@}],file="recursive2.c",
29424 fullname="/home/foo/bar/recursive2.c",line="11"@}
29425 (gdb)
29426 @end smallexample
29427
29428 Regular stepping:
29429
29430 @smallexample
29431 -exec-step
29432 ^running
29433 (gdb)
29434 *stopped,reason="end-stepping-range",line="14",file="recursive2.c"
29435 (gdb)
29436 @end smallexample
29437
29438
29439 @subheading The @code{-exec-step-instruction} Command
29440 @findex -exec-step-instruction
29441
29442 @subsubheading Synopsis
29443
29444 @smallexample
29445 -exec-step-instruction [--reverse]
29446 @end smallexample
29447
29448 Resumes the inferior which executes one machine instruction. If the
29449 @samp{--reverse} option is specified, resumes reverse execution of the
29450 inferior program, stopping at the previously executed instruction.
29451 The output, once @value{GDBN} has stopped, will vary depending on
29452 whether we have stopped in the middle of a source line or not. In the
29453 former case, the address at which the program stopped will be printed
29454 as well.
29455
29456 @subsubheading @value{GDBN} Command
29457
29458 The corresponding @value{GDBN} command is @samp{stepi}.
29459
29460 @subsubheading Example
29461
29462 @smallexample
29463 (gdb)
29464 -exec-step-instruction
29465 ^running
29466
29467 (gdb)
29468 *stopped,reason="end-stepping-range",
29469 frame=@{func="foo",args=[],file="try.c",
29470 fullname="/home/foo/bar/try.c",line="10"@}
29471 (gdb)
29472 -exec-step-instruction
29473 ^running
29474
29475 (gdb)
29476 *stopped,reason="end-stepping-range",
29477 frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
29478 fullname="/home/foo/bar/try.c",line="10"@}
29479 (gdb)
29480 @end smallexample
29481
29482
29483 @subheading The @code{-exec-until} Command
29484 @findex -exec-until
29485
29486 @subsubheading Synopsis
29487
29488 @smallexample
29489 -exec-until [ @var{location} ]
29490 @end smallexample
29491
29492 Executes the inferior until the @var{location} specified in the
29493 argument is reached. If there is no argument, the inferior executes
29494 until a source line greater than the current one is reached. The
29495 reason for stopping in this case will be @samp{location-reached}.
29496
29497 @subsubheading @value{GDBN} Command
29498
29499 The corresponding @value{GDBN} command is @samp{until}.
29500
29501 @subsubheading Example
29502
29503 @smallexample
29504 (gdb)
29505 -exec-until recursive2.c:6
29506 ^running
29507 (gdb)
29508 x = 55
29509 *stopped,reason="location-reached",frame=@{func="main",args=[],
29510 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
29511 (gdb)
29512 @end smallexample
29513
29514 @ignore
29515 @subheading -file-clear
29516 Is this going away????
29517 @end ignore
29518
29519 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29520 @node GDB/MI Stack Manipulation
29521 @section @sc{gdb/mi} Stack Manipulation Commands
29522
29523 @subheading The @code{-enable-frame-filters} Command
29524 @findex -enable-frame-filters
29525
29526 @smallexample
29527 -enable-frame-filters
29528 @end smallexample
29529
29530 @value{GDBN} allows Python-based frame filters to affect the output of
29531 the MI commands relating to stack traces. As there is no way to
29532 implement this in a fully backward-compatible way, a front end must
29533 request that this functionality be enabled.
29534
29535 Once enabled, this feature cannot be disabled.
29536
29537 Note that if Python support has not been compiled into @value{GDBN},
29538 this command will still succeed (and do nothing).
29539
29540 @subheading The @code{-stack-info-frame} Command
29541 @findex -stack-info-frame
29542
29543 @subsubheading Synopsis
29544
29545 @smallexample
29546 -stack-info-frame
29547 @end smallexample
29548
29549 Get info on the selected frame.
29550
29551 @subsubheading @value{GDBN} Command
29552
29553 The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
29554 (without arguments).
29555
29556 @subsubheading Example
29557
29558 @smallexample
29559 (gdb)
29560 -stack-info-frame
29561 ^done,frame=@{level="1",addr="0x0001076c",func="callee3",
29562 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29563 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
29564 (gdb)
29565 @end smallexample
29566
29567 @subheading The @code{-stack-info-depth} Command
29568 @findex -stack-info-depth
29569
29570 @subsubheading Synopsis
29571
29572 @smallexample
29573 -stack-info-depth [ @var{max-depth} ]
29574 @end smallexample
29575
29576 Return the depth of the stack. If the integer argument @var{max-depth}
29577 is specified, do not count beyond @var{max-depth} frames.
29578
29579 @subsubheading @value{GDBN} Command
29580
29581 There's no equivalent @value{GDBN} command.
29582
29583 @subsubheading Example
29584
29585 For a stack with frame levels 0 through 11:
29586
29587 @smallexample
29588 (gdb)
29589 -stack-info-depth
29590 ^done,depth="12"
29591 (gdb)
29592 -stack-info-depth 4
29593 ^done,depth="4"
29594 (gdb)
29595 -stack-info-depth 12
29596 ^done,depth="12"
29597 (gdb)
29598 -stack-info-depth 11
29599 ^done,depth="11"
29600 (gdb)
29601 -stack-info-depth 13
29602 ^done,depth="12"
29603 (gdb)
29604 @end smallexample
29605
29606 @anchor{-stack-list-arguments}
29607 @subheading The @code{-stack-list-arguments} Command
29608 @findex -stack-list-arguments
29609
29610 @subsubheading Synopsis
29611
29612 @smallexample
29613 -stack-list-arguments [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values}
29614 [ @var{low-frame} @var{high-frame} ]
29615 @end smallexample
29616
29617 Display a list of the arguments for the frames between @var{low-frame}
29618 and @var{high-frame} (inclusive). If @var{low-frame} and
29619 @var{high-frame} are not provided, list the arguments for the whole
29620 call stack. If the two arguments are equal, show the single frame
29621 at the corresponding level. It is an error if @var{low-frame} is
29622 larger than the actual number of frames. On the other hand,
29623 @var{high-frame} may be larger than the actual number of frames, in
29624 which case only existing frames will be returned.
29625
29626 If @var{print-values} is 0 or @code{--no-values}, print only the names of
29627 the variables; if it is 1 or @code{--all-values}, print also their
29628 values; and if it is 2 or @code{--simple-values}, print the name,
29629 type and value for simple data types, and the name and type for arrays,
29630 structures and unions. If the option @code{--no-frame-filters} is
29631 supplied, then Python frame filters will not be executed.
29632
29633 If the @code{--skip-unavailable} option is specified, arguments that
29634 are not available are not listed. Partially available arguments
29635 are still displayed, however.
29636
29637 Use of this command to obtain arguments in a single frame is
29638 deprecated in favor of the @samp{-stack-list-variables} command.
29639
29640 @subsubheading @value{GDBN} Command
29641
29642 @value{GDBN} does not have an equivalent command. @code{gdbtk} has a
29643 @samp{gdb_get_args} command which partially overlaps with the
29644 functionality of @samp{-stack-list-arguments}.
29645
29646 @subsubheading Example
29647
29648 @smallexample
29649 (gdb)
29650 -stack-list-frames
29651 ^done,
29652 stack=[
29653 frame=@{level="0",addr="0x00010734",func="callee4",
29654 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29655 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
29656 frame=@{level="1",addr="0x0001076c",func="callee3",
29657 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29658 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
29659 frame=@{level="2",addr="0x0001078c",func="callee2",
29660 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29661 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
29662 frame=@{level="3",addr="0x000107b4",func="callee1",
29663 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29664 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
29665 frame=@{level="4",addr="0x000107e0",func="main",
29666 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29667 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
29668 (gdb)
29669 -stack-list-arguments 0
29670 ^done,
29671 stack-args=[
29672 frame=@{level="0",args=[]@},
29673 frame=@{level="1",args=[name="strarg"]@},
29674 frame=@{level="2",args=[name="intarg",name="strarg"]@},
29675 frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
29676 frame=@{level="4",args=[]@}]
29677 (gdb)
29678 -stack-list-arguments 1
29679 ^done,
29680 stack-args=[
29681 frame=@{level="0",args=[]@},
29682 frame=@{level="1",
29683 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29684 frame=@{level="2",args=[
29685 @{name="intarg",value="2"@},
29686 @{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29687 @{frame=@{level="3",args=[
29688 @{name="intarg",value="2"@},
29689 @{name="strarg",value="0x11940 \"A string argument.\""@},
29690 @{name="fltarg",value="3.5"@}]@},
29691 frame=@{level="4",args=[]@}]
29692 (gdb)
29693 -stack-list-arguments 0 2 2
29694 ^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
29695 (gdb)
29696 -stack-list-arguments 1 2 2
29697 ^done,stack-args=[frame=@{level="2",
29698 args=[@{name="intarg",value="2"@},
29699 @{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
29700 (gdb)
29701 @end smallexample
29702
29703 @c @subheading -stack-list-exception-handlers
29704
29705
29706 @anchor{-stack-list-frames}
29707 @subheading The @code{-stack-list-frames} Command
29708 @findex -stack-list-frames
29709
29710 @subsubheading Synopsis
29711
29712 @smallexample
29713 -stack-list-frames [ --no-frame-filters @var{low-frame} @var{high-frame} ]
29714 @end smallexample
29715
29716 List the frames currently on the stack. For each frame it displays the
29717 following info:
29718
29719 @table @samp
29720 @item @var{level}
29721 The frame number, 0 being the topmost frame, i.e., the innermost function.
29722 @item @var{addr}
29723 The @code{$pc} value for that frame.
29724 @item @var{func}
29725 Function name.
29726 @item @var{file}
29727 File name of the source file where the function lives.
29728 @item @var{fullname}
29729 The full file name of the source file where the function lives.
29730 @item @var{line}
29731 Line number corresponding to the @code{$pc}.
29732 @item @var{from}
29733 The shared library where this function is defined. This is only given
29734 if the frame's function is not known.
29735 @end table
29736
29737 If invoked without arguments, this command prints a backtrace for the
29738 whole stack. If given two integer arguments, it shows the frames whose
29739 levels are between the two arguments (inclusive). If the two arguments
29740 are equal, it shows the single frame at the corresponding level. It is
29741 an error if @var{low-frame} is larger than the actual number of
29742 frames. On the other hand, @var{high-frame} may be larger than the
29743 actual number of frames, in which case only existing frames will be
29744 returned. If the option @code{--no-frame-filters} is supplied, then
29745 Python frame filters will not be executed.
29746
29747 @subsubheading @value{GDBN} Command
29748
29749 The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
29750
29751 @subsubheading Example
29752
29753 Full stack backtrace:
29754
29755 @smallexample
29756 (gdb)
29757 -stack-list-frames
29758 ^done,stack=
29759 [frame=@{level="0",addr="0x0001076c",func="foo",
29760 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
29761 frame=@{level="1",addr="0x000107a4",func="foo",
29762 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29763 frame=@{level="2",addr="0x000107a4",func="foo",
29764 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29765 frame=@{level="3",addr="0x000107a4",func="foo",
29766 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29767 frame=@{level="4",addr="0x000107a4",func="foo",
29768 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29769 frame=@{level="5",addr="0x000107a4",func="foo",
29770 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29771 frame=@{level="6",addr="0x000107a4",func="foo",
29772 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29773 frame=@{level="7",addr="0x000107a4",func="foo",
29774 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29775 frame=@{level="8",addr="0x000107a4",func="foo",
29776 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29777 frame=@{level="9",addr="0x000107a4",func="foo",
29778 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29779 frame=@{level="10",addr="0x000107a4",func="foo",
29780 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29781 frame=@{level="11",addr="0x00010738",func="main",
29782 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
29783 (gdb)
29784 @end smallexample
29785
29786 Show frames between @var{low_frame} and @var{high_frame}:
29787
29788 @smallexample
29789 (gdb)
29790 -stack-list-frames 3 5
29791 ^done,stack=
29792 [frame=@{level="3",addr="0x000107a4",func="foo",
29793 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29794 frame=@{level="4",addr="0x000107a4",func="foo",
29795 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29796 frame=@{level="5",addr="0x000107a4",func="foo",
29797 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
29798 (gdb)
29799 @end smallexample
29800
29801 Show a single frame:
29802
29803 @smallexample
29804 (gdb)
29805 -stack-list-frames 3 3
29806 ^done,stack=
29807 [frame=@{level="3",addr="0x000107a4",func="foo",
29808 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
29809 (gdb)
29810 @end smallexample
29811
29812
29813 @subheading The @code{-stack-list-locals} Command
29814 @findex -stack-list-locals
29815 @anchor{-stack-list-locals}
29816
29817 @subsubheading Synopsis
29818
29819 @smallexample
29820 -stack-list-locals [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values}
29821 @end smallexample
29822
29823 Display the local variable names for the selected frame. If
29824 @var{print-values} is 0 or @code{--no-values}, print only the names of
29825 the variables; if it is 1 or @code{--all-values}, print also their
29826 values; and if it is 2 or @code{--simple-values}, print the name,
29827 type and value for simple data types, and the name and type for arrays,
29828 structures and unions. In this last case, a frontend can immediately
29829 display the value of simple data types and create variable objects for
29830 other data types when the user wishes to explore their values in
29831 more detail. If the option @code{--no-frame-filters} is supplied, then
29832 Python frame filters will not be executed.
29833
29834 If the @code{--skip-unavailable} option is specified, local variables
29835 that are not available are not listed. Partially available local
29836 variables are still displayed, however.
29837
29838 This command is deprecated in favor of the
29839 @samp{-stack-list-variables} command.
29840
29841 @subsubheading @value{GDBN} Command
29842
29843 @samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
29844
29845 @subsubheading Example
29846
29847 @smallexample
29848 (gdb)
29849 -stack-list-locals 0
29850 ^done,locals=[name="A",name="B",name="C"]
29851 (gdb)
29852 -stack-list-locals --all-values
29853 ^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
29854 @{name="C",value="@{1, 2, 3@}"@}]
29855 -stack-list-locals --simple-values
29856 ^done,locals=[@{name="A",type="int",value="1"@},
29857 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
29858 (gdb)
29859 @end smallexample
29860
29861 @anchor{-stack-list-variables}
29862 @subheading The @code{-stack-list-variables} Command
29863 @findex -stack-list-variables
29864
29865 @subsubheading Synopsis
29866
29867 @smallexample
29868 -stack-list-variables [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values}
29869 @end smallexample
29870
29871 Display the names of local variables and function arguments for the selected frame. If
29872 @var{print-values} is 0 or @code{--no-values}, print only the names of
29873 the variables; if it is 1 or @code{--all-values}, print also their
29874 values; and if it is 2 or @code{--simple-values}, print the name,
29875 type and value for simple data types, and the name and type for arrays,
29876 structures and unions. If the option @code{--no-frame-filters} is
29877 supplied, then Python frame filters will not be executed.
29878
29879 If the @code{--skip-unavailable} option is specified, local variables
29880 and arguments that are not available are not listed. Partially
29881 available arguments and local variables are still displayed, however.
29882
29883 @subsubheading Example
29884
29885 @smallexample
29886 (gdb)
29887 -stack-list-variables --thread 1 --frame 0 --all-values
29888 ^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
29889 (gdb)
29890 @end smallexample
29891
29892
29893 @subheading The @code{-stack-select-frame} Command
29894 @findex -stack-select-frame
29895
29896 @subsubheading Synopsis
29897
29898 @smallexample
29899 -stack-select-frame @var{framenum}
29900 @end smallexample
29901
29902 Change the selected frame. Select a different frame @var{framenum} on
29903 the stack.
29904
29905 This command in deprecated in favor of passing the @samp{--frame}
29906 option to every command.
29907
29908 @subsubheading @value{GDBN} Command
29909
29910 The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
29911 @samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
29912
29913 @subsubheading Example
29914
29915 @smallexample
29916 (gdb)
29917 -stack-select-frame 2
29918 ^done
29919 (gdb)
29920 @end smallexample
29921
29922 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29923 @node GDB/MI Variable Objects
29924 @section @sc{gdb/mi} Variable Objects
29925
29926 @ignore
29927
29928 @subheading Motivation for Variable Objects in @sc{gdb/mi}
29929
29930 For the implementation of a variable debugger window (locals, watched
29931 expressions, etc.), we are proposing the adaptation of the existing code
29932 used by @code{Insight}.
29933
29934 The two main reasons for that are:
29935
29936 @enumerate 1
29937 @item
29938 It has been proven in practice (it is already on its second generation).
29939
29940 @item
29941 It will shorten development time (needless to say how important it is
29942 now).
29943 @end enumerate
29944
29945 The original interface was designed to be used by Tcl code, so it was
29946 slightly changed so it could be used through @sc{gdb/mi}. This section
29947 describes the @sc{gdb/mi} operations that will be available and gives some
29948 hints about their use.
29949
29950 @emph{Note}: In addition to the set of operations described here, we
29951 expect the @sc{gui} implementation of a variable window to require, at
29952 least, the following operations:
29953
29954 @itemize @bullet
29955 @item @code{-gdb-show} @code{output-radix}
29956 @item @code{-stack-list-arguments}
29957 @item @code{-stack-list-locals}
29958 @item @code{-stack-select-frame}
29959 @end itemize
29960
29961 @end ignore
29962
29963 @subheading Introduction to Variable Objects
29964
29965 @cindex variable objects in @sc{gdb/mi}
29966
29967 Variable objects are "object-oriented" MI interface for examining and
29968 changing values of expressions. Unlike some other MI interfaces that
29969 work with expressions, variable objects are specifically designed for
29970 simple and efficient presentation in the frontend. A variable object
29971 is identified by string name. When a variable object is created, the
29972 frontend specifies the expression for that variable object. The
29973 expression can be a simple variable, or it can be an arbitrary complex
29974 expression, and can even involve CPU registers. After creating a
29975 variable object, the frontend can invoke other variable object
29976 operations---for example to obtain or change the value of a variable
29977 object, or to change display format.
29978
29979 Variable objects have hierarchical tree structure. Any variable object
29980 that corresponds to a composite type, such as structure in C, has
29981 a number of child variable objects, for example corresponding to each
29982 element of a structure. A child variable object can itself have
29983 children, recursively. Recursion ends when we reach
29984 leaf variable objects, which always have built-in types. Child variable
29985 objects are created only by explicit request, so if a frontend
29986 is not interested in the children of a particular variable object, no
29987 child will be created.
29988
29989 For a leaf variable object it is possible to obtain its value as a
29990 string, or set the value from a string. String value can be also
29991 obtained for a non-leaf variable object, but it's generally a string
29992 that only indicates the type of the object, and does not list its
29993 contents. Assignment to a non-leaf variable object is not allowed.
29994
29995 A frontend does not need to read the values of all variable objects each time
29996 the program stops. Instead, MI provides an update command that lists all
29997 variable objects whose values has changed since the last update
29998 operation. This considerably reduces the amount of data that must
29999 be transferred to the frontend. As noted above, children variable
30000 objects are created on demand, and only leaf variable objects have a
30001 real value. As result, gdb will read target memory only for leaf
30002 variables that frontend has created.
30003
30004 The automatic update is not always desirable. For example, a frontend
30005 might want to keep a value of some expression for future reference,
30006 and never update it. For another example, fetching memory is
30007 relatively slow for embedded targets, so a frontend might want
30008 to disable automatic update for the variables that are either not
30009 visible on the screen, or ``closed''. This is possible using so
30010 called ``frozen variable objects''. Such variable objects are never
30011 implicitly updated.
30012
30013 Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
30014 fixed variable object, the expression is parsed when the variable
30015 object is created, including associating identifiers to specific
30016 variables. The meaning of expression never changes. For a floating
30017 variable object the values of variables whose names appear in the
30018 expressions are re-evaluated every time in the context of the current
30019 frame. Consider this example:
30020
30021 @smallexample
30022 void do_work(...)
30023 @{
30024 struct work_state state;
30025
30026 if (...)
30027 do_work(...);
30028 @}
30029 @end smallexample
30030
30031 If a fixed variable object for the @code{state} variable is created in
30032 this function, and we enter the recursive call, the variable
30033 object will report the value of @code{state} in the top-level
30034 @code{do_work} invocation. On the other hand, a floating variable
30035 object will report the value of @code{state} in the current frame.
30036
30037 If an expression specified when creating a fixed variable object
30038 refers to a local variable, the variable object becomes bound to the
30039 thread and frame in which the variable object is created. When such
30040 variable object is updated, @value{GDBN} makes sure that the
30041 thread/frame combination the variable object is bound to still exists,
30042 and re-evaluates the variable object in context of that thread/frame.
30043
30044 The following is the complete set of @sc{gdb/mi} operations defined to
30045 access this functionality:
30046
30047 @multitable @columnfractions .4 .6
30048 @item @strong{Operation}
30049 @tab @strong{Description}
30050
30051 @item @code{-enable-pretty-printing}
30052 @tab enable Python-based pretty-printing
30053 @item @code{-var-create}
30054 @tab create a variable object
30055 @item @code{-var-delete}
30056 @tab delete the variable object and/or its children
30057 @item @code{-var-set-format}
30058 @tab set the display format of this variable
30059 @item @code{-var-show-format}
30060 @tab show the display format of this variable
30061 @item @code{-var-info-num-children}
30062 @tab tells how many children this object has
30063 @item @code{-var-list-children}
30064 @tab return a list of the object's children
30065 @item @code{-var-info-type}
30066 @tab show the type of this variable object
30067 @item @code{-var-info-expression}
30068 @tab print parent-relative expression that this variable object represents
30069 @item @code{-var-info-path-expression}
30070 @tab print full expression that this variable object represents
30071 @item @code{-var-show-attributes}
30072 @tab is this variable editable? does it exist here?
30073 @item @code{-var-evaluate-expression}
30074 @tab get the value of this variable
30075 @item @code{-var-assign}
30076 @tab set the value of this variable
30077 @item @code{-var-update}
30078 @tab update the variable and its children
30079 @item @code{-var-set-frozen}
30080 @tab set frozeness attribute
30081 @item @code{-var-set-update-range}
30082 @tab set range of children to display on update
30083 @end multitable
30084
30085 In the next subsection we describe each operation in detail and suggest
30086 how it can be used.
30087
30088 @subheading Description And Use of Operations on Variable Objects
30089
30090 @subheading The @code{-enable-pretty-printing} Command
30091 @findex -enable-pretty-printing
30092
30093 @smallexample
30094 -enable-pretty-printing
30095 @end smallexample
30096
30097 @value{GDBN} allows Python-based visualizers to affect the output of the
30098 MI variable object commands. However, because there was no way to
30099 implement this in a fully backward-compatible way, a front end must
30100 request that this functionality be enabled.
30101
30102 Once enabled, this feature cannot be disabled.
30103
30104 Note that if Python support has not been compiled into @value{GDBN},
30105 this command will still succeed (and do nothing).
30106
30107 This feature is currently (as of @value{GDBN} 7.0) experimental, and
30108 may work differently in future versions of @value{GDBN}.
30109
30110 @subheading The @code{-var-create} Command
30111 @findex -var-create
30112
30113 @subsubheading Synopsis
30114
30115 @smallexample
30116 -var-create @{@var{name} | "-"@}
30117 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
30118 @end smallexample
30119
30120 This operation creates a variable object, which allows the monitoring of
30121 a variable, the result of an expression, a memory cell or a CPU
30122 register.
30123
30124 The @var{name} parameter is the string by which the object can be
30125 referenced. It must be unique. If @samp{-} is specified, the varobj
30126 system will generate a string ``varNNNNNN'' automatically. It will be
30127 unique provided that one does not specify @var{name} of that format.
30128 The command fails if a duplicate name is found.
30129
30130 The frame under which the expression should be evaluated can be
30131 specified by @var{frame-addr}. A @samp{*} indicates that the current
30132 frame should be used. A @samp{@@} indicates that a floating variable
30133 object must be created.
30134
30135 @var{expression} is any expression valid on the current language set (must not
30136 begin with a @samp{*}), or one of the following:
30137
30138 @itemize @bullet
30139 @item
30140 @samp{*@var{addr}}, where @var{addr} is the address of a memory cell
30141
30142 @item
30143 @samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
30144
30145 @item
30146 @samp{$@var{regname}} --- a CPU register name
30147 @end itemize
30148
30149 @cindex dynamic varobj
30150 A varobj's contents may be provided by a Python-based pretty-printer. In this
30151 case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
30152 have slightly different semantics in some cases. If the
30153 @code{-enable-pretty-printing} command is not sent, then @value{GDBN}
30154 will never create a dynamic varobj. This ensures backward
30155 compatibility for existing clients.
30156
30157 @subsubheading Result
30158
30159 This operation returns attributes of the newly-created varobj. These
30160 are:
30161
30162 @table @samp
30163 @item name
30164 The name of the varobj.
30165
30166 @item numchild
30167 The number of children of the varobj. This number is not necessarily
30168 reliable for a dynamic varobj. Instead, you must examine the
30169 @samp{has_more} attribute.
30170
30171 @item value
30172 The varobj's scalar value. For a varobj whose type is some sort of
30173 aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
30174 will not be interesting.
30175
30176 @item type
30177 The varobj's type. This is a string representation of the type, as
30178 would be printed by the @value{GDBN} CLI. If @samp{print object}
30179 (@pxref{Print Settings, set print object}) is set to @code{on}, the
30180 @emph{actual} (derived) type of the object is shown rather than the
30181 @emph{declared} one.
30182
30183 @item thread-id
30184 If a variable object is bound to a specific thread, then this is the
30185 thread's global identifier.
30186
30187 @item has_more
30188 For a dynamic varobj, this indicates whether there appear to be any
30189 children available. For a non-dynamic varobj, this will be 0.
30190
30191 @item dynamic
30192 This attribute will be present and have the value @samp{1} if the
30193 varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30194 then this attribute will not be present.
30195
30196 @item displayhint
30197 A dynamic varobj can supply a display hint to the front end. The
30198 value comes directly from the Python pretty-printer object's
30199 @code{display_hint} method. @xref{Pretty Printing API}.
30200 @end table
30201
30202 Typical output will look like this:
30203
30204 @smallexample
30205 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
30206 has_more="@var{has_more}"
30207 @end smallexample
30208
30209
30210 @subheading The @code{-var-delete} Command
30211 @findex -var-delete
30212
30213 @subsubheading Synopsis
30214
30215 @smallexample
30216 -var-delete [ -c ] @var{name}
30217 @end smallexample
30218
30219 Deletes a previously created variable object and all of its children.
30220 With the @samp{-c} option, just deletes the children.
30221
30222 Returns an error if the object @var{name} is not found.
30223
30224
30225 @subheading The @code{-var-set-format} Command
30226 @findex -var-set-format
30227
30228 @subsubheading Synopsis
30229
30230 @smallexample
30231 -var-set-format @var{name} @var{format-spec}
30232 @end smallexample
30233
30234 Sets the output format for the value of the object @var{name} to be
30235 @var{format-spec}.
30236
30237 @anchor{-var-set-format}
30238 The syntax for the @var{format-spec} is as follows:
30239
30240 @smallexample
30241 @var{format-spec} @expansion{}
30242 @{binary | decimal | hexadecimal | octal | natural | zero-hexadecimal@}
30243 @end smallexample
30244
30245 The natural format is the default format choosen automatically
30246 based on the variable type (like decimal for an @code{int}, hex
30247 for pointers, etc.).
30248
30249 The zero-hexadecimal format has a representation similar to hexadecimal
30250 but with padding zeroes to the left of the value. For example, a 32-bit
30251 hexadecimal value of 0x1234 would be represented as 0x00001234 in the
30252 zero-hexadecimal format.
30253
30254 For a variable with children, the format is set only on the
30255 variable itself, and the children are not affected.
30256
30257 @subheading The @code{-var-show-format} Command
30258 @findex -var-show-format
30259
30260 @subsubheading Synopsis
30261
30262 @smallexample
30263 -var-show-format @var{name}
30264 @end smallexample
30265
30266 Returns the format used to display the value of the object @var{name}.
30267
30268 @smallexample
30269 @var{format} @expansion{}
30270 @var{format-spec}
30271 @end smallexample
30272
30273
30274 @subheading The @code{-var-info-num-children} Command
30275 @findex -var-info-num-children
30276
30277 @subsubheading Synopsis
30278
30279 @smallexample
30280 -var-info-num-children @var{name}
30281 @end smallexample
30282
30283 Returns the number of children of a variable object @var{name}:
30284
30285 @smallexample
30286 numchild=@var{n}
30287 @end smallexample
30288
30289 Note that this number is not completely reliable for a dynamic varobj.
30290 It will return the current number of children, but more children may
30291 be available.
30292
30293
30294 @subheading The @code{-var-list-children} Command
30295 @findex -var-list-children
30296
30297 @subsubheading Synopsis
30298
30299 @smallexample
30300 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
30301 @end smallexample
30302 @anchor{-var-list-children}
30303
30304 Return a list of the children of the specified variable object and
30305 create variable objects for them, if they do not already exist. With
30306 a single argument or if @var{print-values} has a value of 0 or
30307 @code{--no-values}, print only the names of the variables; if
30308 @var{print-values} is 1 or @code{--all-values}, also print their
30309 values; and if it is 2 or @code{--simple-values} print the name and
30310 value for simple data types and just the name for arrays, structures
30311 and unions.
30312
30313 @var{from} and @var{to}, if specified, indicate the range of children
30314 to report. If @var{from} or @var{to} is less than zero, the range is
30315 reset and all children will be reported. Otherwise, children starting
30316 at @var{from} (zero-based) and up to and excluding @var{to} will be
30317 reported.
30318
30319 If a child range is requested, it will only affect the current call to
30320 @code{-var-list-children}, but not future calls to @code{-var-update}.
30321 For this, you must instead use @code{-var-set-update-range}. The
30322 intent of this approach is to enable a front end to implement any
30323 update approach it likes; for example, scrolling a view may cause the
30324 front end to request more children with @code{-var-list-children}, and
30325 then the front end could call @code{-var-set-update-range} with a
30326 different range to ensure that future updates are restricted to just
30327 the visible items.
30328
30329 For each child the following results are returned:
30330
30331 @table @var
30332
30333 @item name
30334 Name of the variable object created for this child.
30335
30336 @item exp
30337 The expression to be shown to the user by the front end to designate this child.
30338 For example this may be the name of a structure member.
30339
30340 For a dynamic varobj, this value cannot be used to form an
30341 expression. There is no way to do this at all with a dynamic varobj.
30342
30343 For C/C@t{++} structures there are several pseudo children returned to
30344 designate access qualifiers. For these pseudo children @var{exp} is
30345 @samp{public}, @samp{private}, or @samp{protected}. In this case the
30346 type and value are not present.
30347
30348 A dynamic varobj will not report the access qualifying
30349 pseudo-children, regardless of the language. This information is not
30350 available at all with a dynamic varobj.
30351
30352 @item numchild
30353 Number of children this child has. For a dynamic varobj, this will be
30354 0.
30355
30356 @item type
30357 The type of the child. If @samp{print object}
30358 (@pxref{Print Settings, set print object}) is set to @code{on}, the
30359 @emph{actual} (derived) type of the object is shown rather than the
30360 @emph{declared} one.
30361
30362 @item value
30363 If values were requested, this is the value.
30364
30365 @item thread-id
30366 If this variable object is associated with a thread, this is the
30367 thread's global thread id. Otherwise this result is not present.
30368
30369 @item frozen
30370 If the variable object is frozen, this variable will be present with a value of 1.
30371
30372 @item displayhint
30373 A dynamic varobj can supply a display hint to the front end. The
30374 value comes directly from the Python pretty-printer object's
30375 @code{display_hint} method. @xref{Pretty Printing API}.
30376
30377 @item dynamic
30378 This attribute will be present and have the value @samp{1} if the
30379 varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30380 then this attribute will not be present.
30381
30382 @end table
30383
30384 The result may have its own attributes:
30385
30386 @table @samp
30387 @item displayhint
30388 A dynamic varobj can supply a display hint to the front end. The
30389 value comes directly from the Python pretty-printer object's
30390 @code{display_hint} method. @xref{Pretty Printing API}.
30391
30392 @item has_more
30393 This is an integer attribute which is nonzero if there are children
30394 remaining after the end of the selected range.
30395 @end table
30396
30397 @subsubheading Example
30398
30399 @smallexample
30400 (gdb)
30401 -var-list-children n
30402 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
30403 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
30404 (gdb)
30405 -var-list-children --all-values n
30406 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
30407 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
30408 @end smallexample
30409
30410
30411 @subheading The @code{-var-info-type} Command
30412 @findex -var-info-type
30413
30414 @subsubheading Synopsis
30415
30416 @smallexample
30417 -var-info-type @var{name}
30418 @end smallexample
30419
30420 Returns the type of the specified variable @var{name}. The type is
30421 returned as a string in the same format as it is output by the
30422 @value{GDBN} CLI:
30423
30424 @smallexample
30425 type=@var{typename}
30426 @end smallexample
30427
30428
30429 @subheading The @code{-var-info-expression} Command
30430 @findex -var-info-expression
30431
30432 @subsubheading Synopsis
30433
30434 @smallexample
30435 -var-info-expression @var{name}
30436 @end smallexample
30437
30438 Returns a string that is suitable for presenting this
30439 variable object in user interface. The string is generally
30440 not valid expression in the current language, and cannot be evaluated.
30441
30442 For example, if @code{a} is an array, and variable object
30443 @code{A} was created for @code{a}, then we'll get this output:
30444
30445 @smallexample
30446 (gdb) -var-info-expression A.1
30447 ^done,lang="C",exp="1"
30448 @end smallexample
30449
30450 @noindent
30451 Here, the value of @code{lang} is the language name, which can be
30452 found in @ref{Supported Languages}.
30453
30454 Note that the output of the @code{-var-list-children} command also
30455 includes those expressions, so the @code{-var-info-expression} command
30456 is of limited use.
30457
30458 @subheading The @code{-var-info-path-expression} Command
30459 @findex -var-info-path-expression
30460
30461 @subsubheading Synopsis
30462
30463 @smallexample
30464 -var-info-path-expression @var{name}
30465 @end smallexample
30466
30467 Returns an expression that can be evaluated in the current
30468 context and will yield the same value that a variable object has.
30469 Compare this with the @code{-var-info-expression} command, which
30470 result can be used only for UI presentation. Typical use of
30471 the @code{-var-info-path-expression} command is creating a
30472 watchpoint from a variable object.
30473
30474 This command is currently not valid for children of a dynamic varobj,
30475 and will give an error when invoked on one.
30476
30477 For example, suppose @code{C} is a C@t{++} class, derived from class
30478 @code{Base}, and that the @code{Base} class has a member called
30479 @code{m_size}. Assume a variable @code{c} is has the type of
30480 @code{C} and a variable object @code{C} was created for variable
30481 @code{c}. Then, we'll get this output:
30482 @smallexample
30483 (gdb) -var-info-path-expression C.Base.public.m_size
30484 ^done,path_expr=((Base)c).m_size)
30485 @end smallexample
30486
30487 @subheading The @code{-var-show-attributes} Command
30488 @findex -var-show-attributes
30489
30490 @subsubheading Synopsis
30491
30492 @smallexample
30493 -var-show-attributes @var{name}
30494 @end smallexample
30495
30496 List attributes of the specified variable object @var{name}:
30497
30498 @smallexample
30499 status=@var{attr} [ ( ,@var{attr} )* ]
30500 @end smallexample
30501
30502 @noindent
30503 where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
30504
30505 @subheading The @code{-var-evaluate-expression} Command
30506 @findex -var-evaluate-expression
30507
30508 @subsubheading Synopsis
30509
30510 @smallexample
30511 -var-evaluate-expression [-f @var{format-spec}] @var{name}
30512 @end smallexample
30513
30514 Evaluates the expression that is represented by the specified variable
30515 object and returns its value as a string. The format of the string
30516 can be specified with the @samp{-f} option. The possible values of
30517 this option are the same as for @code{-var-set-format}
30518 (@pxref{-var-set-format}). If the @samp{-f} option is not specified,
30519 the current display format will be used. The current display format
30520 can be changed using the @code{-var-set-format} command.
30521
30522 @smallexample
30523 value=@var{value}
30524 @end smallexample
30525
30526 Note that one must invoke @code{-var-list-children} for a variable
30527 before the value of a child variable can be evaluated.
30528
30529 @subheading The @code{-var-assign} Command
30530 @findex -var-assign
30531
30532 @subsubheading Synopsis
30533
30534 @smallexample
30535 -var-assign @var{name} @var{expression}
30536 @end smallexample
30537
30538 Assigns the value of @var{expression} to the variable object specified
30539 by @var{name}. The object must be @samp{editable}. If the variable's
30540 value is altered by the assign, the variable will show up in any
30541 subsequent @code{-var-update} list.
30542
30543 @subsubheading Example
30544
30545 @smallexample
30546 (gdb)
30547 -var-assign var1 3
30548 ^done,value="3"
30549 (gdb)
30550 -var-update *
30551 ^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
30552 (gdb)
30553 @end smallexample
30554
30555 @subheading The @code{-var-update} Command
30556 @findex -var-update
30557
30558 @subsubheading Synopsis
30559
30560 @smallexample
30561 -var-update [@var{print-values}] @{@var{name} | "*"@}
30562 @end smallexample
30563
30564 Reevaluate the expressions corresponding to the variable object
30565 @var{name} and all its direct and indirect children, and return the
30566 list of variable objects whose values have changed; @var{name} must
30567 be a root variable object. Here, ``changed'' means that the result of
30568 @code{-var-evaluate-expression} before and after the
30569 @code{-var-update} is different. If @samp{*} is used as the variable
30570 object names, all existing variable objects are updated, except
30571 for frozen ones (@pxref{-var-set-frozen}). The option
30572 @var{print-values} determines whether both names and values, or just
30573 names are printed. The possible values of this option are the same
30574 as for @code{-var-list-children} (@pxref{-var-list-children}). It is
30575 recommended to use the @samp{--all-values} option, to reduce the
30576 number of MI commands needed on each program stop.
30577
30578 With the @samp{*} parameter, if a variable object is bound to a
30579 currently running thread, it will not be updated, without any
30580 diagnostic.
30581
30582 If @code{-var-set-update-range} was previously used on a varobj, then
30583 only the selected range of children will be reported.
30584
30585 @code{-var-update} reports all the changed varobjs in a tuple named
30586 @samp{changelist}.
30587
30588 Each item in the change list is itself a tuple holding:
30589
30590 @table @samp
30591 @item name
30592 The name of the varobj.
30593
30594 @item value
30595 If values were requested for this update, then this field will be
30596 present and will hold the value of the varobj.
30597
30598 @item in_scope
30599 @anchor{-var-update}
30600 This field is a string which may take one of three values:
30601
30602 @table @code
30603 @item "true"
30604 The variable object's current value is valid.
30605
30606 @item "false"
30607 The variable object does not currently hold a valid value but it may
30608 hold one in the future if its associated expression comes back into
30609 scope.
30610
30611 @item "invalid"
30612 The variable object no longer holds a valid value.
30613 This can occur when the executable file being debugged has changed,
30614 either through recompilation or by using the @value{GDBN} @code{file}
30615 command. The front end should normally choose to delete these variable
30616 objects.
30617 @end table
30618
30619 In the future new values may be added to this list so the front should
30620 be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
30621
30622 @item type_changed
30623 This is only present if the varobj is still valid. If the type
30624 changed, then this will be the string @samp{true}; otherwise it will
30625 be @samp{false}.
30626
30627 When a varobj's type changes, its children are also likely to have
30628 become incorrect. Therefore, the varobj's children are automatically
30629 deleted when this attribute is @samp{true}. Also, the varobj's update
30630 range, when set using the @code{-var-set-update-range} command, is
30631 unset.
30632
30633 @item new_type
30634 If the varobj's type changed, then this field will be present and will
30635 hold the new type.
30636
30637 @item new_num_children
30638 For a dynamic varobj, if the number of children changed, or if the
30639 type changed, this will be the new number of children.
30640
30641 The @samp{numchild} field in other varobj responses is generally not
30642 valid for a dynamic varobj -- it will show the number of children that
30643 @value{GDBN} knows about, but because dynamic varobjs lazily
30644 instantiate their children, this will not reflect the number of
30645 children which may be available.
30646
30647 The @samp{new_num_children} attribute only reports changes to the
30648 number of children known by @value{GDBN}. This is the only way to
30649 detect whether an update has removed children (which necessarily can
30650 only happen at the end of the update range).
30651
30652 @item displayhint
30653 The display hint, if any.
30654
30655 @item has_more
30656 This is an integer value, which will be 1 if there are more children
30657 available outside the varobj's update range.
30658
30659 @item dynamic
30660 This attribute will be present and have the value @samp{1} if the
30661 varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30662 then this attribute will not be present.
30663
30664 @item new_children
30665 If new children were added to a dynamic varobj within the selected
30666 update range (as set by @code{-var-set-update-range}), then they will
30667 be listed in this attribute.
30668 @end table
30669
30670 @subsubheading Example
30671
30672 @smallexample
30673 (gdb)
30674 -var-assign var1 3
30675 ^done,value="3"
30676 (gdb)
30677 -var-update --all-values var1
30678 ^done,changelist=[@{name="var1",value="3",in_scope="true",
30679 type_changed="false"@}]
30680 (gdb)
30681 @end smallexample
30682
30683 @subheading The @code{-var-set-frozen} Command
30684 @findex -var-set-frozen
30685 @anchor{-var-set-frozen}
30686
30687 @subsubheading Synopsis
30688
30689 @smallexample
30690 -var-set-frozen @var{name} @var{flag}
30691 @end smallexample
30692
30693 Set the frozenness flag on the variable object @var{name}. The
30694 @var{flag} parameter should be either @samp{1} to make the variable
30695 frozen or @samp{0} to make it unfrozen. If a variable object is
30696 frozen, then neither itself, nor any of its children, are
30697 implicitly updated by @code{-var-update} of
30698 a parent variable or by @code{-var-update *}. Only
30699 @code{-var-update} of the variable itself will update its value and
30700 values of its children. After a variable object is unfrozen, it is
30701 implicitly updated by all subsequent @code{-var-update} operations.
30702 Unfreezing a variable does not update it, only subsequent
30703 @code{-var-update} does.
30704
30705 @subsubheading Example
30706
30707 @smallexample
30708 (gdb)
30709 -var-set-frozen V 1
30710 ^done
30711 (gdb)
30712 @end smallexample
30713
30714 @subheading The @code{-var-set-update-range} command
30715 @findex -var-set-update-range
30716 @anchor{-var-set-update-range}
30717
30718 @subsubheading Synopsis
30719
30720 @smallexample
30721 -var-set-update-range @var{name} @var{from} @var{to}
30722 @end smallexample
30723
30724 Set the range of children to be returned by future invocations of
30725 @code{-var-update}.
30726
30727 @var{from} and @var{to} indicate the range of children to report. If
30728 @var{from} or @var{to} is less than zero, the range is reset and all
30729 children will be reported. Otherwise, children starting at @var{from}
30730 (zero-based) and up to and excluding @var{to} will be reported.
30731
30732 @subsubheading Example
30733
30734 @smallexample
30735 (gdb)
30736 -var-set-update-range V 1 2
30737 ^done
30738 @end smallexample
30739
30740 @subheading The @code{-var-set-visualizer} command
30741 @findex -var-set-visualizer
30742 @anchor{-var-set-visualizer}
30743
30744 @subsubheading Synopsis
30745
30746 @smallexample
30747 -var-set-visualizer @var{name} @var{visualizer}
30748 @end smallexample
30749
30750 Set a visualizer for the variable object @var{name}.
30751
30752 @var{visualizer} is the visualizer to use. The special value
30753 @samp{None} means to disable any visualizer in use.
30754
30755 If not @samp{None}, @var{visualizer} must be a Python expression.
30756 This expression must evaluate to a callable object which accepts a
30757 single argument. @value{GDBN} will call this object with the value of
30758 the varobj @var{name} as an argument (this is done so that the same
30759 Python pretty-printing code can be used for both the CLI and MI).
30760 When called, this object must return an object which conforms to the
30761 pretty-printing interface (@pxref{Pretty Printing API}).
30762
30763 The pre-defined function @code{gdb.default_visualizer} may be used to
30764 select a visualizer by following the built-in process
30765 (@pxref{Selecting Pretty-Printers}). This is done automatically when
30766 a varobj is created, and so ordinarily is not needed.
30767
30768 This feature is only available if Python support is enabled. The MI
30769 command @code{-list-features} (@pxref{GDB/MI Support Commands})
30770 can be used to check this.
30771
30772 @subsubheading Example
30773
30774 Resetting the visualizer:
30775
30776 @smallexample
30777 (gdb)
30778 -var-set-visualizer V None
30779 ^done
30780 @end smallexample
30781
30782 Reselecting the default (type-based) visualizer:
30783
30784 @smallexample
30785 (gdb)
30786 -var-set-visualizer V gdb.default_visualizer
30787 ^done
30788 @end smallexample
30789
30790 Suppose @code{SomeClass} is a visualizer class. A lambda expression
30791 can be used to instantiate this class for a varobj:
30792
30793 @smallexample
30794 (gdb)
30795 -var-set-visualizer V "lambda val: SomeClass()"
30796 ^done
30797 @end smallexample
30798
30799 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30800 @node GDB/MI Data Manipulation
30801 @section @sc{gdb/mi} Data Manipulation
30802
30803 @cindex data manipulation, in @sc{gdb/mi}
30804 @cindex @sc{gdb/mi}, data manipulation
30805 This section describes the @sc{gdb/mi} commands that manipulate data:
30806 examine memory and registers, evaluate expressions, etc.
30807
30808 For details about what an addressable memory unit is,
30809 @pxref{addressable memory unit}.
30810
30811 @c REMOVED FROM THE INTERFACE.
30812 @c @subheading -data-assign
30813 @c Change the value of a program variable. Plenty of side effects.
30814 @c @subsubheading GDB Command
30815 @c set variable
30816 @c @subsubheading Example
30817 @c N.A.
30818
30819 @subheading The @code{-data-disassemble} Command
30820 @findex -data-disassemble
30821
30822 @subsubheading Synopsis
30823
30824 @smallexample
30825 -data-disassemble
30826 [ -s @var{start-addr} -e @var{end-addr} ]
30827 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
30828 -- @var{mode}
30829 @end smallexample
30830
30831 @noindent
30832 Where:
30833
30834 @table @samp
30835 @item @var{start-addr}
30836 is the beginning address (or @code{$pc})
30837 @item @var{end-addr}
30838 is the end address
30839 @item @var{filename}
30840 is the name of the file to disassemble
30841 @item @var{linenum}
30842 is the line number to disassemble around
30843 @item @var{lines}
30844 is the number of disassembly lines to be produced. If it is -1,
30845 the whole function will be disassembled, in case no @var{end-addr} is
30846 specified. If @var{end-addr} is specified as a non-zero value, and
30847 @var{lines} is lower than the number of disassembly lines between
30848 @var{start-addr} and @var{end-addr}, only @var{lines} lines are
30849 displayed; if @var{lines} is higher than the number of lines between
30850 @var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
30851 are displayed.
30852 @item @var{mode}
30853 is one of:
30854 @itemize @bullet
30855 @item 0 disassembly only
30856 @item 1 mixed source and disassembly (deprecated)
30857 @item 2 disassembly with raw opcodes
30858 @item 3 mixed source and disassembly with raw opcodes (deprecated)
30859 @item 4 mixed source and disassembly
30860 @item 5 mixed source and disassembly with raw opcodes
30861 @end itemize
30862
30863 Modes 1 and 3 are deprecated. The output is ``source centric''
30864 which hasn't proved useful in practice.
30865 @xref{Machine Code}, for a discussion of the difference between
30866 @code{/m} and @code{/s} output of the @code{disassemble} command.
30867 @end table
30868
30869 @subsubheading Result
30870
30871 The result of the @code{-data-disassemble} command will be a list named
30872 @samp{asm_insns}, the contents of this list depend on the @var{mode}
30873 used with the @code{-data-disassemble} command.
30874
30875 For modes 0 and 2 the @samp{asm_insns} list contains tuples with the
30876 following fields:
30877
30878 @table @code
30879 @item address
30880 The address at which this instruction was disassembled.
30881
30882 @item func-name
30883 The name of the function this instruction is within.
30884
30885 @item offset
30886 The decimal offset in bytes from the start of @samp{func-name}.
30887
30888 @item inst
30889 The text disassembly for this @samp{address}.
30890
30891 @item opcodes
30892 This field is only present for modes 2, 3 and 5. This contains the raw opcode
30893 bytes for the @samp{inst} field.
30894
30895 @end table
30896
30897 For modes 1, 3, 4 and 5 the @samp{asm_insns} list contains tuples named
30898 @samp{src_and_asm_line}, each of which has the following fields:
30899
30900 @table @code
30901 @item line
30902 The line number within @samp{file}.
30903
30904 @item file
30905 The file name from the compilation unit. This might be an absolute
30906 file name or a relative file name depending on the compile command
30907 used.
30908
30909 @item fullname
30910 Absolute file name of @samp{file}. It is converted to a canonical form
30911 using the source file search path
30912 (@pxref{Source Path, ,Specifying Source Directories})
30913 and after resolving all the symbolic links.
30914
30915 If the source file is not found this field will contain the path as
30916 present in the debug information.
30917
30918 @item line_asm_insn
30919 This is a list of tuples containing the disassembly for @samp{line} in
30920 @samp{file}. The fields of each tuple are the same as for
30921 @code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address},
30922 @samp{func-name}, @samp{offset}, @samp{inst}, and optionally
30923 @samp{opcodes}.
30924
30925 @end table
30926
30927 Note that whatever included in the @samp{inst} field, is not
30928 manipulated directly by @sc{gdb/mi}, i.e., it is not possible to
30929 adjust its format.
30930
30931 @subsubheading @value{GDBN} Command
30932
30933 The corresponding @value{GDBN} command is @samp{disassemble}.
30934
30935 @subsubheading Example
30936
30937 Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
30938
30939 @smallexample
30940 (gdb)
30941 -data-disassemble -s $pc -e "$pc + 20" -- 0
30942 ^done,
30943 asm_insns=[
30944 @{address="0x000107c0",func-name="main",offset="4",
30945 inst="mov 2, %o0"@},
30946 @{address="0x000107c4",func-name="main",offset="8",
30947 inst="sethi %hi(0x11800), %o2"@},
30948 @{address="0x000107c8",func-name="main",offset="12",
30949 inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
30950 @{address="0x000107cc",func-name="main",offset="16",
30951 inst="sethi %hi(0x11800), %o2"@},
30952 @{address="0x000107d0",func-name="main",offset="20",
30953 inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
30954 (gdb)
30955 @end smallexample
30956
30957 Disassemble the whole @code{main} function. Line 32 is part of
30958 @code{main}.
30959
30960 @smallexample
30961 -data-disassemble -f basics.c -l 32 -- 0
30962 ^done,asm_insns=[
30963 @{address="0x000107bc",func-name="main",offset="0",
30964 inst="save %sp, -112, %sp"@},
30965 @{address="0x000107c0",func-name="main",offset="4",
30966 inst="mov 2, %o0"@},
30967 @{address="0x000107c4",func-name="main",offset="8",
30968 inst="sethi %hi(0x11800), %o2"@},
30969 [@dots{}]
30970 @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
30971 @{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
30972 (gdb)
30973 @end smallexample
30974
30975 Disassemble 3 instructions from the start of @code{main}:
30976
30977 @smallexample
30978 (gdb)
30979 -data-disassemble -f basics.c -l 32 -n 3 -- 0
30980 ^done,asm_insns=[
30981 @{address="0x000107bc",func-name="main",offset="0",
30982 inst="save %sp, -112, %sp"@},
30983 @{address="0x000107c0",func-name="main",offset="4",
30984 inst="mov 2, %o0"@},
30985 @{address="0x000107c4",func-name="main",offset="8",
30986 inst="sethi %hi(0x11800), %o2"@}]
30987 (gdb)
30988 @end smallexample
30989
30990 Disassemble 3 instructions from the start of @code{main} in mixed mode:
30991
30992 @smallexample
30993 (gdb)
30994 -data-disassemble -f basics.c -l 32 -n 3 -- 1
30995 ^done,asm_insns=[
30996 src_and_asm_line=@{line="31",
30997 file="../../../src/gdb/testsuite/gdb.mi/basics.c",
30998 fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
30999 line_asm_insn=[@{address="0x000107bc",
31000 func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@},
31001 src_and_asm_line=@{line="32",
31002 file="../../../src/gdb/testsuite/gdb.mi/basics.c",
31003 fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
31004 line_asm_insn=[@{address="0x000107c0",
31005 func-name="main",offset="4",inst="mov 2, %o0"@},
31006 @{address="0x000107c4",func-name="main",offset="8",
31007 inst="sethi %hi(0x11800), %o2"@}]@}]
31008 (gdb)
31009 @end smallexample
31010
31011
31012 @subheading The @code{-data-evaluate-expression} Command
31013 @findex -data-evaluate-expression
31014
31015 @subsubheading Synopsis
31016
31017 @smallexample
31018 -data-evaluate-expression @var{expr}
31019 @end smallexample
31020
31021 Evaluate @var{expr} as an expression. The expression could contain an
31022 inferior function call. The function call will execute synchronously.
31023 If the expression contains spaces, it must be enclosed in double quotes.
31024
31025 @subsubheading @value{GDBN} Command
31026
31027 The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
31028 @samp{call}. In @code{gdbtk} only, there's a corresponding
31029 @samp{gdb_eval} command.
31030
31031 @subsubheading Example
31032
31033 In the following example, the numbers that precede the commands are the
31034 @dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
31035 Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
31036 output.
31037
31038 @smallexample
31039 211-data-evaluate-expression A
31040 211^done,value="1"
31041 (gdb)
31042 311-data-evaluate-expression &A
31043 311^done,value="0xefffeb7c"
31044 (gdb)
31045 411-data-evaluate-expression A+3
31046 411^done,value="4"
31047 (gdb)
31048 511-data-evaluate-expression "A + 3"
31049 511^done,value="4"
31050 (gdb)
31051 @end smallexample
31052
31053
31054 @subheading The @code{-data-list-changed-registers} Command
31055 @findex -data-list-changed-registers
31056
31057 @subsubheading Synopsis
31058
31059 @smallexample
31060 -data-list-changed-registers
31061 @end smallexample
31062
31063 Display a list of the registers that have changed.
31064
31065 @subsubheading @value{GDBN} Command
31066
31067 @value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
31068 has the corresponding command @samp{gdb_changed_register_list}.
31069
31070 @subsubheading Example
31071
31072 On a PPC MBX board:
31073
31074 @smallexample
31075 (gdb)
31076 -exec-continue
31077 ^running
31078
31079 (gdb)
31080 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
31081 func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
31082 line="5"@}
31083 (gdb)
31084 -data-list-changed-registers
31085 ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
31086 "10","11","13","14","15","16","17","18","19","20","21","22","23",
31087 "24","25","26","27","28","30","31","64","65","66","67","69"]
31088 (gdb)
31089 @end smallexample
31090
31091
31092 @subheading The @code{-data-list-register-names} Command
31093 @findex -data-list-register-names
31094
31095 @subsubheading Synopsis
31096
31097 @smallexample
31098 -data-list-register-names [ ( @var{regno} )+ ]
31099 @end smallexample
31100
31101 Show a list of register names for the current target. If no arguments
31102 are given, it shows a list of the names of all the registers. If
31103 integer numbers are given as arguments, it will print a list of the
31104 names of the registers corresponding to the arguments. To ensure
31105 consistency between a register name and its number, the output list may
31106 include empty register names.
31107
31108 @subsubheading @value{GDBN} Command
31109
31110 @value{GDBN} does not have a command which corresponds to
31111 @samp{-data-list-register-names}. In @code{gdbtk} there is a
31112 corresponding command @samp{gdb_regnames}.
31113
31114 @subsubheading Example
31115
31116 For the PPC MBX board:
31117 @smallexample
31118 (gdb)
31119 -data-list-register-names
31120 ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
31121 "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
31122 "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
31123 "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
31124 "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
31125 "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
31126 "", "pc","ps","cr","lr","ctr","xer"]
31127 (gdb)
31128 -data-list-register-names 1 2 3
31129 ^done,register-names=["r1","r2","r3"]
31130 (gdb)
31131 @end smallexample
31132
31133 @subheading The @code{-data-list-register-values} Command
31134 @findex -data-list-register-values
31135
31136 @subsubheading Synopsis
31137
31138 @smallexample
31139 -data-list-register-values
31140 [ @code{--skip-unavailable} ] @var{fmt} [ ( @var{regno} )*]
31141 @end smallexample
31142
31143 Display the registers' contents. The format according to which the
31144 registers' contents are to be returned is given by @var{fmt}, followed
31145 by an optional list of numbers specifying the registers to display. A
31146 missing list of numbers indicates that the contents of all the
31147 registers must be returned. The @code{--skip-unavailable} option
31148 indicates that only the available registers are to be returned.
31149
31150 Allowed formats for @var{fmt} are:
31151
31152 @table @code
31153 @item x
31154 Hexadecimal
31155 @item o
31156 Octal
31157 @item t
31158 Binary
31159 @item d
31160 Decimal
31161 @item r
31162 Raw
31163 @item N
31164 Natural
31165 @end table
31166
31167 @subsubheading @value{GDBN} Command
31168
31169 The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
31170 all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
31171
31172 @subsubheading Example
31173
31174 For a PPC MBX board (note: line breaks are for readability only, they
31175 don't appear in the actual output):
31176
31177 @smallexample
31178 (gdb)
31179 -data-list-register-values r 64 65
31180 ^done,register-values=[@{number="64",value="0xfe00a300"@},
31181 @{number="65",value="0x00029002"@}]
31182 (gdb)
31183 -data-list-register-values x
31184 ^done,register-values=[@{number="0",value="0xfe0043c8"@},
31185 @{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
31186 @{number="3",value="0x0"@},@{number="4",value="0xa"@},
31187 @{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
31188 @{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
31189 @{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
31190 @{number="11",value="0x1"@},@{number="12",value="0x0"@},
31191 @{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
31192 @{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
31193 @{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
31194 @{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
31195 @{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
31196 @{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
31197 @{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
31198 @{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
31199 @{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
31200 @{number="31",value="0x0"@},@{number="32",value="0x0"@},
31201 @{number="33",value="0x0"@},@{number="34",value="0x0"@},
31202 @{number="35",value="0x0"@},@{number="36",value="0x0"@},
31203 @{number="37",value="0x0"@},@{number="38",value="0x0"@},
31204 @{number="39",value="0x0"@},@{number="40",value="0x0"@},
31205 @{number="41",value="0x0"@},@{number="42",value="0x0"@},
31206 @{number="43",value="0x0"@},@{number="44",value="0x0"@},
31207 @{number="45",value="0x0"@},@{number="46",value="0x0"@},
31208 @{number="47",value="0x0"@},@{number="48",value="0x0"@},
31209 @{number="49",value="0x0"@},@{number="50",value="0x0"@},
31210 @{number="51",value="0x0"@},@{number="52",value="0x0"@},
31211 @{number="53",value="0x0"@},@{number="54",value="0x0"@},
31212 @{number="55",value="0x0"@},@{number="56",value="0x0"@},
31213 @{number="57",value="0x0"@},@{number="58",value="0x0"@},
31214 @{number="59",value="0x0"@},@{number="60",value="0x0"@},
31215 @{number="61",value="0x0"@},@{number="62",value="0x0"@},
31216 @{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
31217 @{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
31218 @{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
31219 @{number="69",value="0x20002b03"@}]
31220 (gdb)
31221 @end smallexample
31222
31223
31224 @subheading The @code{-data-read-memory} Command
31225 @findex -data-read-memory
31226
31227 This command is deprecated, use @code{-data-read-memory-bytes} instead.
31228
31229 @subsubheading Synopsis
31230
31231 @smallexample
31232 -data-read-memory [ -o @var{byte-offset} ]
31233 @var{address} @var{word-format} @var{word-size}
31234 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
31235 @end smallexample
31236
31237 @noindent
31238 where:
31239
31240 @table @samp
31241 @item @var{address}
31242 An expression specifying the address of the first memory word to be
31243 read. Complex expressions containing embedded white space should be
31244 quoted using the C convention.
31245
31246 @item @var{word-format}
31247 The format to be used to print the memory words. The notation is the
31248 same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
31249 ,Output Formats}).
31250
31251 @item @var{word-size}
31252 The size of each memory word in bytes.
31253
31254 @item @var{nr-rows}
31255 The number of rows in the output table.
31256
31257 @item @var{nr-cols}
31258 The number of columns in the output table.
31259
31260 @item @var{aschar}
31261 If present, indicates that each row should include an @sc{ascii} dump. The
31262 value of @var{aschar} is used as a padding character when a byte is not a
31263 member of the printable @sc{ascii} character set (printable @sc{ascii}
31264 characters are those whose code is between 32 and 126, inclusively).
31265
31266 @item @var{byte-offset}
31267 An offset to add to the @var{address} before fetching memory.
31268 @end table
31269
31270 This command displays memory contents as a table of @var{nr-rows} by
31271 @var{nr-cols} words, each word being @var{word-size} bytes. In total,
31272 @code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
31273 (returned as @samp{total-bytes}). Should less than the requested number
31274 of bytes be returned by the target, the missing words are identified
31275 using @samp{N/A}. The number of bytes read from the target is returned
31276 in @samp{nr-bytes} and the starting address used to read memory in
31277 @samp{addr}.
31278
31279 The address of the next/previous row or page is available in
31280 @samp{next-row} and @samp{prev-row}, @samp{next-page} and
31281 @samp{prev-page}.
31282
31283 @subsubheading @value{GDBN} Command
31284
31285 The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
31286 @samp{gdb_get_mem} memory read command.
31287
31288 @subsubheading Example
31289
31290 Read six bytes of memory starting at @code{bytes+6} but then offset by
31291 @code{-6} bytes. Format as three rows of two columns. One byte per
31292 word. Display each word in hex.
31293
31294 @smallexample
31295 (gdb)
31296 9-data-read-memory -o -6 -- bytes+6 x 1 3 2
31297 9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
31298 next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
31299 prev-page="0x0000138a",memory=[
31300 @{addr="0x00001390",data=["0x00","0x01"]@},
31301 @{addr="0x00001392",data=["0x02","0x03"]@},
31302 @{addr="0x00001394",data=["0x04","0x05"]@}]
31303 (gdb)
31304 @end smallexample
31305
31306 Read two bytes of memory starting at address @code{shorts + 64} and
31307 display as a single word formatted in decimal.
31308
31309 @smallexample
31310 (gdb)
31311 5-data-read-memory shorts+64 d 2 1 1
31312 5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
31313 next-row="0x00001512",prev-row="0x0000150e",
31314 next-page="0x00001512",prev-page="0x0000150e",memory=[
31315 @{addr="0x00001510",data=["128"]@}]
31316 (gdb)
31317 @end smallexample
31318
31319 Read thirty two bytes of memory starting at @code{bytes+16} and format
31320 as eight rows of four columns. Include a string encoding with @samp{x}
31321 used as the non-printable character.
31322
31323 @smallexample
31324 (gdb)
31325 4-data-read-memory bytes+16 x 1 8 4 x
31326 4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
31327 next-row="0x000013c0",prev-row="0x0000139c",
31328 next-page="0x000013c0",prev-page="0x00001380",memory=[
31329 @{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
31330 @{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
31331 @{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
31332 @{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
31333 @{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
31334 @{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
31335 @{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
31336 @{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
31337 (gdb)
31338 @end smallexample
31339
31340 @subheading The @code{-data-read-memory-bytes} Command
31341 @findex -data-read-memory-bytes
31342
31343 @subsubheading Synopsis
31344
31345 @smallexample
31346 -data-read-memory-bytes [ -o @var{offset} ]
31347 @var{address} @var{count}
31348 @end smallexample
31349
31350 @noindent
31351 where:
31352
31353 @table @samp
31354 @item @var{address}
31355 An expression specifying the address of the first addressable memory unit
31356 to be read. Complex expressions containing embedded white space should be
31357 quoted using the C convention.
31358
31359 @item @var{count}
31360 The number of addressable memory units to read. This should be an integer
31361 literal.
31362
31363 @item @var{offset}
31364 The offset relative to @var{address} at which to start reading. This
31365 should be an integer literal. This option is provided so that a frontend
31366 is not required to first evaluate address and then perform address
31367 arithmetics itself.
31368
31369 @end table
31370
31371 This command attempts to read all accessible memory regions in the
31372 specified range. First, all regions marked as unreadable in the memory
31373 map (if one is defined) will be skipped. @xref{Memory Region
31374 Attributes}. Second, @value{GDBN} will attempt to read the remaining
31375 regions. For each one, if reading full region results in an errors,
31376 @value{GDBN} will try to read a subset of the region.
31377
31378 In general, every single memory unit in the region may be readable or not,
31379 and the only way to read every readable unit is to try a read at
31380 every address, which is not practical. Therefore, @value{GDBN} will
31381 attempt to read all accessible memory units at either beginning or the end
31382 of the region, using a binary division scheme. This heuristic works
31383 well for reading accross a memory map boundary. Note that if a region
31384 has a readable range that is neither at the beginning or the end,
31385 @value{GDBN} will not read it.
31386
31387 The result record (@pxref{GDB/MI Result Records}) that is output of
31388 the command includes a field named @samp{memory} whose content is a
31389 list of tuples. Each tuple represent a successfully read memory block
31390 and has the following fields:
31391
31392 @table @code
31393 @item begin
31394 The start address of the memory block, as hexadecimal literal.
31395
31396 @item end
31397 The end address of the memory block, as hexadecimal literal.
31398
31399 @item offset
31400 The offset of the memory block, as hexadecimal literal, relative to
31401 the start address passed to @code{-data-read-memory-bytes}.
31402
31403 @item contents
31404 The contents of the memory block, in hex.
31405
31406 @end table
31407
31408
31409
31410 @subsubheading @value{GDBN} Command
31411
31412 The corresponding @value{GDBN} command is @samp{x}.
31413
31414 @subsubheading Example
31415
31416 @smallexample
31417 (gdb)
31418 -data-read-memory-bytes &a 10
31419 ^done,memory=[@{begin="0xbffff154",offset="0x00000000",
31420 end="0xbffff15e",
31421 contents="01000000020000000300"@}]
31422 (gdb)
31423 @end smallexample
31424
31425
31426 @subheading The @code{-data-write-memory-bytes} Command
31427 @findex -data-write-memory-bytes
31428
31429 @subsubheading Synopsis
31430
31431 @smallexample
31432 -data-write-memory-bytes @var{address} @var{contents}
31433 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]}
31434 @end smallexample
31435
31436 @noindent
31437 where:
31438
31439 @table @samp
31440 @item @var{address}
31441 An expression specifying the address of the first addressable memory unit
31442 to be written. Complex expressions containing embedded white space should
31443 be quoted using the C convention.
31444
31445 @item @var{contents}
31446 The hex-encoded data to write. It is an error if @var{contents} does
31447 not represent an integral number of addressable memory units.
31448
31449 @item @var{count}
31450 Optional argument indicating the number of addressable memory units to be
31451 written. If @var{count} is greater than @var{contents}' length,
31452 @value{GDBN} will repeatedly write @var{contents} until it fills
31453 @var{count} memory units.
31454
31455 @end table
31456
31457 @subsubheading @value{GDBN} Command
31458
31459 There's no corresponding @value{GDBN} command.
31460
31461 @subsubheading Example
31462
31463 @smallexample
31464 (gdb)
31465 -data-write-memory-bytes &a "aabbccdd"
31466 ^done
31467 (gdb)
31468 @end smallexample
31469
31470 @smallexample
31471 (gdb)
31472 -data-write-memory-bytes &a "aabbccdd" 16e
31473 ^done
31474 (gdb)
31475 @end smallexample
31476
31477 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31478 @node GDB/MI Tracepoint Commands
31479 @section @sc{gdb/mi} Tracepoint Commands
31480
31481 The commands defined in this section implement MI support for
31482 tracepoints. For detailed introduction, see @ref{Tracepoints}.
31483
31484 @subheading The @code{-trace-find} Command
31485 @findex -trace-find
31486
31487 @subsubheading Synopsis
31488
31489 @smallexample
31490 -trace-find @var{mode} [@var{parameters}@dots{}]
31491 @end smallexample
31492
31493 Find a trace frame using criteria defined by @var{mode} and
31494 @var{parameters}. The following table lists permissible
31495 modes and their parameters. For details of operation, see @ref{tfind}.
31496
31497 @table @samp
31498
31499 @item none
31500 No parameters are required. Stops examining trace frames.
31501
31502 @item frame-number
31503 An integer is required as parameter. Selects tracepoint frame with
31504 that index.
31505
31506 @item tracepoint-number
31507 An integer is required as parameter. Finds next
31508 trace frame that corresponds to tracepoint with the specified number.
31509
31510 @item pc
31511 An address is required as parameter. Finds
31512 next trace frame that corresponds to any tracepoint at the specified
31513 address.
31514
31515 @item pc-inside-range
31516 Two addresses are required as parameters. Finds next trace
31517 frame that corresponds to a tracepoint at an address inside the
31518 specified range. Both bounds are considered to be inside the range.
31519
31520 @item pc-outside-range
31521 Two addresses are required as parameters. Finds
31522 next trace frame that corresponds to a tracepoint at an address outside
31523 the specified range. Both bounds are considered to be inside the range.
31524
31525 @item line
31526 Line specification is required as parameter. @xref{Specify Location}.
31527 Finds next trace frame that corresponds to a tracepoint at
31528 the specified location.
31529
31530 @end table
31531
31532 If @samp{none} was passed as @var{mode}, the response does not
31533 have fields. Otherwise, the response may have the following fields:
31534
31535 @table @samp
31536 @item found
31537 This field has either @samp{0} or @samp{1} as the value, depending
31538 on whether a matching tracepoint was found.
31539
31540 @item traceframe
31541 The index of the found traceframe. This field is present iff
31542 the @samp{found} field has value of @samp{1}.
31543
31544 @item tracepoint
31545 The index of the found tracepoint. This field is present iff
31546 the @samp{found} field has value of @samp{1}.
31547
31548 @item frame
31549 The information about the frame corresponding to the found trace
31550 frame. This field is present only if a trace frame was found.
31551 @xref{GDB/MI Frame Information}, for description of this field.
31552
31553 @end table
31554
31555 @subsubheading @value{GDBN} Command
31556
31557 The corresponding @value{GDBN} command is @samp{tfind}.
31558
31559 @subheading -trace-define-variable
31560 @findex -trace-define-variable
31561
31562 @subsubheading Synopsis
31563
31564 @smallexample
31565 -trace-define-variable @var{name} [ @var{value} ]
31566 @end smallexample
31567
31568 Create trace variable @var{name} if it does not exist. If
31569 @var{value} is specified, sets the initial value of the specified
31570 trace variable to that value. Note that the @var{name} should start
31571 with the @samp{$} character.
31572
31573 @subsubheading @value{GDBN} Command
31574
31575 The corresponding @value{GDBN} command is @samp{tvariable}.
31576
31577 @subheading The @code{-trace-frame-collected} Command
31578 @findex -trace-frame-collected
31579
31580 @subsubheading Synopsis
31581
31582 @smallexample
31583 -trace-frame-collected
31584 [--var-print-values @var{var_pval}]
31585 [--comp-print-values @var{comp_pval}]
31586 [--registers-format @var{regformat}]
31587 [--memory-contents]
31588 @end smallexample
31589
31590 This command returns the set of collected objects, register names,
31591 trace state variable names, memory ranges and computed expressions
31592 that have been collected at a particular trace frame. The optional
31593 parameters to the command affect the output format in different ways.
31594 See the output description table below for more details.
31595
31596 The reported names can be used in the normal manner to create
31597 varobjs and inspect the objects themselves. The items returned by
31598 this command are categorized so that it is clear which is a variable,
31599 which is a register, which is a trace state variable, which is a
31600 memory range and which is a computed expression.
31601
31602 For instance, if the actions were
31603 @smallexample
31604 collect myVar, myArray[myIndex], myObj.field, myPtr->field, myCount + 2
31605 collect *(int*)0xaf02bef0@@40
31606 @end smallexample
31607
31608 @noindent
31609 the object collected in its entirety would be @code{myVar}. The
31610 object @code{myArray} would be partially collected, because only the
31611 element at index @code{myIndex} would be collected. The remaining
31612 objects would be computed expressions.
31613
31614 An example output would be:
31615
31616 @smallexample
31617 (gdb)
31618 -trace-frame-collected
31619 ^done,
31620 explicit-variables=[@{name="myVar",value="1"@}],
31621 computed-expressions=[@{name="myArray[myIndex]",value="0"@},
31622 @{name="myObj.field",value="0"@},
31623 @{name="myPtr->field",value="1"@},
31624 @{name="myCount + 2",value="3"@},
31625 @{name="$tvar1 + 1",value="43970027"@}],
31626 registers=[@{number="0",value="0x7fe2c6e79ec8"@},
31627 @{number="1",value="0x0"@},
31628 @{number="2",value="0x4"@},
31629 ...
31630 @{number="125",value="0x0"@}],
31631 tvars=[@{name="$tvar1",current="43970026"@}],
31632 memory=[@{address="0x0000000000602264",length="4"@},
31633 @{address="0x0000000000615bc0",length="4"@}]
31634 (gdb)
31635 @end smallexample
31636
31637 Where:
31638
31639 @table @code
31640 @item explicit-variables
31641 The set of objects that have been collected in their entirety (as
31642 opposed to collecting just a few elements of an array or a few struct
31643 members). For each object, its name and value are printed.
31644 The @code{--var-print-values} option affects how or whether the value
31645 field is output. If @var{var_pval} is 0, then print only the names;
31646 if it is 1, print also their values; and if it is 2, print the name,
31647 type and value for simple data types, and the name and type for
31648 arrays, structures and unions.
31649
31650 @item computed-expressions
31651 The set of computed expressions that have been collected at the
31652 current trace frame. The @code{--comp-print-values} option affects
31653 this set like the @code{--var-print-values} option affects the
31654 @code{explicit-variables} set. See above.
31655
31656 @item registers
31657 The registers that have been collected at the current trace frame.
31658 For each register collected, the name and current value are returned.
31659 The value is formatted according to the @code{--registers-format}
31660 option. See the @command{-data-list-register-values} command for a
31661 list of the allowed formats. The default is @samp{x}.
31662
31663 @item tvars
31664 The trace state variables that have been collected at the current
31665 trace frame. For each trace state variable collected, the name and
31666 current value are returned.
31667
31668 @item memory
31669 The set of memory ranges that have been collected at the current trace
31670 frame. Its content is a list of tuples. Each tuple represents a
31671 collected memory range and has the following fields:
31672
31673 @table @code
31674 @item address
31675 The start address of the memory range, as hexadecimal literal.
31676
31677 @item length
31678 The length of the memory range, as decimal literal.
31679
31680 @item contents
31681 The contents of the memory block, in hex. This field is only present
31682 if the @code{--memory-contents} option is specified.
31683
31684 @end table
31685
31686 @end table
31687
31688 @subsubheading @value{GDBN} Command
31689
31690 There is no corresponding @value{GDBN} command.
31691
31692 @subsubheading Example
31693
31694 @subheading -trace-list-variables
31695 @findex -trace-list-variables
31696
31697 @subsubheading Synopsis
31698
31699 @smallexample
31700 -trace-list-variables
31701 @end smallexample
31702
31703 Return a table of all defined trace variables. Each element of the
31704 table has the following fields:
31705
31706 @table @samp
31707 @item name
31708 The name of the trace variable. This field is always present.
31709
31710 @item initial
31711 The initial value. This is a 64-bit signed integer. This
31712 field is always present.
31713
31714 @item current
31715 The value the trace variable has at the moment. This is a 64-bit
31716 signed integer. This field is absent iff current value is
31717 not defined, for example if the trace was never run, or is
31718 presently running.
31719
31720 @end table
31721
31722 @subsubheading @value{GDBN} Command
31723
31724 The corresponding @value{GDBN} command is @samp{tvariables}.
31725
31726 @subsubheading Example
31727
31728 @smallexample
31729 (gdb)
31730 -trace-list-variables
31731 ^done,trace-variables=@{nr_rows="1",nr_cols="3",
31732 hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
31733 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
31734 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
31735 body=[variable=@{name="$trace_timestamp",initial="0"@}
31736 variable=@{name="$foo",initial="10",current="15"@}]@}
31737 (gdb)
31738 @end smallexample
31739
31740 @subheading -trace-save
31741 @findex -trace-save
31742
31743 @subsubheading Synopsis
31744
31745 @smallexample
31746 -trace-save [ -r ] [ -ctf ] @var{filename}
31747 @end smallexample
31748
31749 Saves the collected trace data to @var{filename}. Without the
31750 @samp{-r} option, the data is downloaded from the target and saved
31751 in a local file. With the @samp{-r} option the target is asked
31752 to perform the save.
31753
31754 By default, this command will save the trace in the tfile format. You can
31755 supply the optional @samp{-ctf} argument to save it the CTF format. See
31756 @ref{Trace Files} for more information about CTF.
31757
31758 @subsubheading @value{GDBN} Command
31759
31760 The corresponding @value{GDBN} command is @samp{tsave}.
31761
31762
31763 @subheading -trace-start
31764 @findex -trace-start
31765
31766 @subsubheading Synopsis
31767
31768 @smallexample
31769 -trace-start
31770 @end smallexample
31771
31772 Starts a tracing experiment. The result of this command does not
31773 have any fields.
31774
31775 @subsubheading @value{GDBN} Command
31776
31777 The corresponding @value{GDBN} command is @samp{tstart}.
31778
31779 @subheading -trace-status
31780 @findex -trace-status
31781
31782 @subsubheading Synopsis
31783
31784 @smallexample
31785 -trace-status
31786 @end smallexample
31787
31788 Obtains the status of a tracing experiment. The result may include
31789 the following fields:
31790
31791 @table @samp
31792
31793 @item supported
31794 May have a value of either @samp{0}, when no tracing operations are
31795 supported, @samp{1}, when all tracing operations are supported, or
31796 @samp{file} when examining trace file. In the latter case, examining
31797 of trace frame is possible but new tracing experiement cannot be
31798 started. This field is always present.
31799
31800 @item running
31801 May have a value of either @samp{0} or @samp{1} depending on whether
31802 tracing experiement is in progress on target. This field is present
31803 if @samp{supported} field is not @samp{0}.
31804
31805 @item stop-reason
31806 Report the reason why the tracing was stopped last time. This field
31807 may be absent iff tracing was never stopped on target yet. The
31808 value of @samp{request} means the tracing was stopped as result of
31809 the @code{-trace-stop} command. The value of @samp{overflow} means
31810 the tracing buffer is full. The value of @samp{disconnection} means
31811 tracing was automatically stopped when @value{GDBN} has disconnected.
31812 The value of @samp{passcount} means tracing was stopped when a
31813 tracepoint was passed a maximal number of times for that tracepoint.
31814 This field is present if @samp{supported} field is not @samp{0}.
31815
31816 @item stopping-tracepoint
31817 The number of tracepoint whose passcount as exceeded. This field is
31818 present iff the @samp{stop-reason} field has the value of
31819 @samp{passcount}.
31820
31821 @item frames
31822 @itemx frames-created
31823 The @samp{frames} field is a count of the total number of trace frames
31824 in the trace buffer, while @samp{frames-created} is the total created
31825 during the run, including ones that were discarded, such as when a
31826 circular trace buffer filled up. Both fields are optional.
31827
31828 @item buffer-size
31829 @itemx buffer-free
31830 These fields tell the current size of the tracing buffer and the
31831 remaining space. These fields are optional.
31832
31833 @item circular
31834 The value of the circular trace buffer flag. @code{1} means that the
31835 trace buffer is circular and old trace frames will be discarded if
31836 necessary to make room, @code{0} means that the trace buffer is linear
31837 and may fill up.
31838
31839 @item disconnected
31840 The value of the disconnected tracing flag. @code{1} means that
31841 tracing will continue after @value{GDBN} disconnects, @code{0} means
31842 that the trace run will stop.
31843
31844 @item trace-file
31845 The filename of the trace file being examined. This field is
31846 optional, and only present when examining a trace file.
31847
31848 @end table
31849
31850 @subsubheading @value{GDBN} Command
31851
31852 The corresponding @value{GDBN} command is @samp{tstatus}.
31853
31854 @subheading -trace-stop
31855 @findex -trace-stop
31856
31857 @subsubheading Synopsis
31858
31859 @smallexample
31860 -trace-stop
31861 @end smallexample
31862
31863 Stops a tracing experiment. The result of this command has the same
31864 fields as @code{-trace-status}, except that the @samp{supported} and
31865 @samp{running} fields are not output.
31866
31867 @subsubheading @value{GDBN} Command
31868
31869 The corresponding @value{GDBN} command is @samp{tstop}.
31870
31871
31872 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31873 @node GDB/MI Symbol Query
31874 @section @sc{gdb/mi} Symbol Query Commands
31875
31876
31877 @ignore
31878 @subheading The @code{-symbol-info-address} Command
31879 @findex -symbol-info-address
31880
31881 @subsubheading Synopsis
31882
31883 @smallexample
31884 -symbol-info-address @var{symbol}
31885 @end smallexample
31886
31887 Describe where @var{symbol} is stored.
31888
31889 @subsubheading @value{GDBN} Command
31890
31891 The corresponding @value{GDBN} command is @samp{info address}.
31892
31893 @subsubheading Example
31894 N.A.
31895
31896
31897 @subheading The @code{-symbol-info-file} Command
31898 @findex -symbol-info-file
31899
31900 @subsubheading Synopsis
31901
31902 @smallexample
31903 -symbol-info-file
31904 @end smallexample
31905
31906 Show the file for the symbol.
31907
31908 @subsubheading @value{GDBN} Command
31909
31910 There's no equivalent @value{GDBN} command. @code{gdbtk} has
31911 @samp{gdb_find_file}.
31912
31913 @subsubheading Example
31914 N.A.
31915
31916
31917 @subheading The @code{-symbol-info-function} Command
31918 @findex -symbol-info-function
31919
31920 @subsubheading Synopsis
31921
31922 @smallexample
31923 -symbol-info-function
31924 @end smallexample
31925
31926 Show which function the symbol lives in.
31927
31928 @subsubheading @value{GDBN} Command
31929
31930 @samp{gdb_get_function} in @code{gdbtk}.
31931
31932 @subsubheading Example
31933 N.A.
31934
31935
31936 @subheading The @code{-symbol-info-line} Command
31937 @findex -symbol-info-line
31938
31939 @subsubheading Synopsis
31940
31941 @smallexample
31942 -symbol-info-line
31943 @end smallexample
31944
31945 Show the core addresses of the code for a source line.
31946
31947 @subsubheading @value{GDBN} Command
31948
31949 The corresponding @value{GDBN} command is @samp{info line}.
31950 @code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
31951
31952 @subsubheading Example
31953 N.A.
31954
31955
31956 @subheading The @code{-symbol-info-symbol} Command
31957 @findex -symbol-info-symbol
31958
31959 @subsubheading Synopsis
31960
31961 @smallexample
31962 -symbol-info-symbol @var{addr}
31963 @end smallexample
31964
31965 Describe what symbol is at location @var{addr}.
31966
31967 @subsubheading @value{GDBN} Command
31968
31969 The corresponding @value{GDBN} command is @samp{info symbol}.
31970
31971 @subsubheading Example
31972 N.A.
31973
31974
31975 @subheading The @code{-symbol-list-functions} Command
31976 @findex -symbol-list-functions
31977
31978 @subsubheading Synopsis
31979
31980 @smallexample
31981 -symbol-list-functions
31982 @end smallexample
31983
31984 List the functions in the executable.
31985
31986 @subsubheading @value{GDBN} Command
31987
31988 @samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
31989 @samp{gdb_search} in @code{gdbtk}.
31990
31991 @subsubheading Example
31992 N.A.
31993 @end ignore
31994
31995
31996 @subheading The @code{-symbol-list-lines} Command
31997 @findex -symbol-list-lines
31998
31999 @subsubheading Synopsis
32000
32001 @smallexample
32002 -symbol-list-lines @var{filename}
32003 @end smallexample
32004
32005 Print the list of lines that contain code and their associated program
32006 addresses for the given source filename. The entries are sorted in
32007 ascending PC order.
32008
32009 @subsubheading @value{GDBN} Command
32010
32011 There is no corresponding @value{GDBN} command.
32012
32013 @subsubheading Example
32014 @smallexample
32015 (gdb)
32016 -symbol-list-lines basics.c
32017 ^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
32018 (gdb)
32019 @end smallexample
32020
32021
32022 @ignore
32023 @subheading The @code{-symbol-list-types} Command
32024 @findex -symbol-list-types
32025
32026 @subsubheading Synopsis
32027
32028 @smallexample
32029 -symbol-list-types
32030 @end smallexample
32031
32032 List all the type names.
32033
32034 @subsubheading @value{GDBN} Command
32035
32036 The corresponding commands are @samp{info types} in @value{GDBN},
32037 @samp{gdb_search} in @code{gdbtk}.
32038
32039 @subsubheading Example
32040 N.A.
32041
32042
32043 @subheading The @code{-symbol-list-variables} Command
32044 @findex -symbol-list-variables
32045
32046 @subsubheading Synopsis
32047
32048 @smallexample
32049 -symbol-list-variables
32050 @end smallexample
32051
32052 List all the global and static variable names.
32053
32054 @subsubheading @value{GDBN} Command
32055
32056 @samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
32057
32058 @subsubheading Example
32059 N.A.
32060
32061
32062 @subheading The @code{-symbol-locate} Command
32063 @findex -symbol-locate
32064
32065 @subsubheading Synopsis
32066
32067 @smallexample
32068 -symbol-locate
32069 @end smallexample
32070
32071 @subsubheading @value{GDBN} Command
32072
32073 @samp{gdb_loc} in @code{gdbtk}.
32074
32075 @subsubheading Example
32076 N.A.
32077
32078
32079 @subheading The @code{-symbol-type} Command
32080 @findex -symbol-type
32081
32082 @subsubheading Synopsis
32083
32084 @smallexample
32085 -symbol-type @var{variable}
32086 @end smallexample
32087
32088 Show type of @var{variable}.
32089
32090 @subsubheading @value{GDBN} Command
32091
32092 The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
32093 @samp{gdb_obj_variable}.
32094
32095 @subsubheading Example
32096 N.A.
32097 @end ignore
32098
32099
32100 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32101 @node GDB/MI File Commands
32102 @section @sc{gdb/mi} File Commands
32103
32104 This section describes the GDB/MI commands to specify executable file names
32105 and to read in and obtain symbol table information.
32106
32107 @subheading The @code{-file-exec-and-symbols} Command
32108 @findex -file-exec-and-symbols
32109
32110 @subsubheading Synopsis
32111
32112 @smallexample
32113 -file-exec-and-symbols @var{file}
32114 @end smallexample
32115
32116 Specify the executable file to be debugged. This file is the one from
32117 which the symbol table is also read. If no file is specified, the
32118 command clears the executable and symbol information. If breakpoints
32119 are set when using this command with no arguments, @value{GDBN} will produce
32120 error messages. Otherwise, no output is produced, except a completion
32121 notification.
32122
32123 @subsubheading @value{GDBN} Command
32124
32125 The corresponding @value{GDBN} command is @samp{file}.
32126
32127 @subsubheading Example
32128
32129 @smallexample
32130 (gdb)
32131 -file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32132 ^done
32133 (gdb)
32134 @end smallexample
32135
32136
32137 @subheading The @code{-file-exec-file} Command
32138 @findex -file-exec-file
32139
32140 @subsubheading Synopsis
32141
32142 @smallexample
32143 -file-exec-file @var{file}
32144 @end smallexample
32145
32146 Specify the executable file to be debugged. Unlike
32147 @samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
32148 from this file. If used without argument, @value{GDBN} clears the information
32149 about the executable file. No output is produced, except a completion
32150 notification.
32151
32152 @subsubheading @value{GDBN} Command
32153
32154 The corresponding @value{GDBN} command is @samp{exec-file}.
32155
32156 @subsubheading Example
32157
32158 @smallexample
32159 (gdb)
32160 -file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32161 ^done
32162 (gdb)
32163 @end smallexample
32164
32165
32166 @ignore
32167 @subheading The @code{-file-list-exec-sections} Command
32168 @findex -file-list-exec-sections
32169
32170 @subsubheading Synopsis
32171
32172 @smallexample
32173 -file-list-exec-sections
32174 @end smallexample
32175
32176 List the sections of the current executable file.
32177
32178 @subsubheading @value{GDBN} Command
32179
32180 The @value{GDBN} command @samp{info file} shows, among the rest, the same
32181 information as this command. @code{gdbtk} has a corresponding command
32182 @samp{gdb_load_info}.
32183
32184 @subsubheading Example
32185 N.A.
32186 @end ignore
32187
32188
32189 @subheading The @code{-file-list-exec-source-file} Command
32190 @findex -file-list-exec-source-file
32191
32192 @subsubheading Synopsis
32193
32194 @smallexample
32195 -file-list-exec-source-file
32196 @end smallexample
32197
32198 List the line number, the current source file, and the absolute path
32199 to the current source file for the current executable. The macro
32200 information field has a value of @samp{1} or @samp{0} depending on
32201 whether or not the file includes preprocessor macro information.
32202
32203 @subsubheading @value{GDBN} Command
32204
32205 The @value{GDBN} equivalent is @samp{info source}
32206
32207 @subsubheading Example
32208
32209 @smallexample
32210 (gdb)
32211 123-file-list-exec-source-file
32212 123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
32213 (gdb)
32214 @end smallexample
32215
32216
32217 @subheading The @code{-file-list-exec-source-files} Command
32218 @findex -file-list-exec-source-files
32219
32220 @subsubheading Synopsis
32221
32222 @smallexample
32223 -file-list-exec-source-files
32224 @end smallexample
32225
32226 List the source files for the current executable.
32227
32228 It will always output both the filename and fullname (absolute file
32229 name) of a source file.
32230
32231 @subsubheading @value{GDBN} Command
32232
32233 The @value{GDBN} equivalent is @samp{info sources}.
32234 @code{gdbtk} has an analogous command @samp{gdb_listfiles}.
32235
32236 @subsubheading Example
32237 @smallexample
32238 (gdb)
32239 -file-list-exec-source-files
32240 ^done,files=[
32241 @{file=foo.c,fullname=/home/foo.c@},
32242 @{file=/home/bar.c,fullname=/home/bar.c@},
32243 @{file=gdb_could_not_find_fullpath.c@}]
32244 (gdb)
32245 @end smallexample
32246
32247 @subheading The @code{-file-list-shared-libraries} Command
32248 @findex -file-list-shared-libraries
32249
32250 @subsubheading Synopsis
32251
32252 @smallexample
32253 -file-list-shared-libraries [ @var{regexp} ]
32254 @end smallexample
32255
32256 List the shared libraries in the program.
32257 With a regular expression @var{regexp}, only those libraries whose
32258 names match @var{regexp} are listed.
32259
32260 @subsubheading @value{GDBN} Command
32261
32262 The corresponding @value{GDBN} command is @samp{info shared}. The fields
32263 have a similar meaning to the @code{=library-loaded} notification.
32264 The @code{ranges} field specifies the multiple segments belonging to this
32265 library. Each range has the following fields:
32266
32267 @table @samp
32268 @item from
32269 The address defining the inclusive lower bound of the segment.
32270 @item to
32271 The address defining the exclusive upper bound of the segment.
32272 @end table
32273
32274 @subsubheading Example
32275 @smallexample
32276 (gdb)
32277 -file-list-exec-source-files
32278 ^done,shared-libraries=[
32279 @{id="/lib/libfoo.so",target-name="/lib/libfoo.so",host-name="/lib/libfoo.so",symbols-loaded="1",thread-group="i1",ranges=[@{from="0x72815989",to="0x728162c0"@}]@},
32280 @{id="/lib/libbar.so",target-name="/lib/libbar.so",host-name="/lib/libbar.so",symbols-loaded="1",thread-group="i1",ranges=[@{from="0x76ee48c0",to="0x76ee9160"@}]@}]
32281 (gdb)
32282 @end smallexample
32283
32284
32285 @ignore
32286 @subheading The @code{-file-list-symbol-files} Command
32287 @findex -file-list-symbol-files
32288
32289 @subsubheading Synopsis
32290
32291 @smallexample
32292 -file-list-symbol-files
32293 @end smallexample
32294
32295 List symbol files.
32296
32297 @subsubheading @value{GDBN} Command
32298
32299 The corresponding @value{GDBN} command is @samp{info file} (part of it).
32300
32301 @subsubheading Example
32302 N.A.
32303 @end ignore
32304
32305
32306 @subheading The @code{-file-symbol-file} Command
32307 @findex -file-symbol-file
32308
32309 @subsubheading Synopsis
32310
32311 @smallexample
32312 -file-symbol-file @var{file}
32313 @end smallexample
32314
32315 Read symbol table info from the specified @var{file} argument. When
32316 used without arguments, clears @value{GDBN}'s symbol table info. No output is
32317 produced, except for a completion notification.
32318
32319 @subsubheading @value{GDBN} Command
32320
32321 The corresponding @value{GDBN} command is @samp{symbol-file}.
32322
32323 @subsubheading Example
32324
32325 @smallexample
32326 (gdb)
32327 -file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32328 ^done
32329 (gdb)
32330 @end smallexample
32331
32332 @ignore
32333 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32334 @node GDB/MI Memory Overlay Commands
32335 @section @sc{gdb/mi} Memory Overlay Commands
32336
32337 The memory overlay commands are not implemented.
32338
32339 @c @subheading -overlay-auto
32340
32341 @c @subheading -overlay-list-mapping-state
32342
32343 @c @subheading -overlay-list-overlays
32344
32345 @c @subheading -overlay-map
32346
32347 @c @subheading -overlay-off
32348
32349 @c @subheading -overlay-on
32350
32351 @c @subheading -overlay-unmap
32352
32353 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32354 @node GDB/MI Signal Handling Commands
32355 @section @sc{gdb/mi} Signal Handling Commands
32356
32357 Signal handling commands are not implemented.
32358
32359 @c @subheading -signal-handle
32360
32361 @c @subheading -signal-list-handle-actions
32362
32363 @c @subheading -signal-list-signal-types
32364 @end ignore
32365
32366
32367 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32368 @node GDB/MI Target Manipulation
32369 @section @sc{gdb/mi} Target Manipulation Commands
32370
32371
32372 @subheading The @code{-target-attach} Command
32373 @findex -target-attach
32374
32375 @subsubheading Synopsis
32376
32377 @smallexample
32378 -target-attach @var{pid} | @var{gid} | @var{file}
32379 @end smallexample
32380
32381 Attach to a process @var{pid} or a file @var{file} outside of
32382 @value{GDBN}, or a thread group @var{gid}. If attaching to a thread
32383 group, the id previously returned by
32384 @samp{-list-thread-groups --available} must be used.
32385
32386 @subsubheading @value{GDBN} Command
32387
32388 The corresponding @value{GDBN} command is @samp{attach}.
32389
32390 @subsubheading Example
32391 @smallexample
32392 (gdb)
32393 -target-attach 34
32394 =thread-created,id="1"
32395 *stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
32396 ^done
32397 (gdb)
32398 @end smallexample
32399
32400 @ignore
32401 @subheading The @code{-target-compare-sections} Command
32402 @findex -target-compare-sections
32403
32404 @subsubheading Synopsis
32405
32406 @smallexample
32407 -target-compare-sections [ @var{section} ]
32408 @end smallexample
32409
32410 Compare data of section @var{section} on target to the exec file.
32411 Without the argument, all sections are compared.
32412
32413 @subsubheading @value{GDBN} Command
32414
32415 The @value{GDBN} equivalent is @samp{compare-sections}.
32416
32417 @subsubheading Example
32418 N.A.
32419 @end ignore
32420
32421
32422 @subheading The @code{-target-detach} Command
32423 @findex -target-detach
32424
32425 @subsubheading Synopsis
32426
32427 @smallexample
32428 -target-detach [ @var{pid} | @var{gid} ]
32429 @end smallexample
32430
32431 Detach from the remote target which normally resumes its execution.
32432 If either @var{pid} or @var{gid} is specified, detaches from either
32433 the specified process, or specified thread group. There's no output.
32434
32435 @subsubheading @value{GDBN} Command
32436
32437 The corresponding @value{GDBN} command is @samp{detach}.
32438
32439 @subsubheading Example
32440
32441 @smallexample
32442 (gdb)
32443 -target-detach
32444 ^done
32445 (gdb)
32446 @end smallexample
32447
32448
32449 @subheading The @code{-target-disconnect} Command
32450 @findex -target-disconnect
32451
32452 @subsubheading Synopsis
32453
32454 @smallexample
32455 -target-disconnect
32456 @end smallexample
32457
32458 Disconnect from the remote target. There's no output and the target is
32459 generally not resumed.
32460
32461 @subsubheading @value{GDBN} Command
32462
32463 The corresponding @value{GDBN} command is @samp{disconnect}.
32464
32465 @subsubheading Example
32466
32467 @smallexample
32468 (gdb)
32469 -target-disconnect
32470 ^done
32471 (gdb)
32472 @end smallexample
32473
32474
32475 @subheading The @code{-target-download} Command
32476 @findex -target-download
32477
32478 @subsubheading Synopsis
32479
32480 @smallexample
32481 -target-download
32482 @end smallexample
32483
32484 Loads the executable onto the remote target.
32485 It prints out an update message every half second, which includes the fields:
32486
32487 @table @samp
32488 @item section
32489 The name of the section.
32490 @item section-sent
32491 The size of what has been sent so far for that section.
32492 @item section-size
32493 The size of the section.
32494 @item total-sent
32495 The total size of what was sent so far (the current and the previous sections).
32496 @item total-size
32497 The size of the overall executable to download.
32498 @end table
32499
32500 @noindent
32501 Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
32502 @sc{gdb/mi} Output Syntax}).
32503
32504 In addition, it prints the name and size of the sections, as they are
32505 downloaded. These messages include the following fields:
32506
32507 @table @samp
32508 @item section
32509 The name of the section.
32510 @item section-size
32511 The size of the section.
32512 @item total-size
32513 The size of the overall executable to download.
32514 @end table
32515
32516 @noindent
32517 At the end, a summary is printed.
32518
32519 @subsubheading @value{GDBN} Command
32520
32521 The corresponding @value{GDBN} command is @samp{load}.
32522
32523 @subsubheading Example
32524
32525 Note: each status message appears on a single line. Here the messages
32526 have been broken down so that they can fit onto a page.
32527
32528 @smallexample
32529 (gdb)
32530 -target-download
32531 +download,@{section=".text",section-size="6668",total-size="9880"@}
32532 +download,@{section=".text",section-sent="512",section-size="6668",
32533 total-sent="512",total-size="9880"@}
32534 +download,@{section=".text",section-sent="1024",section-size="6668",
32535 total-sent="1024",total-size="9880"@}
32536 +download,@{section=".text",section-sent="1536",section-size="6668",
32537 total-sent="1536",total-size="9880"@}
32538 +download,@{section=".text",section-sent="2048",section-size="6668",
32539 total-sent="2048",total-size="9880"@}
32540 +download,@{section=".text",section-sent="2560",section-size="6668",
32541 total-sent="2560",total-size="9880"@}
32542 +download,@{section=".text",section-sent="3072",section-size="6668",
32543 total-sent="3072",total-size="9880"@}
32544 +download,@{section=".text",section-sent="3584",section-size="6668",
32545 total-sent="3584",total-size="9880"@}
32546 +download,@{section=".text",section-sent="4096",section-size="6668",
32547 total-sent="4096",total-size="9880"@}
32548 +download,@{section=".text",section-sent="4608",section-size="6668",
32549 total-sent="4608",total-size="9880"@}
32550 +download,@{section=".text",section-sent="5120",section-size="6668",
32551 total-sent="5120",total-size="9880"@}
32552 +download,@{section=".text",section-sent="5632",section-size="6668",
32553 total-sent="5632",total-size="9880"@}
32554 +download,@{section=".text",section-sent="6144",section-size="6668",
32555 total-sent="6144",total-size="9880"@}
32556 +download,@{section=".text",section-sent="6656",section-size="6668",
32557 total-sent="6656",total-size="9880"@}
32558 +download,@{section=".init",section-size="28",total-size="9880"@}
32559 +download,@{section=".fini",section-size="28",total-size="9880"@}
32560 +download,@{section=".data",section-size="3156",total-size="9880"@}
32561 +download,@{section=".data",section-sent="512",section-size="3156",
32562 total-sent="7236",total-size="9880"@}
32563 +download,@{section=".data",section-sent="1024",section-size="3156",
32564 total-sent="7748",total-size="9880"@}
32565 +download,@{section=".data",section-sent="1536",section-size="3156",
32566 total-sent="8260",total-size="9880"@}
32567 +download,@{section=".data",section-sent="2048",section-size="3156",
32568 total-sent="8772",total-size="9880"@}
32569 +download,@{section=".data",section-sent="2560",section-size="3156",
32570 total-sent="9284",total-size="9880"@}
32571 +download,@{section=".data",section-sent="3072",section-size="3156",
32572 total-sent="9796",total-size="9880"@}
32573 ^done,address="0x10004",load-size="9880",transfer-rate="6586",
32574 write-rate="429"
32575 (gdb)
32576 @end smallexample
32577
32578
32579 @ignore
32580 @subheading The @code{-target-exec-status} Command
32581 @findex -target-exec-status
32582
32583 @subsubheading Synopsis
32584
32585 @smallexample
32586 -target-exec-status
32587 @end smallexample
32588
32589 Provide information on the state of the target (whether it is running or
32590 not, for instance).
32591
32592 @subsubheading @value{GDBN} Command
32593
32594 There's no equivalent @value{GDBN} command.
32595
32596 @subsubheading Example
32597 N.A.
32598
32599
32600 @subheading The @code{-target-list-available-targets} Command
32601 @findex -target-list-available-targets
32602
32603 @subsubheading Synopsis
32604
32605 @smallexample
32606 -target-list-available-targets
32607 @end smallexample
32608
32609 List the possible targets to connect to.
32610
32611 @subsubheading @value{GDBN} Command
32612
32613 The corresponding @value{GDBN} command is @samp{help target}.
32614
32615 @subsubheading Example
32616 N.A.
32617
32618
32619 @subheading The @code{-target-list-current-targets} Command
32620 @findex -target-list-current-targets
32621
32622 @subsubheading Synopsis
32623
32624 @smallexample
32625 -target-list-current-targets
32626 @end smallexample
32627
32628 Describe the current target.
32629
32630 @subsubheading @value{GDBN} Command
32631
32632 The corresponding information is printed by @samp{info file} (among
32633 other things).
32634
32635 @subsubheading Example
32636 N.A.
32637
32638
32639 @subheading The @code{-target-list-parameters} Command
32640 @findex -target-list-parameters
32641
32642 @subsubheading Synopsis
32643
32644 @smallexample
32645 -target-list-parameters
32646 @end smallexample
32647
32648 @c ????
32649 @end ignore
32650
32651 @subsubheading @value{GDBN} Command
32652
32653 No equivalent.
32654
32655 @subsubheading Example
32656 N.A.
32657
32658 @subheading The @code{-target-flash-erase} Command
32659 @findex -target-flash-erase
32660
32661 @subsubheading Synopsis
32662
32663 @smallexample
32664 -target-flash-erase
32665 @end smallexample
32666
32667 Erases all known flash memory regions on the target.
32668
32669 The corresponding @value{GDBN} command is @samp{flash-erase}.
32670
32671 The output is a list of flash regions that have been erased, with starting
32672 addresses and memory region sizes.
32673
32674 @smallexample
32675 (gdb)
32676 -target-flash-erase
32677 ^done,erased-regions=@{address="0x0",size="0x40000"@}
32678 (gdb)
32679 @end smallexample
32680
32681 @subheading The @code{-target-select} Command
32682 @findex -target-select
32683
32684 @subsubheading Synopsis
32685
32686 @smallexample
32687 -target-select @var{type} @var{parameters @dots{}}
32688 @end smallexample
32689
32690 Connect @value{GDBN} to the remote target. This command takes two args:
32691
32692 @table @samp
32693 @item @var{type}
32694 The type of target, for instance @samp{remote}, etc.
32695 @item @var{parameters}
32696 Device names, host names and the like. @xref{Target Commands, ,
32697 Commands for Managing Targets}, for more details.
32698 @end table
32699
32700 The output is a connection notification, followed by the address at
32701 which the target program is, in the following form:
32702
32703 @smallexample
32704 ^connected,addr="@var{address}",func="@var{function name}",
32705 args=[@var{arg list}]
32706 @end smallexample
32707
32708 @subsubheading @value{GDBN} Command
32709
32710 The corresponding @value{GDBN} command is @samp{target}.
32711
32712 @subsubheading Example
32713
32714 @smallexample
32715 (gdb)
32716 -target-select remote /dev/ttya
32717 ^connected,addr="0xfe00a300",func="??",args=[]
32718 (gdb)
32719 @end smallexample
32720
32721 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32722 @node GDB/MI File Transfer Commands
32723 @section @sc{gdb/mi} File Transfer Commands
32724
32725
32726 @subheading The @code{-target-file-put} Command
32727 @findex -target-file-put
32728
32729 @subsubheading Synopsis
32730
32731 @smallexample
32732 -target-file-put @var{hostfile} @var{targetfile}
32733 @end smallexample
32734
32735 Copy file @var{hostfile} from the host system (the machine running
32736 @value{GDBN}) to @var{targetfile} on the target system.
32737
32738 @subsubheading @value{GDBN} Command
32739
32740 The corresponding @value{GDBN} command is @samp{remote put}.
32741
32742 @subsubheading Example
32743
32744 @smallexample
32745 (gdb)
32746 -target-file-put localfile remotefile
32747 ^done
32748 (gdb)
32749 @end smallexample
32750
32751
32752 @subheading The @code{-target-file-get} Command
32753 @findex -target-file-get
32754
32755 @subsubheading Synopsis
32756
32757 @smallexample
32758 -target-file-get @var{targetfile} @var{hostfile}
32759 @end smallexample
32760
32761 Copy file @var{targetfile} from the target system to @var{hostfile}
32762 on the host system.
32763
32764 @subsubheading @value{GDBN} Command
32765
32766 The corresponding @value{GDBN} command is @samp{remote get}.
32767
32768 @subsubheading Example
32769
32770 @smallexample
32771 (gdb)
32772 -target-file-get remotefile localfile
32773 ^done
32774 (gdb)
32775 @end smallexample
32776
32777
32778 @subheading The @code{-target-file-delete} Command
32779 @findex -target-file-delete
32780
32781 @subsubheading Synopsis
32782
32783 @smallexample
32784 -target-file-delete @var{targetfile}
32785 @end smallexample
32786
32787 Delete @var{targetfile} from the target system.
32788
32789 @subsubheading @value{GDBN} Command
32790
32791 The corresponding @value{GDBN} command is @samp{remote delete}.
32792
32793 @subsubheading Example
32794
32795 @smallexample
32796 (gdb)
32797 -target-file-delete remotefile
32798 ^done
32799 (gdb)
32800 @end smallexample
32801
32802
32803 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32804 @node GDB/MI Ada Exceptions Commands
32805 @section Ada Exceptions @sc{gdb/mi} Commands
32806
32807 @subheading The @code{-info-ada-exceptions} Command
32808 @findex -info-ada-exceptions
32809
32810 @subsubheading Synopsis
32811
32812 @smallexample
32813 -info-ada-exceptions [ @var{regexp}]
32814 @end smallexample
32815
32816 List all Ada exceptions defined within the program being debugged.
32817 With a regular expression @var{regexp}, only those exceptions whose
32818 names match @var{regexp} are listed.
32819
32820 @subsubheading @value{GDBN} Command
32821
32822 The corresponding @value{GDBN} command is @samp{info exceptions}.
32823
32824 @subsubheading Result
32825
32826 The result is a table of Ada exceptions. The following columns are
32827 defined for each exception:
32828
32829 @table @samp
32830 @item name
32831 The name of the exception.
32832
32833 @item address
32834 The address of the exception.
32835
32836 @end table
32837
32838 @subsubheading Example
32839
32840 @smallexample
32841 -info-ada-exceptions aint
32842 ^done,ada-exceptions=@{nr_rows="2",nr_cols="2",
32843 hdr=[@{width="1",alignment="-1",col_name="name",colhdr="Name"@},
32844 @{width="1",alignment="-1",col_name="address",colhdr="Address"@}],
32845 body=[@{name="constraint_error",address="0x0000000000613da0"@},
32846 @{name="const.aint_global_e",address="0x0000000000613b00"@}]@}
32847 @end smallexample
32848
32849 @subheading Catching Ada Exceptions
32850
32851 The commands describing how to ask @value{GDBN} to stop when a program
32852 raises an exception are described at @ref{Ada Exception GDB/MI
32853 Catchpoint Commands}.
32854
32855
32856 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32857 @node GDB/MI Support Commands
32858 @section @sc{gdb/mi} Support Commands
32859
32860 Since new commands and features get regularly added to @sc{gdb/mi},
32861 some commands are available to help front-ends query the debugger
32862 about support for these capabilities. Similarly, it is also possible
32863 to query @value{GDBN} about target support of certain features.
32864
32865 @subheading The @code{-info-gdb-mi-command} Command
32866 @cindex @code{-info-gdb-mi-command}
32867 @findex -info-gdb-mi-command
32868
32869 @subsubheading Synopsis
32870
32871 @smallexample
32872 -info-gdb-mi-command @var{cmd_name}
32873 @end smallexample
32874
32875 Query support for the @sc{gdb/mi} command named @var{cmd_name}.
32876
32877 Note that the dash (@code{-}) starting all @sc{gdb/mi} commands
32878 is technically not part of the command name (@pxref{GDB/MI Input
32879 Syntax}), and thus should be omitted in @var{cmd_name}. However,
32880 for ease of use, this command also accepts the form with the leading
32881 dash.
32882
32883 @subsubheading @value{GDBN} Command
32884
32885 There is no corresponding @value{GDBN} command.
32886
32887 @subsubheading Result
32888
32889 The result is a tuple. There is currently only one field:
32890
32891 @table @samp
32892 @item exists
32893 This field is equal to @code{"true"} if the @sc{gdb/mi} command exists,
32894 @code{"false"} otherwise.
32895
32896 @end table
32897
32898 @subsubheading Example
32899
32900 Here is an example where the @sc{gdb/mi} command does not exist:
32901
32902 @smallexample
32903 -info-gdb-mi-command unsupported-command
32904 ^done,command=@{exists="false"@}
32905 @end smallexample
32906
32907 @noindent
32908 And here is an example where the @sc{gdb/mi} command is known
32909 to the debugger:
32910
32911 @smallexample
32912 -info-gdb-mi-command symbol-list-lines
32913 ^done,command=@{exists="true"@}
32914 @end smallexample
32915
32916 @subheading The @code{-list-features} Command
32917 @findex -list-features
32918 @cindex supported @sc{gdb/mi} features, list
32919
32920 Returns a list of particular features of the MI protocol that
32921 this version of gdb implements. A feature can be a command,
32922 or a new field in an output of some command, or even an
32923 important bugfix. While a frontend can sometimes detect presence
32924 of a feature at runtime, it is easier to perform detection at debugger
32925 startup.
32926
32927 The command returns a list of strings, with each string naming an
32928 available feature. Each returned string is just a name, it does not
32929 have any internal structure. The list of possible feature names
32930 is given below.
32931
32932 Example output:
32933
32934 @smallexample
32935 (gdb) -list-features
32936 ^done,result=["feature1","feature2"]
32937 @end smallexample
32938
32939 The current list of features is:
32940
32941 @ftable @samp
32942 @item frozen-varobjs
32943 Indicates support for the @code{-var-set-frozen} command, as well
32944 as possible presense of the @code{frozen} field in the output
32945 of @code{-varobj-create}.
32946 @item pending-breakpoints
32947 Indicates support for the @option{-f} option to the @code{-break-insert}
32948 command.
32949 @item python
32950 Indicates Python scripting support, Python-based
32951 pretty-printing commands, and possible presence of the
32952 @samp{display_hint} field in the output of @code{-var-list-children}
32953 @item thread-info
32954 Indicates support for the @code{-thread-info} command.
32955 @item data-read-memory-bytes
32956 Indicates support for the @code{-data-read-memory-bytes} and the
32957 @code{-data-write-memory-bytes} commands.
32958 @item breakpoint-notifications
32959 Indicates that changes to breakpoints and breakpoints created via the
32960 CLI will be announced via async records.
32961 @item ada-task-info
32962 Indicates support for the @code{-ada-task-info} command.
32963 @item language-option
32964 Indicates that all @sc{gdb/mi} commands accept the @option{--language}
32965 option (@pxref{Context management}).
32966 @item info-gdb-mi-command
32967 Indicates support for the @code{-info-gdb-mi-command} command.
32968 @item undefined-command-error-code
32969 Indicates support for the "undefined-command" error code in error result
32970 records, produced when trying to execute an undefined @sc{gdb/mi} command
32971 (@pxref{GDB/MI Result Records}).
32972 @item exec-run-start-option
32973 Indicates that the @code{-exec-run} command supports the @option{--start}
32974 option (@pxref{GDB/MI Program Execution}).
32975 @end ftable
32976
32977 @subheading The @code{-list-target-features} Command
32978 @findex -list-target-features
32979
32980 Returns a list of particular features that are supported by the
32981 target. Those features affect the permitted MI commands, but
32982 unlike the features reported by the @code{-list-features} command, the
32983 features depend on which target GDB is using at the moment. Whenever
32984 a target can change, due to commands such as @code{-target-select},
32985 @code{-target-attach} or @code{-exec-run}, the list of target features
32986 may change, and the frontend should obtain it again.
32987 Example output:
32988
32989 @smallexample
32990 (gdb) -list-target-features
32991 ^done,result=["async"]
32992 @end smallexample
32993
32994 The current list of features is:
32995
32996 @table @samp
32997 @item async
32998 Indicates that the target is capable of asynchronous command
32999 execution, which means that @value{GDBN} will accept further commands
33000 while the target is running.
33001
33002 @item reverse
33003 Indicates that the target is capable of reverse execution.
33004 @xref{Reverse Execution}, for more information.
33005
33006 @end table
33007
33008 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33009 @node GDB/MI Miscellaneous Commands
33010 @section Miscellaneous @sc{gdb/mi} Commands
33011
33012 @c @subheading -gdb-complete
33013
33014 @subheading The @code{-gdb-exit} Command
33015 @findex -gdb-exit
33016
33017 @subsubheading Synopsis
33018
33019 @smallexample
33020 -gdb-exit
33021 @end smallexample
33022
33023 Exit @value{GDBN} immediately.
33024
33025 @subsubheading @value{GDBN} Command
33026
33027 Approximately corresponds to @samp{quit}.
33028
33029 @subsubheading Example
33030
33031 @smallexample
33032 (gdb)
33033 -gdb-exit
33034 ^exit
33035 @end smallexample
33036
33037
33038 @ignore
33039 @subheading The @code{-exec-abort} Command
33040 @findex -exec-abort
33041
33042 @subsubheading Synopsis
33043
33044 @smallexample
33045 -exec-abort
33046 @end smallexample
33047
33048 Kill the inferior running program.
33049
33050 @subsubheading @value{GDBN} Command
33051
33052 The corresponding @value{GDBN} command is @samp{kill}.
33053
33054 @subsubheading Example
33055 N.A.
33056 @end ignore
33057
33058
33059 @subheading The @code{-gdb-set} Command
33060 @findex -gdb-set
33061
33062 @subsubheading Synopsis
33063
33064 @smallexample
33065 -gdb-set
33066 @end smallexample
33067
33068 Set an internal @value{GDBN} variable.
33069 @c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
33070
33071 @subsubheading @value{GDBN} Command
33072
33073 The corresponding @value{GDBN} command is @samp{set}.
33074
33075 @subsubheading Example
33076
33077 @smallexample
33078 (gdb)
33079 -gdb-set $foo=3
33080 ^done
33081 (gdb)
33082 @end smallexample
33083
33084
33085 @subheading The @code{-gdb-show} Command
33086 @findex -gdb-show
33087
33088 @subsubheading Synopsis
33089
33090 @smallexample
33091 -gdb-show
33092 @end smallexample
33093
33094 Show the current value of a @value{GDBN} variable.
33095
33096 @subsubheading @value{GDBN} Command
33097
33098 The corresponding @value{GDBN} command is @samp{show}.
33099
33100 @subsubheading Example
33101
33102 @smallexample
33103 (gdb)
33104 -gdb-show annotate
33105 ^done,value="0"
33106 (gdb)
33107 @end smallexample
33108
33109 @c @subheading -gdb-source
33110
33111
33112 @subheading The @code{-gdb-version} Command
33113 @findex -gdb-version
33114
33115 @subsubheading Synopsis
33116
33117 @smallexample
33118 -gdb-version
33119 @end smallexample
33120
33121 Show version information for @value{GDBN}. Used mostly in testing.
33122
33123 @subsubheading @value{GDBN} Command
33124
33125 The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
33126 default shows this information when you start an interactive session.
33127
33128 @subsubheading Example
33129
33130 @c This example modifies the actual output from GDB to avoid overfull
33131 @c box in TeX.
33132 @smallexample
33133 (gdb)
33134 -gdb-version
33135 ~GNU gdb 5.2.1
33136 ~Copyright 2000 Free Software Foundation, Inc.
33137 ~GDB is free software, covered by the GNU General Public License, and
33138 ~you are welcome to change it and/or distribute copies of it under
33139 ~ certain conditions.
33140 ~Type "show copying" to see the conditions.
33141 ~There is absolutely no warranty for GDB. Type "show warranty" for
33142 ~ details.
33143 ~This GDB was configured as
33144 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
33145 ^done
33146 (gdb)
33147 @end smallexample
33148
33149 @subheading The @code{-list-thread-groups} Command
33150 @findex -list-thread-groups
33151
33152 @subheading Synopsis
33153
33154 @smallexample
33155 -list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
33156 @end smallexample
33157
33158 Lists thread groups (@pxref{Thread groups}). When a single thread
33159 group is passed as the argument, lists the children of that group.
33160 When several thread group are passed, lists information about those
33161 thread groups. Without any parameters, lists information about all
33162 top-level thread groups.
33163
33164 Normally, thread groups that are being debugged are reported.
33165 With the @samp{--available} option, @value{GDBN} reports thread groups
33166 available on the target.
33167
33168 The output of this command may have either a @samp{threads} result or
33169 a @samp{groups} result. The @samp{thread} result has a list of tuples
33170 as value, with each tuple describing a thread (@pxref{GDB/MI Thread
33171 Information}). The @samp{groups} result has a list of tuples as value,
33172 each tuple describing a thread group. If top-level groups are
33173 requested (that is, no parameter is passed), or when several groups
33174 are passed, the output always has a @samp{groups} result. The format
33175 of the @samp{group} result is described below.
33176
33177 To reduce the number of roundtrips it's possible to list thread groups
33178 together with their children, by passing the @samp{--recurse} option
33179 and the recursion depth. Presently, only recursion depth of 1 is
33180 permitted. If this option is present, then every reported thread group
33181 will also include its children, either as @samp{group} or
33182 @samp{threads} field.
33183
33184 In general, any combination of option and parameters is permitted, with
33185 the following caveats:
33186
33187 @itemize @bullet
33188 @item
33189 When a single thread group is passed, the output will typically
33190 be the @samp{threads} result. Because threads may not contain
33191 anything, the @samp{recurse} option will be ignored.
33192
33193 @item
33194 When the @samp{--available} option is passed, limited information may
33195 be available. In particular, the list of threads of a process might
33196 be inaccessible. Further, specifying specific thread groups might
33197 not give any performance advantage over listing all thread groups.
33198 The frontend should assume that @samp{-list-thread-groups --available}
33199 is always an expensive operation and cache the results.
33200
33201 @end itemize
33202
33203 The @samp{groups} result is a list of tuples, where each tuple may
33204 have the following fields:
33205
33206 @table @code
33207 @item id
33208 Identifier of the thread group. This field is always present.
33209 The identifier is an opaque string; frontends should not try to
33210 convert it to an integer, even though it might look like one.
33211
33212 @item type
33213 The type of the thread group. At present, only @samp{process} is a
33214 valid type.
33215
33216 @item pid
33217 The target-specific process identifier. This field is only present
33218 for thread groups of type @samp{process} and only if the process exists.
33219
33220 @item exit-code
33221 The exit code of this group's last exited thread, formatted in octal.
33222 This field is only present for thread groups of type @samp{process} and
33223 only if the process is not running.
33224
33225 @item num_children
33226 The number of children this thread group has. This field may be
33227 absent for an available thread group.
33228
33229 @item threads
33230 This field has a list of tuples as value, each tuple describing a
33231 thread. It may be present if the @samp{--recurse} option is
33232 specified, and it's actually possible to obtain the threads.
33233
33234 @item cores
33235 This field is a list of integers, each identifying a core that one
33236 thread of the group is running on. This field may be absent if
33237 such information is not available.
33238
33239 @item executable
33240 The name of the executable file that corresponds to this thread group.
33241 The field is only present for thread groups of type @samp{process},
33242 and only if there is a corresponding executable file.
33243
33244 @end table
33245
33246 @subheading Example
33247
33248 @smallexample
33249 @value{GDBP}
33250 -list-thread-groups
33251 ^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
33252 -list-thread-groups 17
33253 ^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
33254 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
33255 @{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
33256 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
33257 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
33258 -list-thread-groups --available
33259 ^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
33260 -list-thread-groups --available --recurse 1
33261 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
33262 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
33263 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
33264 -list-thread-groups --available --recurse 1 17 18
33265 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
33266 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
33267 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
33268 @end smallexample
33269
33270 @subheading The @code{-info-os} Command
33271 @findex -info-os
33272
33273 @subsubheading Synopsis
33274
33275 @smallexample
33276 -info-os [ @var{type} ]
33277 @end smallexample
33278
33279 If no argument is supplied, the command returns a table of available
33280 operating-system-specific information types. If one of these types is
33281 supplied as an argument @var{type}, then the command returns a table
33282 of data of that type.
33283
33284 The types of information available depend on the target operating
33285 system.
33286
33287 @subsubheading @value{GDBN} Command
33288
33289 The corresponding @value{GDBN} command is @samp{info os}.
33290
33291 @subsubheading Example
33292
33293 When run on a @sc{gnu}/Linux system, the output will look something
33294 like this:
33295
33296 @smallexample
33297 @value{GDBP}
33298 -info-os
33299 ^done,OSDataTable=@{nr_rows="10",nr_cols="3",
33300 hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@},
33301 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@},
33302 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}],
33303 body=[item=@{col0="cpus",col1="Listing of all cpus/cores on the system",
33304 col2="CPUs"@},
33305 item=@{col0="files",col1="Listing of all file descriptors",
33306 col2="File descriptors"@},
33307 item=@{col0="modules",col1="Listing of all loaded kernel modules",
33308 col2="Kernel modules"@},
33309 item=@{col0="msg",col1="Listing of all message queues",
33310 col2="Message queues"@},
33311 item=@{col0="processes",col1="Listing of all processes",
33312 col2="Processes"@},
33313 item=@{col0="procgroups",col1="Listing of all process groups",
33314 col2="Process groups"@},
33315 item=@{col0="semaphores",col1="Listing of all semaphores",
33316 col2="Semaphores"@},
33317 item=@{col0="shm",col1="Listing of all shared-memory regions",
33318 col2="Shared-memory regions"@},
33319 item=@{col0="sockets",col1="Listing of all internet-domain sockets",
33320 col2="Sockets"@},
33321 item=@{col0="threads",col1="Listing of all threads",
33322 col2="Threads"@}]
33323 @value{GDBP}
33324 -info-os processes
33325 ^done,OSDataTable=@{nr_rows="190",nr_cols="4",
33326 hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@},
33327 @{width="10",alignment="-1",col_name="col1",colhdr="user"@},
33328 @{width="10",alignment="-1",col_name="col2",colhdr="command"@},
33329 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}],
33330 body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@},
33331 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@},
33332 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@},
33333 ...
33334 item=@{col0="26446",col1="stan",col2="bash",col3="0"@},
33335 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@}
33336 (gdb)
33337 @end smallexample
33338
33339 (Note that the MI output here includes a @code{"Title"} column that
33340 does not appear in command-line @code{info os}; this column is useful
33341 for MI clients that want to enumerate the types of data, such as in a
33342 popup menu, but is needless clutter on the command line, and
33343 @code{info os} omits it.)
33344
33345 @subheading The @code{-add-inferior} Command
33346 @findex -add-inferior
33347
33348 @subheading Synopsis
33349
33350 @smallexample
33351 -add-inferior
33352 @end smallexample
33353
33354 Creates a new inferior (@pxref{Inferiors and Programs}). The created
33355 inferior is not associated with any executable. Such association may
33356 be established with the @samp{-file-exec-and-symbols} command
33357 (@pxref{GDB/MI File Commands}). The command response has a single
33358 field, @samp{inferior}, whose value is the identifier of the
33359 thread group corresponding to the new inferior.
33360
33361 @subheading Example
33362
33363 @smallexample
33364 @value{GDBP}
33365 -add-inferior
33366 ^done,inferior="i3"
33367 @end smallexample
33368
33369 @subheading The @code{-interpreter-exec} Command
33370 @findex -interpreter-exec
33371
33372 @subheading Synopsis
33373
33374 @smallexample
33375 -interpreter-exec @var{interpreter} @var{command}
33376 @end smallexample
33377 @anchor{-interpreter-exec}
33378
33379 Execute the specified @var{command} in the given @var{interpreter}.
33380
33381 @subheading @value{GDBN} Command
33382
33383 The corresponding @value{GDBN} command is @samp{interpreter-exec}.
33384
33385 @subheading Example
33386
33387 @smallexample
33388 (gdb)
33389 -interpreter-exec console "break main"
33390 &"During symbol reading, couldn't parse type; debugger out of date?.\n"
33391 &"During symbol reading, bad structure-type format.\n"
33392 ~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
33393 ^done
33394 (gdb)
33395 @end smallexample
33396
33397 @subheading The @code{-inferior-tty-set} Command
33398 @findex -inferior-tty-set
33399
33400 @subheading Synopsis
33401
33402 @smallexample
33403 -inferior-tty-set /dev/pts/1
33404 @end smallexample
33405
33406 Set terminal for future runs of the program being debugged.
33407
33408 @subheading @value{GDBN} Command
33409
33410 The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
33411
33412 @subheading Example
33413
33414 @smallexample
33415 (gdb)
33416 -inferior-tty-set /dev/pts/1
33417 ^done
33418 (gdb)
33419 @end smallexample
33420
33421 @subheading The @code{-inferior-tty-show} Command
33422 @findex -inferior-tty-show
33423
33424 @subheading Synopsis
33425
33426 @smallexample
33427 -inferior-tty-show
33428 @end smallexample
33429
33430 Show terminal for future runs of program being debugged.
33431
33432 @subheading @value{GDBN} Command
33433
33434 The corresponding @value{GDBN} command is @samp{show inferior-tty}.
33435
33436 @subheading Example
33437
33438 @smallexample
33439 (gdb)
33440 -inferior-tty-set /dev/pts/1
33441 ^done
33442 (gdb)
33443 -inferior-tty-show
33444 ^done,inferior_tty_terminal="/dev/pts/1"
33445 (gdb)
33446 @end smallexample
33447
33448 @subheading The @code{-enable-timings} Command
33449 @findex -enable-timings
33450
33451 @subheading Synopsis
33452
33453 @smallexample
33454 -enable-timings [yes | no]
33455 @end smallexample
33456
33457 Toggle the printing of the wallclock, user and system times for an MI
33458 command as a field in its output. This command is to help frontend
33459 developers optimize the performance of their code. No argument is
33460 equivalent to @samp{yes}.
33461
33462 @subheading @value{GDBN} Command
33463
33464 No equivalent.
33465
33466 @subheading Example
33467
33468 @smallexample
33469 (gdb)
33470 -enable-timings
33471 ^done
33472 (gdb)
33473 -break-insert main
33474 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
33475 addr="0x080484ed",func="main",file="myprog.c",
33476 fullname="/home/nickrob/myprog.c",line="73",thread-groups=["i1"],
33477 times="0"@},
33478 time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
33479 (gdb)
33480 -enable-timings no
33481 ^done
33482 (gdb)
33483 -exec-run
33484 ^running
33485 (gdb)
33486 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
33487 frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
33488 @{name="argv",value="0xbfb60364"@}],file="myprog.c",
33489 fullname="/home/nickrob/myprog.c",line="73"@}
33490 (gdb)
33491 @end smallexample
33492
33493 @node Annotations
33494 @chapter @value{GDBN} Annotations
33495
33496 This chapter describes annotations in @value{GDBN}. Annotations were
33497 designed to interface @value{GDBN} to graphical user interfaces or other
33498 similar programs which want to interact with @value{GDBN} at a
33499 relatively high level.
33500
33501 The annotation mechanism has largely been superseded by @sc{gdb/mi}
33502 (@pxref{GDB/MI}).
33503
33504 @ignore
33505 This is Edition @value{EDITION}, @value{DATE}.
33506 @end ignore
33507
33508 @menu
33509 * Annotations Overview:: What annotations are; the general syntax.
33510 * Server Prefix:: Issuing a command without affecting user state.
33511 * Prompting:: Annotations marking @value{GDBN}'s need for input.
33512 * Errors:: Annotations for error messages.
33513 * Invalidation:: Some annotations describe things now invalid.
33514 * Annotations for Running::
33515 Whether the program is running, how it stopped, etc.
33516 * Source Annotations:: Annotations describing source code.
33517 @end menu
33518
33519 @node Annotations Overview
33520 @section What is an Annotation?
33521 @cindex annotations
33522
33523 Annotations start with a newline character, two @samp{control-z}
33524 characters, and the name of the annotation. If there is no additional
33525 information associated with this annotation, the name of the annotation
33526 is followed immediately by a newline. If there is additional
33527 information, the name of the annotation is followed by a space, the
33528 additional information, and a newline. The additional information
33529 cannot contain newline characters.
33530
33531 Any output not beginning with a newline and two @samp{control-z}
33532 characters denotes literal output from @value{GDBN}. Currently there is
33533 no need for @value{GDBN} to output a newline followed by two
33534 @samp{control-z} characters, but if there was such a need, the
33535 annotations could be extended with an @samp{escape} annotation which
33536 means those three characters as output.
33537
33538 The annotation @var{level}, which is specified using the
33539 @option{--annotate} command line option (@pxref{Mode Options}), controls
33540 how much information @value{GDBN} prints together with its prompt,
33541 values of expressions, source lines, and other types of output. Level 0
33542 is for no annotations, level 1 is for use when @value{GDBN} is run as a
33543 subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
33544 for programs that control @value{GDBN}, and level 2 annotations have
33545 been made obsolete (@pxref{Limitations, , Limitations of the Annotation
33546 Interface, annotate, GDB's Obsolete Annotations}).
33547
33548 @table @code
33549 @kindex set annotate
33550 @item set annotate @var{level}
33551 The @value{GDBN} command @code{set annotate} sets the level of
33552 annotations to the specified @var{level}.
33553
33554 @item show annotate
33555 @kindex show annotate
33556 Show the current annotation level.
33557 @end table
33558
33559 This chapter describes level 3 annotations.
33560
33561 A simple example of starting up @value{GDBN} with annotations is:
33562
33563 @smallexample
33564 $ @kbd{gdb --annotate=3}
33565 GNU gdb 6.0
33566 Copyright 2003 Free Software Foundation, Inc.
33567 GDB is free software, covered by the GNU General Public License,
33568 and you are welcome to change it and/or distribute copies of it
33569 under certain conditions.
33570 Type "show copying" to see the conditions.
33571 There is absolutely no warranty for GDB. Type "show warranty"
33572 for details.
33573 This GDB was configured as "i386-pc-linux-gnu"
33574
33575 ^Z^Zpre-prompt
33576 (@value{GDBP})
33577 ^Z^Zprompt
33578 @kbd{quit}
33579
33580 ^Z^Zpost-prompt
33581 $
33582 @end smallexample
33583
33584 Here @samp{quit} is input to @value{GDBN}; the rest is output from
33585 @value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
33586 denotes a @samp{control-z} character) are annotations; the rest is
33587 output from @value{GDBN}.
33588
33589 @node Server Prefix
33590 @section The Server Prefix
33591 @cindex server prefix
33592
33593 If you prefix a command with @samp{server } then it will not affect
33594 the command history, nor will it affect @value{GDBN}'s notion of which
33595 command to repeat if @key{RET} is pressed on a line by itself. This
33596 means that commands can be run behind a user's back by a front-end in
33597 a transparent manner.
33598
33599 The @code{server } prefix does not affect the recording of values into
33600 the value history; to print a value without recording it into the
33601 value history, use the @code{output} command instead of the
33602 @code{print} command.
33603
33604 Using this prefix also disables confirmation requests
33605 (@pxref{confirmation requests}).
33606
33607 @node Prompting
33608 @section Annotation for @value{GDBN} Input
33609
33610 @cindex annotations for prompts
33611 When @value{GDBN} prompts for input, it annotates this fact so it is possible
33612 to know when to send output, when the output from a given command is
33613 over, etc.
33614
33615 Different kinds of input each have a different @dfn{input type}. Each
33616 input type has three annotations: a @code{pre-} annotation, which
33617 denotes the beginning of any prompt which is being output, a plain
33618 annotation, which denotes the end of the prompt, and then a @code{post-}
33619 annotation which denotes the end of any echo which may (or may not) be
33620 associated with the input. For example, the @code{prompt} input type
33621 features the following annotations:
33622
33623 @smallexample
33624 ^Z^Zpre-prompt
33625 ^Z^Zprompt
33626 ^Z^Zpost-prompt
33627 @end smallexample
33628
33629 The input types are
33630
33631 @table @code
33632 @findex pre-prompt annotation
33633 @findex prompt annotation
33634 @findex post-prompt annotation
33635 @item prompt
33636 When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
33637
33638 @findex pre-commands annotation
33639 @findex commands annotation
33640 @findex post-commands annotation
33641 @item commands
33642 When @value{GDBN} prompts for a set of commands, like in the @code{commands}
33643 command. The annotations are repeated for each command which is input.
33644
33645 @findex pre-overload-choice annotation
33646 @findex overload-choice annotation
33647 @findex post-overload-choice annotation
33648 @item overload-choice
33649 When @value{GDBN} wants the user to select between various overloaded functions.
33650
33651 @findex pre-query annotation
33652 @findex query annotation
33653 @findex post-query annotation
33654 @item query
33655 When @value{GDBN} wants the user to confirm a potentially dangerous operation.
33656
33657 @findex pre-prompt-for-continue annotation
33658 @findex prompt-for-continue annotation
33659 @findex post-prompt-for-continue annotation
33660 @item prompt-for-continue
33661 When @value{GDBN} is asking the user to press return to continue. Note: Don't
33662 expect this to work well; instead use @code{set height 0} to disable
33663 prompting. This is because the counting of lines is buggy in the
33664 presence of annotations.
33665 @end table
33666
33667 @node Errors
33668 @section Errors
33669 @cindex annotations for errors, warnings and interrupts
33670
33671 @findex quit annotation
33672 @smallexample
33673 ^Z^Zquit
33674 @end smallexample
33675
33676 This annotation occurs right before @value{GDBN} responds to an interrupt.
33677
33678 @findex error annotation
33679 @smallexample
33680 ^Z^Zerror
33681 @end smallexample
33682
33683 This annotation occurs right before @value{GDBN} responds to an error.
33684
33685 Quit and error annotations indicate that any annotations which @value{GDBN} was
33686 in the middle of may end abruptly. For example, if a
33687 @code{value-history-begin} annotation is followed by a @code{error}, one
33688 cannot expect to receive the matching @code{value-history-end}. One
33689 cannot expect not to receive it either, however; an error annotation
33690 does not necessarily mean that @value{GDBN} is immediately returning all the way
33691 to the top level.
33692
33693 @findex error-begin annotation
33694 A quit or error annotation may be preceded by
33695
33696 @smallexample
33697 ^Z^Zerror-begin
33698 @end smallexample
33699
33700 Any output between that and the quit or error annotation is the error
33701 message.
33702
33703 Warning messages are not yet annotated.
33704 @c If we want to change that, need to fix warning(), type_error(),
33705 @c range_error(), and possibly other places.
33706
33707 @node Invalidation
33708 @section Invalidation Notices
33709
33710 @cindex annotations for invalidation messages
33711 The following annotations say that certain pieces of state may have
33712 changed.
33713
33714 @table @code
33715 @findex frames-invalid annotation
33716 @item ^Z^Zframes-invalid
33717
33718 The frames (for example, output from the @code{backtrace} command) may
33719 have changed.
33720
33721 @findex breakpoints-invalid annotation
33722 @item ^Z^Zbreakpoints-invalid
33723
33724 The breakpoints may have changed. For example, the user just added or
33725 deleted a breakpoint.
33726 @end table
33727
33728 @node Annotations for Running
33729 @section Running the Program
33730 @cindex annotations for running programs
33731
33732 @findex starting annotation
33733 @findex stopping annotation
33734 When the program starts executing due to a @value{GDBN} command such as
33735 @code{step} or @code{continue},
33736
33737 @smallexample
33738 ^Z^Zstarting
33739 @end smallexample
33740
33741 is output. When the program stops,
33742
33743 @smallexample
33744 ^Z^Zstopped
33745 @end smallexample
33746
33747 is output. Before the @code{stopped} annotation, a variety of
33748 annotations describe how the program stopped.
33749
33750 @table @code
33751 @findex exited annotation
33752 @item ^Z^Zexited @var{exit-status}
33753 The program exited, and @var{exit-status} is the exit status (zero for
33754 successful exit, otherwise nonzero).
33755
33756 @findex signalled annotation
33757 @findex signal-name annotation
33758 @findex signal-name-end annotation
33759 @findex signal-string annotation
33760 @findex signal-string-end annotation
33761 @item ^Z^Zsignalled
33762 The program exited with a signal. After the @code{^Z^Zsignalled}, the
33763 annotation continues:
33764
33765 @smallexample
33766 @var{intro-text}
33767 ^Z^Zsignal-name
33768 @var{name}
33769 ^Z^Zsignal-name-end
33770 @var{middle-text}
33771 ^Z^Zsignal-string
33772 @var{string}
33773 ^Z^Zsignal-string-end
33774 @var{end-text}
33775 @end smallexample
33776
33777 @noindent
33778 where @var{name} is the name of the signal, such as @code{SIGILL} or
33779 @code{SIGSEGV}, and @var{string} is the explanation of the signal, such
33780 as @code{Illegal Instruction} or @code{Segmentation fault}. The arguments
33781 @var{intro-text}, @var{middle-text}, and @var{end-text} are for the
33782 user's benefit and have no particular format.
33783
33784 @findex signal annotation
33785 @item ^Z^Zsignal
33786 The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
33787 just saying that the program received the signal, not that it was
33788 terminated with it.
33789
33790 @findex breakpoint annotation
33791 @item ^Z^Zbreakpoint @var{number}
33792 The program hit breakpoint number @var{number}.
33793
33794 @findex watchpoint annotation
33795 @item ^Z^Zwatchpoint @var{number}
33796 The program hit watchpoint number @var{number}.
33797 @end table
33798
33799 @node Source Annotations
33800 @section Displaying Source
33801 @cindex annotations for source display
33802
33803 @findex source annotation
33804 The following annotation is used instead of displaying source code:
33805
33806 @smallexample
33807 ^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
33808 @end smallexample
33809
33810 where @var{filename} is an absolute file name indicating which source
33811 file, @var{line} is the line number within that file (where 1 is the
33812 first line in the file), @var{character} is the character position
33813 within the file (where 0 is the first character in the file) (for most
33814 debug formats this will necessarily point to the beginning of a line),
33815 @var{middle} is @samp{middle} if @var{addr} is in the middle of the
33816 line, or @samp{beg} if @var{addr} is at the beginning of the line, and
33817 @var{addr} is the address in the target program associated with the
33818 source which is being displayed. The @var{addr} is in the form @samp{0x}
33819 followed by one or more lowercase hex digits (note that this does not
33820 depend on the language).
33821
33822 @node JIT Interface
33823 @chapter JIT Compilation Interface
33824 @cindex just-in-time compilation
33825 @cindex JIT compilation interface
33826
33827 This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
33828 interface. A JIT compiler is a program or library that generates native
33829 executable code at runtime and executes it, usually in order to achieve good
33830 performance while maintaining platform independence.
33831
33832 Programs that use JIT compilation are normally difficult to debug because
33833 portions of their code are generated at runtime, instead of being loaded from
33834 object files, which is where @value{GDBN} normally finds the program's symbols
33835 and debug information. In order to debug programs that use JIT compilation,
33836 @value{GDBN} has an interface that allows the program to register in-memory
33837 symbol files with @value{GDBN} at runtime.
33838
33839 If you are using @value{GDBN} to debug a program that uses this interface, then
33840 it should work transparently so long as you have not stripped the binary. If
33841 you are developing a JIT compiler, then the interface is documented in the rest
33842 of this chapter. At this time, the only known client of this interface is the
33843 LLVM JIT.
33844
33845 Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
33846 JIT compiler communicates with @value{GDBN} by writing data into a global
33847 variable and calling a fuction at a well-known symbol. When @value{GDBN}
33848 attaches, it reads a linked list of symbol files from the global variable to
33849 find existing code, and puts a breakpoint in the function so that it can find
33850 out about additional code.
33851
33852 @menu
33853 * Declarations:: Relevant C struct declarations
33854 * Registering Code:: Steps to register code
33855 * Unregistering Code:: Steps to unregister code
33856 * Custom Debug Info:: Emit debug information in a custom format
33857 @end menu
33858
33859 @node Declarations
33860 @section JIT Declarations
33861
33862 These are the relevant struct declarations that a C program should include to
33863 implement the interface:
33864
33865 @smallexample
33866 typedef enum
33867 @{
33868 JIT_NOACTION = 0,
33869 JIT_REGISTER_FN,
33870 JIT_UNREGISTER_FN
33871 @} jit_actions_t;
33872
33873 struct jit_code_entry
33874 @{
33875 struct jit_code_entry *next_entry;
33876 struct jit_code_entry *prev_entry;
33877 const char *symfile_addr;
33878 uint64_t symfile_size;
33879 @};
33880
33881 struct jit_descriptor
33882 @{
33883 uint32_t version;
33884 /* This type should be jit_actions_t, but we use uint32_t
33885 to be explicit about the bitwidth. */
33886 uint32_t action_flag;
33887 struct jit_code_entry *relevant_entry;
33888 struct jit_code_entry *first_entry;
33889 @};
33890
33891 /* GDB puts a breakpoint in this function. */
33892 void __attribute__((noinline)) __jit_debug_register_code() @{ @};
33893
33894 /* Make sure to specify the version statically, because the
33895 debugger may check the version before we can set it. */
33896 struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
33897 @end smallexample
33898
33899 If the JIT is multi-threaded, then it is important that the JIT synchronize any
33900 modifications to this global data properly, which can easily be done by putting
33901 a global mutex around modifications to these structures.
33902
33903 @node Registering Code
33904 @section Registering Code
33905
33906 To register code with @value{GDBN}, the JIT should follow this protocol:
33907
33908 @itemize @bullet
33909 @item
33910 Generate an object file in memory with symbols and other desired debug
33911 information. The file must include the virtual addresses of the sections.
33912
33913 @item
33914 Create a code entry for the file, which gives the start and size of the symbol
33915 file.
33916
33917 @item
33918 Add it to the linked list in the JIT descriptor.
33919
33920 @item
33921 Point the relevant_entry field of the descriptor at the entry.
33922
33923 @item
33924 Set @code{action_flag} to @code{JIT_REGISTER} and call
33925 @code{__jit_debug_register_code}.
33926 @end itemize
33927
33928 When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
33929 @code{relevant_entry} pointer so it doesn't have to walk the list looking for
33930 new code. However, the linked list must still be maintained in order to allow
33931 @value{GDBN} to attach to a running process and still find the symbol files.
33932
33933 @node Unregistering Code
33934 @section Unregistering Code
33935
33936 If code is freed, then the JIT should use the following protocol:
33937
33938 @itemize @bullet
33939 @item
33940 Remove the code entry corresponding to the code from the linked list.
33941
33942 @item
33943 Point the @code{relevant_entry} field of the descriptor at the code entry.
33944
33945 @item
33946 Set @code{action_flag} to @code{JIT_UNREGISTER} and call
33947 @code{__jit_debug_register_code}.
33948 @end itemize
33949
33950 If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
33951 and the JIT will leak the memory used for the associated symbol files.
33952
33953 @node Custom Debug Info
33954 @section Custom Debug Info
33955 @cindex custom JIT debug info
33956 @cindex JIT debug info reader
33957
33958 Generating debug information in platform-native file formats (like ELF
33959 or COFF) may be an overkill for JIT compilers; especially if all the
33960 debug info is used for is displaying a meaningful backtrace. The
33961 issue can be resolved by having the JIT writers decide on a debug info
33962 format and also provide a reader that parses the debug info generated
33963 by the JIT compiler. This section gives a brief overview on writing
33964 such a parser. More specific details can be found in the source file
33965 @file{gdb/jit-reader.in}, which is also installed as a header at
33966 @file{@var{includedir}/gdb/jit-reader.h} for easy inclusion.
33967
33968 The reader is implemented as a shared object (so this functionality is
33969 not available on platforms which don't allow loading shared objects at
33970 runtime). Two @value{GDBN} commands, @code{jit-reader-load} and
33971 @code{jit-reader-unload} are provided, to be used to load and unload
33972 the readers from a preconfigured directory. Once loaded, the shared
33973 object is used the parse the debug information emitted by the JIT
33974 compiler.
33975
33976 @menu
33977 * Using JIT Debug Info Readers:: How to use supplied readers correctly
33978 * Writing JIT Debug Info Readers:: Creating a debug-info reader
33979 @end menu
33980
33981 @node Using JIT Debug Info Readers
33982 @subsection Using JIT Debug Info Readers
33983 @kindex jit-reader-load
33984 @kindex jit-reader-unload
33985
33986 Readers can be loaded and unloaded using the @code{jit-reader-load}
33987 and @code{jit-reader-unload} commands.
33988
33989 @table @code
33990 @item jit-reader-load @var{reader}
33991 Load the JIT reader named @var{reader}, which is a shared
33992 object specified as either an absolute or a relative file name. In
33993 the latter case, @value{GDBN} will try to load the reader from a
33994 pre-configured directory, usually @file{@var{libdir}/gdb/} on a UNIX
33995 system (here @var{libdir} is the system library directory, often
33996 @file{/usr/local/lib}).
33997
33998 Only one reader can be active at a time; trying to load a second
33999 reader when one is already loaded will result in @value{GDBN}
34000 reporting an error. A new JIT reader can be loaded by first unloading
34001 the current one using @code{jit-reader-unload} and then invoking
34002 @code{jit-reader-load}.
34003
34004 @item jit-reader-unload
34005 Unload the currently loaded JIT reader.
34006
34007 @end table
34008
34009 @node Writing JIT Debug Info Readers
34010 @subsection Writing JIT Debug Info Readers
34011 @cindex writing JIT debug info readers
34012
34013 As mentioned, a reader is essentially a shared object conforming to a
34014 certain ABI. This ABI is described in @file{jit-reader.h}.
34015
34016 @file{jit-reader.h} defines the structures, macros and functions
34017 required to write a reader. It is installed (along with
34018 @value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is
34019 the system include directory.
34020
34021 Readers need to be released under a GPL compatible license. A reader
34022 can be declared as released under such a license by placing the macro
34023 @code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file.
34024
34025 The entry point for readers is the symbol @code{gdb_init_reader},
34026 which is expected to be a function with the prototype
34027
34028 @findex gdb_init_reader
34029 @smallexample
34030 extern struct gdb_reader_funcs *gdb_init_reader (void);
34031 @end smallexample
34032
34033 @cindex @code{struct gdb_reader_funcs}
34034
34035 @code{struct gdb_reader_funcs} contains a set of pointers to callback
34036 functions. These functions are executed to read the debug info
34037 generated by the JIT compiler (@code{read}), to unwind stack frames
34038 (@code{unwind}) and to create canonical frame IDs
34039 (@code{get_Frame_id}). It also has a callback that is called when the
34040 reader is being unloaded (@code{destroy}). The struct looks like this
34041
34042 @smallexample
34043 struct gdb_reader_funcs
34044 @{
34045 /* Must be set to GDB_READER_INTERFACE_VERSION. */
34046 int reader_version;
34047
34048 /* For use by the reader. */
34049 void *priv_data;
34050
34051 gdb_read_debug_info *read;
34052 gdb_unwind_frame *unwind;
34053 gdb_get_frame_id *get_frame_id;
34054 gdb_destroy_reader *destroy;
34055 @};
34056 @end smallexample
34057
34058 @cindex @code{struct gdb_symbol_callbacks}
34059 @cindex @code{struct gdb_unwind_callbacks}
34060
34061 The callbacks are provided with another set of callbacks by
34062 @value{GDBN} to do their job. For @code{read}, these callbacks are
34063 passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind}
34064 and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}.
34065 @code{struct gdb_symbol_callbacks} has callbacks to create new object
34066 files and new symbol tables inside those object files. @code{struct
34067 gdb_unwind_callbacks} has callbacks to read registers off the current
34068 frame and to write out the values of the registers in the previous
34069 frame. Both have a callback (@code{target_read}) to read bytes off the
34070 target's address space.
34071
34072 @node In-Process Agent
34073 @chapter In-Process Agent
34074 @cindex debugging agent
34075 The traditional debugging model is conceptually low-speed, but works fine,
34076 because most bugs can be reproduced in debugging-mode execution. However,
34077 as multi-core or many-core processors are becoming mainstream, and
34078 multi-threaded programs become more and more popular, there should be more
34079 and more bugs that only manifest themselves at normal-mode execution, for
34080 example, thread races, because debugger's interference with the program's
34081 timing may conceal the bugs. On the other hand, in some applications,
34082 it is not feasible for the debugger to interrupt the program's execution
34083 long enough for the developer to learn anything helpful about its behavior.
34084 If the program's correctness depends on its real-time behavior, delays
34085 introduced by a debugger might cause the program to fail, even when the
34086 code itself is correct. It is useful to be able to observe the program's
34087 behavior without interrupting it.
34088
34089 Therefore, traditional debugging model is too intrusive to reproduce
34090 some bugs. In order to reduce the interference with the program, we can
34091 reduce the number of operations performed by debugger. The
34092 @dfn{In-Process Agent}, a shared library, is running within the same
34093 process with inferior, and is able to perform some debugging operations
34094 itself. As a result, debugger is only involved when necessary, and
34095 performance of debugging can be improved accordingly. Note that
34096 interference with program can be reduced but can't be removed completely,
34097 because the in-process agent will still stop or slow down the program.
34098
34099 The in-process agent can interpret and execute Agent Expressions
34100 (@pxref{Agent Expressions}) during performing debugging operations. The
34101 agent expressions can be used for different purposes, such as collecting
34102 data in tracepoints, and condition evaluation in breakpoints.
34103
34104 @anchor{Control Agent}
34105 You can control whether the in-process agent is used as an aid for
34106 debugging with the following commands:
34107
34108 @table @code
34109 @kindex set agent on
34110 @item set agent on
34111 Causes the in-process agent to perform some operations on behalf of the
34112 debugger. Just which operations requested by the user will be done
34113 by the in-process agent depends on the its capabilities. For example,
34114 if you request to evaluate breakpoint conditions in the in-process agent,
34115 and the in-process agent has such capability as well, then breakpoint
34116 conditions will be evaluated in the in-process agent.
34117
34118 @kindex set agent off
34119 @item set agent off
34120 Disables execution of debugging operations by the in-process agent. All
34121 of the operations will be performed by @value{GDBN}.
34122
34123 @kindex show agent
34124 @item show agent
34125 Display the current setting of execution of debugging operations by
34126 the in-process agent.
34127 @end table
34128
34129 @menu
34130 * In-Process Agent Protocol::
34131 @end menu
34132
34133 @node In-Process Agent Protocol
34134 @section In-Process Agent Protocol
34135 @cindex in-process agent protocol
34136
34137 The in-process agent is able to communicate with both @value{GDBN} and
34138 GDBserver (@pxref{In-Process Agent}). This section documents the protocol
34139 used for communications between @value{GDBN} or GDBserver and the IPA.
34140 In general, @value{GDBN} or GDBserver sends commands
34141 (@pxref{IPA Protocol Commands}) and data to in-process agent, and then
34142 in-process agent replies back with the return result of the command, or
34143 some other information. The data sent to in-process agent is composed
34144 of primitive data types, such as 4-byte or 8-byte type, and composite
34145 types, which are called objects (@pxref{IPA Protocol Objects}).
34146
34147 @menu
34148 * IPA Protocol Objects::
34149 * IPA Protocol Commands::
34150 @end menu
34151
34152 @node IPA Protocol Objects
34153 @subsection IPA Protocol Objects
34154 @cindex ipa protocol objects
34155
34156 The commands sent to and results received from agent may contain some
34157 complex data types called @dfn{objects}.
34158
34159 The in-process agent is running on the same machine with @value{GDBN}
34160 or GDBserver, so it doesn't have to handle as much differences between
34161 two ends as remote protocol (@pxref{Remote Protocol}) tries to handle.
34162 However, there are still some differences of two ends in two processes:
34163
34164 @enumerate
34165 @item
34166 word size. On some 64-bit machines, @value{GDBN} or GDBserver can be
34167 compiled as a 64-bit executable, while in-process agent is a 32-bit one.
34168 @item
34169 ABI. Some machines may have multiple types of ABI, @value{GDBN} or
34170 GDBserver is compiled with one, and in-process agent is compiled with
34171 the other one.
34172 @end enumerate
34173
34174 Here are the IPA Protocol Objects:
34175
34176 @enumerate
34177 @item
34178 agent expression object. It represents an agent expression
34179 (@pxref{Agent Expressions}).
34180 @anchor{agent expression object}
34181 @item
34182 tracepoint action object. It represents a tracepoint action
34183 (@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers,
34184 memory, static trace data and to evaluate expression.
34185 @anchor{tracepoint action object}
34186 @item
34187 tracepoint object. It represents a tracepoint (@pxref{Tracepoints}).
34188 @anchor{tracepoint object}
34189
34190 @end enumerate
34191
34192 The following table describes important attributes of each IPA protocol
34193 object:
34194
34195 @multitable @columnfractions .30 .20 .50
34196 @headitem Name @tab Size @tab Description
34197 @item @emph{agent expression object} @tab @tab
34198 @item length @tab 4 @tab length of bytes code
34199 @item byte code @tab @var{length} @tab contents of byte code
34200 @item @emph{tracepoint action for collecting memory} @tab @tab
34201 @item 'M' @tab 1 @tab type of tracepoint action
34202 @item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the
34203 address of the lowest byte to collect, otherwise @var{addr} is the offset
34204 of @var{basereg} for memory collecting.
34205 @item len @tab 8 @tab length of memory for collecting
34206 @item basereg @tab 4 @tab the register number containing the starting
34207 memory address for collecting.
34208 @item @emph{tracepoint action for collecting registers} @tab @tab
34209 @item 'R' @tab 1 @tab type of tracepoint action
34210 @item @emph{tracepoint action for collecting static trace data} @tab @tab
34211 @item 'L' @tab 1 @tab type of tracepoint action
34212 @item @emph{tracepoint action for expression evaluation} @tab @tab
34213 @item 'X' @tab 1 @tab type of tracepoint action
34214 @item agent expression @tab length of @tab @ref{agent expression object}
34215 @item @emph{tracepoint object} @tab @tab
34216 @item number @tab 4 @tab number of tracepoint
34217 @item address @tab 8 @tab address of tracepoint inserted on
34218 @item type @tab 4 @tab type of tracepoint
34219 @item enabled @tab 1 @tab enable or disable of tracepoint
34220 @item step_count @tab 8 @tab step
34221 @item pass_count @tab 8 @tab pass
34222 @item numactions @tab 4 @tab number of tracepoint actions
34223 @item hit count @tab 8 @tab hit count
34224 @item trace frame usage @tab 8 @tab trace frame usage
34225 @item compiled_cond @tab 8 @tab compiled condition
34226 @item orig_size @tab 8 @tab orig size
34227 @item condition @tab 4 if condition is NULL otherwise length of
34228 @ref{agent expression object}
34229 @tab zero if condition is NULL, otherwise is
34230 @ref{agent expression object}
34231 @item actions @tab variable
34232 @tab numactions number of @ref{tracepoint action object}
34233 @end multitable
34234
34235 @node IPA Protocol Commands
34236 @subsection IPA Protocol Commands
34237 @cindex ipa protocol commands
34238
34239 The spaces in each command are delimiters to ease reading this commands
34240 specification. They don't exist in real commands.
34241
34242 @table @samp
34243
34244 @item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head}
34245 Installs a new fast tracepoint described by @var{tracepoint_object}
34246 (@pxref{tracepoint object}). The @var{gdb_jump_pad_head}, 8-byte long, is the
34247 head of @dfn{jumppad}, which is used to jump to data collection routine
34248 in IPA finally.
34249
34250 Replies:
34251 @table @samp
34252 @item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump}
34253 @var{target_address} is address of tracepoint in the inferior.
34254 The @var{gdb_jump_pad_head} is updated head of jumppad. Both of
34255 @var{target_address} and @var{gdb_jump_pad_head} are 8-byte long.
34256 The @var{fjump} contains a sequence of instructions jump to jumppad entry.
34257 The @var{fjump_size}, 4-byte long, is the size of @var{fjump}.
34258 @item E @var{NN}
34259 for an error
34260
34261 @end table
34262
34263 @item close
34264 Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver
34265 is about to kill inferiors.
34266
34267 @item qTfSTM
34268 @xref{qTfSTM}.
34269 @item qTsSTM
34270 @xref{qTsSTM}.
34271 @item qTSTMat
34272 @xref{qTSTMat}.
34273 @item probe_marker_at:@var{address}
34274 Asks in-process agent to probe the marker at @var{address}.
34275
34276 Replies:
34277 @table @samp
34278 @item E @var{NN}
34279 for an error
34280 @end table
34281 @item unprobe_marker_at:@var{address}
34282 Asks in-process agent to unprobe the marker at @var{address}.
34283 @end table
34284
34285 @node GDB Bugs
34286 @chapter Reporting Bugs in @value{GDBN}
34287 @cindex bugs in @value{GDBN}
34288 @cindex reporting bugs in @value{GDBN}
34289
34290 Your bug reports play an essential role in making @value{GDBN} reliable.
34291
34292 Reporting a bug may help you by bringing a solution to your problem, or it
34293 may not. But in any case the principal function of a bug report is to help
34294 the entire community by making the next version of @value{GDBN} work better. Bug
34295 reports are your contribution to the maintenance of @value{GDBN}.
34296
34297 In order for a bug report to serve its purpose, you must include the
34298 information that enables us to fix the bug.
34299
34300 @menu
34301 * Bug Criteria:: Have you found a bug?
34302 * Bug Reporting:: How to report bugs
34303 @end menu
34304
34305 @node Bug Criteria
34306 @section Have You Found a Bug?
34307 @cindex bug criteria
34308
34309 If you are not sure whether you have found a bug, here are some guidelines:
34310
34311 @itemize @bullet
34312 @cindex fatal signal
34313 @cindex debugger crash
34314 @cindex crash of debugger
34315 @item
34316 If the debugger gets a fatal signal, for any input whatever, that is a
34317 @value{GDBN} bug. Reliable debuggers never crash.
34318
34319 @cindex error on valid input
34320 @item
34321 If @value{GDBN} produces an error message for valid input, that is a
34322 bug. (Note that if you're cross debugging, the problem may also be
34323 somewhere in the connection to the target.)
34324
34325 @cindex invalid input
34326 @item
34327 If @value{GDBN} does not produce an error message for invalid input,
34328 that is a bug. However, you should note that your idea of
34329 ``invalid input'' might be our idea of ``an extension'' or ``support
34330 for traditional practice''.
34331
34332 @item
34333 If you are an experienced user of debugging tools, your suggestions
34334 for improvement of @value{GDBN} are welcome in any case.
34335 @end itemize
34336
34337 @node Bug Reporting
34338 @section How to Report Bugs
34339 @cindex bug reports
34340 @cindex @value{GDBN} bugs, reporting
34341
34342 A number of companies and individuals offer support for @sc{gnu} products.
34343 If you obtained @value{GDBN} from a support organization, we recommend you
34344 contact that organization first.
34345
34346 You can find contact information for many support companies and
34347 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
34348 distribution.
34349 @c should add a web page ref...
34350
34351 @ifset BUGURL
34352 @ifset BUGURL_DEFAULT
34353 In any event, we also recommend that you submit bug reports for
34354 @value{GDBN}. The preferred method is to submit them directly using
34355 @uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
34356 page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
34357 be used.
34358
34359 @strong{Do not send bug reports to @samp{info-gdb}, or to
34360 @samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
34361 not want to receive bug reports. Those that do have arranged to receive
34362 @samp{bug-gdb}.
34363
34364 The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
34365 serves as a repeater. The mailing list and the newsgroup carry exactly
34366 the same messages. Often people think of posting bug reports to the
34367 newsgroup instead of mailing them. This appears to work, but it has one
34368 problem which can be crucial: a newsgroup posting often lacks a mail
34369 path back to the sender. Thus, if we need to ask for more information,
34370 we may be unable to reach you. For this reason, it is better to send
34371 bug reports to the mailing list.
34372 @end ifset
34373 @ifclear BUGURL_DEFAULT
34374 In any event, we also recommend that you submit bug reports for
34375 @value{GDBN} to @value{BUGURL}.
34376 @end ifclear
34377 @end ifset
34378
34379 The fundamental principle of reporting bugs usefully is this:
34380 @strong{report all the facts}. If you are not sure whether to state a
34381 fact or leave it out, state it!
34382
34383 Often people omit facts because they think they know what causes the
34384 problem and assume that some details do not matter. Thus, you might
34385 assume that the name of the variable you use in an example does not matter.
34386 Well, probably it does not, but one cannot be sure. Perhaps the bug is a
34387 stray memory reference which happens to fetch from the location where that
34388 name is stored in memory; perhaps, if the name were different, the contents
34389 of that location would fool the debugger into doing the right thing despite
34390 the bug. Play it safe and give a specific, complete example. That is the
34391 easiest thing for you to do, and the most helpful.
34392
34393 Keep in mind that the purpose of a bug report is to enable us to fix the
34394 bug. It may be that the bug has been reported previously, but neither
34395 you nor we can know that unless your bug report is complete and
34396 self-contained.
34397
34398 Sometimes people give a few sketchy facts and ask, ``Does this ring a
34399 bell?'' Those bug reports are useless, and we urge everyone to
34400 @emph{refuse to respond to them} except to chide the sender to report
34401 bugs properly.
34402
34403 To enable us to fix the bug, you should include all these things:
34404
34405 @itemize @bullet
34406 @item
34407 The version of @value{GDBN}. @value{GDBN} announces it if you start
34408 with no arguments; you can also print it at any time using @code{show
34409 version}.
34410
34411 Without this, we will not know whether there is any point in looking for
34412 the bug in the current version of @value{GDBN}.
34413
34414 @item
34415 The type of machine you are using, and the operating system name and
34416 version number.
34417
34418 @item
34419 The details of the @value{GDBN} build-time configuration.
34420 @value{GDBN} shows these details if you invoke it with the
34421 @option{--configuration} command-line option, or if you type
34422 @code{show configuration} at @value{GDBN}'s prompt.
34423
34424 @item
34425 What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
34426 ``@value{GCC}--2.8.1''.
34427
34428 @item
34429 What compiler (and its version) was used to compile the program you are
34430 debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
34431 C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
34432 to get this information; for other compilers, see the documentation for
34433 those compilers.
34434
34435 @item
34436 The command arguments you gave the compiler to compile your example and
34437 observe the bug. For example, did you use @samp{-O}? To guarantee
34438 you will not omit something important, list them all. A copy of the
34439 Makefile (or the output from make) is sufficient.
34440
34441 If we were to try to guess the arguments, we would probably guess wrong
34442 and then we might not encounter the bug.
34443
34444 @item
34445 A complete input script, and all necessary source files, that will
34446 reproduce the bug.
34447
34448 @item
34449 A description of what behavior you observe that you believe is
34450 incorrect. For example, ``It gets a fatal signal.''
34451
34452 Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
34453 will certainly notice it. But if the bug is incorrect output, we might
34454 not notice unless it is glaringly wrong. You might as well not give us
34455 a chance to make a mistake.
34456
34457 Even if the problem you experience is a fatal signal, you should still
34458 say so explicitly. Suppose something strange is going on, such as, your
34459 copy of @value{GDBN} is out of synch, or you have encountered a bug in
34460 the C library on your system. (This has happened!) Your copy might
34461 crash and ours would not. If you told us to expect a crash, then when
34462 ours fails to crash, we would know that the bug was not happening for
34463 us. If you had not told us to expect a crash, then we would not be able
34464 to draw any conclusion from our observations.
34465
34466 @pindex script
34467 @cindex recording a session script
34468 To collect all this information, you can use a session recording program
34469 such as @command{script}, which is available on many Unix systems.
34470 Just run your @value{GDBN} session inside @command{script} and then
34471 include the @file{typescript} file with your bug report.
34472
34473 Another way to record a @value{GDBN} session is to run @value{GDBN}
34474 inside Emacs and then save the entire buffer to a file.
34475
34476 @item
34477 If you wish to suggest changes to the @value{GDBN} source, send us context
34478 diffs. If you even discuss something in the @value{GDBN} source, refer to
34479 it by context, not by line number.
34480
34481 The line numbers in our development sources will not match those in your
34482 sources. Your line numbers would convey no useful information to us.
34483
34484 @end itemize
34485
34486 Here are some things that are not necessary:
34487
34488 @itemize @bullet
34489 @item
34490 A description of the envelope of the bug.
34491
34492 Often people who encounter a bug spend a lot of time investigating
34493 which changes to the input file will make the bug go away and which
34494 changes will not affect it.
34495
34496 This is often time consuming and not very useful, because the way we
34497 will find the bug is by running a single example under the debugger
34498 with breakpoints, not by pure deduction from a series of examples.
34499 We recommend that you save your time for something else.
34500
34501 Of course, if you can find a simpler example to report @emph{instead}
34502 of the original one, that is a convenience for us. Errors in the
34503 output will be easier to spot, running under the debugger will take
34504 less time, and so on.
34505
34506 However, simplification is not vital; if you do not want to do this,
34507 report the bug anyway and send us the entire test case you used.
34508
34509 @item
34510 A patch for the bug.
34511
34512 A patch for the bug does help us if it is a good one. But do not omit
34513 the necessary information, such as the test case, on the assumption that
34514 a patch is all we need. We might see problems with your patch and decide
34515 to fix the problem another way, or we might not understand it at all.
34516
34517 Sometimes with a program as complicated as @value{GDBN} it is very hard to
34518 construct an example that will make the program follow a certain path
34519 through the code. If you do not send us the example, we will not be able
34520 to construct one, so we will not be able to verify that the bug is fixed.
34521
34522 And if we cannot understand what bug you are trying to fix, or why your
34523 patch should be an improvement, we will not install it. A test case will
34524 help us to understand.
34525
34526 @item
34527 A guess about what the bug is or what it depends on.
34528
34529 Such guesses are usually wrong. Even we cannot guess right about such
34530 things without first using the debugger to find the facts.
34531 @end itemize
34532
34533 @c The readline documentation is distributed with the readline code
34534 @c and consists of the two following files:
34535 @c rluser.texi
34536 @c hsuser.texi
34537 @c Use -I with makeinfo to point to the appropriate directory,
34538 @c environment var TEXINPUTS with TeX.
34539 @ifclear SYSTEM_READLINE
34540 @include rluser.texi
34541 @include hsuser.texi
34542 @end ifclear
34543
34544 @node In Memoriam
34545 @appendix In Memoriam
34546
34547 The @value{GDBN} project mourns the loss of the following long-time
34548 contributors:
34549
34550 @table @code
34551 @item Fred Fish
34552 Fred was a long-standing contributor to @value{GDBN} (1991-2006), and
34553 to Free Software in general. Outside of @value{GDBN}, he was known in
34554 the Amiga world for his series of Fish Disks, and the GeekGadget project.
34555
34556 @item Michael Snyder
34557 Michael was one of the Global Maintainers of the @value{GDBN} project,
34558 with contributions recorded as early as 1996, until 2011. In addition
34559 to his day to day participation, he was a large driving force behind
34560 adding Reverse Debugging to @value{GDBN}.
34561 @end table
34562
34563 Beyond their technical contributions to the project, they were also
34564 enjoyable members of the Free Software Community. We will miss them.
34565
34566 @node Formatting Documentation
34567 @appendix Formatting Documentation
34568
34569 @cindex @value{GDBN} reference card
34570 @cindex reference card
34571 The @value{GDBN} 4 release includes an already-formatted reference card, ready
34572 for printing with PostScript or Ghostscript, in the @file{gdb}
34573 subdirectory of the main source directory@footnote{In
34574 @file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
34575 release.}. If you can use PostScript or Ghostscript with your printer,
34576 you can print the reference card immediately with @file{refcard.ps}.
34577
34578 The release also includes the source for the reference card. You
34579 can format it, using @TeX{}, by typing:
34580
34581 @smallexample
34582 make refcard.dvi
34583 @end smallexample
34584
34585 The @value{GDBN} reference card is designed to print in @dfn{landscape}
34586 mode on US ``letter'' size paper;
34587 that is, on a sheet 11 inches wide by 8.5 inches
34588 high. You will need to specify this form of printing as an option to
34589 your @sc{dvi} output program.
34590
34591 @cindex documentation
34592
34593 All the documentation for @value{GDBN} comes as part of the machine-readable
34594 distribution. The documentation is written in Texinfo format, which is
34595 a documentation system that uses a single source file to produce both
34596 on-line information and a printed manual. You can use one of the Info
34597 formatting commands to create the on-line version of the documentation
34598 and @TeX{} (or @code{texi2roff}) to typeset the printed version.
34599
34600 @value{GDBN} includes an already formatted copy of the on-line Info
34601 version of this manual in the @file{gdb} subdirectory. The main Info
34602 file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
34603 subordinate files matching @samp{gdb.info*} in the same directory. If
34604 necessary, you can print out these files, or read them with any editor;
34605 but they are easier to read using the @code{info} subsystem in @sc{gnu}
34606 Emacs or the standalone @code{info} program, available as part of the
34607 @sc{gnu} Texinfo distribution.
34608
34609 If you want to format these Info files yourself, you need one of the
34610 Info formatting programs, such as @code{texinfo-format-buffer} or
34611 @code{makeinfo}.
34612
34613 If you have @code{makeinfo} installed, and are in the top level
34614 @value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
34615 version @value{GDBVN}), you can make the Info file by typing:
34616
34617 @smallexample
34618 cd gdb
34619 make gdb.info
34620 @end smallexample
34621
34622 If you want to typeset and print copies of this manual, you need @TeX{},
34623 a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
34624 Texinfo definitions file.
34625
34626 @TeX{} is a typesetting program; it does not print files directly, but
34627 produces output files called @sc{dvi} files. To print a typeset
34628 document, you need a program to print @sc{dvi} files. If your system
34629 has @TeX{} installed, chances are it has such a program. The precise
34630 command to use depends on your system; @kbd{lpr -d} is common; another
34631 (for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
34632 require a file name without any extension or a @samp{.dvi} extension.
34633
34634 @TeX{} also requires a macro definitions file called
34635 @file{texinfo.tex}. This file tells @TeX{} how to typeset a document
34636 written in Texinfo format. On its own, @TeX{} cannot either read or
34637 typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
34638 and is located in the @file{gdb-@var{version-number}/texinfo}
34639 directory.
34640
34641 If you have @TeX{} and a @sc{dvi} printer program installed, you can
34642 typeset and print this manual. First switch to the @file{gdb}
34643 subdirectory of the main source directory (for example, to
34644 @file{gdb-@value{GDBVN}/gdb}) and type:
34645
34646 @smallexample
34647 make gdb.dvi
34648 @end smallexample
34649
34650 Then give @file{gdb.dvi} to your @sc{dvi} printing program.
34651
34652 @node Installing GDB
34653 @appendix Installing @value{GDBN}
34654 @cindex installation
34655
34656 @menu
34657 * Requirements:: Requirements for building @value{GDBN}
34658 * Running Configure:: Invoking the @value{GDBN} @file{configure} script
34659 * Separate Objdir:: Compiling @value{GDBN} in another directory
34660 * Config Names:: Specifying names for hosts and targets
34661 * Configure Options:: Summary of options for configure
34662 * System-wide configuration:: Having a system-wide init file
34663 @end menu
34664
34665 @node Requirements
34666 @section Requirements for Building @value{GDBN}
34667 @cindex building @value{GDBN}, requirements for
34668
34669 Building @value{GDBN} requires various tools and packages to be available.
34670 Other packages will be used only if they are found.
34671
34672 @heading Tools/Packages Necessary for Building @value{GDBN}
34673 @table @asis
34674 @item ISO C90 compiler
34675 @value{GDBN} is written in ISO C90. It should be buildable with any
34676 working C90 compiler, e.g.@: GCC.
34677
34678 @end table
34679
34680 @heading Tools/Packages Optional for Building @value{GDBN}
34681 @table @asis
34682 @item Expat
34683 @anchor{Expat}
34684 @value{GDBN} can use the Expat XML parsing library. This library may be
34685 included with your operating system distribution; if it is not, you
34686 can get the latest version from @url{http://expat.sourceforge.net}.
34687 The @file{configure} script will search for this library in several
34688 standard locations; if it is installed in an unusual path, you can
34689 use the @option{--with-libexpat-prefix} option to specify its location.
34690
34691 Expat is used for:
34692
34693 @itemize @bullet
34694 @item
34695 Remote protocol memory maps (@pxref{Memory Map Format})
34696 @item
34697 Target descriptions (@pxref{Target Descriptions})
34698 @item
34699 Remote shared library lists (@xref{Library List Format},
34700 or alternatively @pxref{Library List Format for SVR4 Targets})
34701 @item
34702 MS-Windows shared libraries (@pxref{Shared Libraries})
34703 @item
34704 Traceframe info (@pxref{Traceframe Info Format})
34705 @item
34706 Branch trace (@pxref{Branch Trace Format},
34707 @pxref{Branch Trace Configuration Format})
34708 @end itemize
34709
34710 @item MPFR
34711 @anchor{MPFR}
34712 @value{GDBN} can use the GNU MPFR multiple-precision floating-point
34713 library. This library may be included with your operating system
34714 distribution; if it is not, you can get the latest version from
34715 @url{http://www.mpfr.org}. The @file{configure} script will search
34716 for this library in several standard locations; if it is installed
34717 in an unusual path, you can use the @option{--with-libmpfr-prefix}
34718 option to specify its location.
34719
34720 GNU MPFR is used to emulate target floating-point arithmetic during
34721 expression evaluation when the target uses different floating-point
34722 formats than the host. If GNU MPFR it is not available, @value{GDBN}
34723 will fall back to using host floating-point arithmetic.
34724
34725 @item zlib
34726 @cindex compressed debug sections
34727 @value{GDBN} will use the @samp{zlib} library, if available, to read
34728 compressed debug sections. Some linkers, such as GNU gold, are capable
34729 of producing binaries with compressed debug sections. If @value{GDBN}
34730 is compiled with @samp{zlib}, it will be able to read the debug
34731 information in such binaries.
34732
34733 The @samp{zlib} library is likely included with your operating system
34734 distribution; if it is not, you can get the latest version from
34735 @url{http://zlib.net}.
34736
34737 @item iconv
34738 @value{GDBN}'s features related to character sets (@pxref{Character
34739 Sets}) require a functioning @code{iconv} implementation. If you are
34740 on a GNU system, then this is provided by the GNU C Library. Some
34741 other systems also provide a working @code{iconv}.
34742
34743 If @value{GDBN} is using the @code{iconv} program which is installed
34744 in a non-standard place, you will need to tell @value{GDBN} where to find it.
34745 This is done with @option{--with-iconv-bin} which specifies the
34746 directory that contains the @code{iconv} program.
34747
34748 On systems without @code{iconv}, you can install GNU Libiconv. If you
34749 have previously installed Libiconv, you can use the
34750 @option{--with-libiconv-prefix} option to configure.
34751
34752 @value{GDBN}'s top-level @file{configure} and @file{Makefile} will
34753 arrange to build Libiconv if a directory named @file{libiconv} appears
34754 in the top-most source directory. If Libiconv is built this way, and
34755 if the operating system does not provide a suitable @code{iconv}
34756 implementation, then the just-built library will automatically be used
34757 by @value{GDBN}. One easy way to set this up is to download GNU
34758 Libiconv, unpack it, and then rename the directory holding the
34759 Libiconv source code to @samp{libiconv}.
34760 @end table
34761
34762 @node Running Configure
34763 @section Invoking the @value{GDBN} @file{configure} Script
34764 @cindex configuring @value{GDBN}
34765 @value{GDBN} comes with a @file{configure} script that automates the process
34766 of preparing @value{GDBN} for installation; you can then use @code{make} to
34767 build the @code{gdb} program.
34768 @iftex
34769 @c irrelevant in info file; it's as current as the code it lives with.
34770 @footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
34771 look at the @file{README} file in the sources; we may have improved the
34772 installation procedures since publishing this manual.}
34773 @end iftex
34774
34775 The @value{GDBN} distribution includes all the source code you need for
34776 @value{GDBN} in a single directory, whose name is usually composed by
34777 appending the version number to @samp{gdb}.
34778
34779 For example, the @value{GDBN} version @value{GDBVN} distribution is in the
34780 @file{gdb-@value{GDBVN}} directory. That directory contains:
34781
34782 @table @code
34783 @item gdb-@value{GDBVN}/configure @r{(and supporting files)}
34784 script for configuring @value{GDBN} and all its supporting libraries
34785
34786 @item gdb-@value{GDBVN}/gdb
34787 the source specific to @value{GDBN} itself
34788
34789 @item gdb-@value{GDBVN}/bfd
34790 source for the Binary File Descriptor library
34791
34792 @item gdb-@value{GDBVN}/include
34793 @sc{gnu} include files
34794
34795 @item gdb-@value{GDBVN}/libiberty
34796 source for the @samp{-liberty} free software library
34797
34798 @item gdb-@value{GDBVN}/opcodes
34799 source for the library of opcode tables and disassemblers
34800
34801 @item gdb-@value{GDBVN}/readline
34802 source for the @sc{gnu} command-line interface
34803
34804 @item gdb-@value{GDBVN}/glob
34805 source for the @sc{gnu} filename pattern-matching subroutine
34806
34807 @item gdb-@value{GDBVN}/mmalloc
34808 source for the @sc{gnu} memory-mapped malloc package
34809 @end table
34810
34811 The simplest way to configure and build @value{GDBN} is to run @file{configure}
34812 from the @file{gdb-@var{version-number}} source directory, which in
34813 this example is the @file{gdb-@value{GDBVN}} directory.
34814
34815 First switch to the @file{gdb-@var{version-number}} source directory
34816 if you are not already in it; then run @file{configure}. Pass the
34817 identifier for the platform on which @value{GDBN} will run as an
34818 argument.
34819
34820 For example:
34821
34822 @smallexample
34823 cd gdb-@value{GDBVN}
34824 ./configure @var{host}
34825 make
34826 @end smallexample
34827
34828 @noindent
34829 where @var{host} is an identifier such as @samp{sun4} or
34830 @samp{decstation}, that identifies the platform where @value{GDBN} will run.
34831 (You can often leave off @var{host}; @file{configure} tries to guess the
34832 correct value by examining your system.)
34833
34834 Running @samp{configure @var{host}} and then running @code{make} builds the
34835 @file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
34836 libraries, then @code{gdb} itself. The configured source files, and the
34837 binaries, are left in the corresponding source directories.
34838
34839 @need 750
34840 @file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
34841 system does not recognize this automatically when you run a different
34842 shell, you may need to run @code{sh} on it explicitly:
34843
34844 @smallexample
34845 sh configure @var{host}
34846 @end smallexample
34847
34848 If you run @file{configure} from a directory that contains source
34849 directories for multiple libraries or programs, such as the
34850 @file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
34851 @file{configure}
34852 creates configuration files for every directory level underneath (unless
34853 you tell it not to, with the @samp{--norecursion} option).
34854
34855 You should run the @file{configure} script from the top directory in the
34856 source tree, the @file{gdb-@var{version-number}} directory. If you run
34857 @file{configure} from one of the subdirectories, you will configure only
34858 that subdirectory. That is usually not what you want. In particular,
34859 if you run the first @file{configure} from the @file{gdb} subdirectory
34860 of the @file{gdb-@var{version-number}} directory, you will omit the
34861 configuration of @file{bfd}, @file{readline}, and other sibling
34862 directories of the @file{gdb} subdirectory. This leads to build errors
34863 about missing include files such as @file{bfd/bfd.h}.
34864
34865 You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
34866 However, you should make sure that the shell on your path (named by
34867 the @samp{SHELL} environment variable) is publicly readable. Remember
34868 that @value{GDBN} uses the shell to start your program---some systems refuse to
34869 let @value{GDBN} debug child processes whose programs are not readable.
34870
34871 @node Separate Objdir
34872 @section Compiling @value{GDBN} in Another Directory
34873
34874 If you want to run @value{GDBN} versions for several host or target machines,
34875 you need a different @code{gdb} compiled for each combination of
34876 host and target. @file{configure} is designed to make this easy by
34877 allowing you to generate each configuration in a separate subdirectory,
34878 rather than in the source directory. If your @code{make} program
34879 handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
34880 @code{make} in each of these directories builds the @code{gdb}
34881 program specified there.
34882
34883 To build @code{gdb} in a separate directory, run @file{configure}
34884 with the @samp{--srcdir} option to specify where to find the source.
34885 (You also need to specify a path to find @file{configure}
34886 itself from your working directory. If the path to @file{configure}
34887 would be the same as the argument to @samp{--srcdir}, you can leave out
34888 the @samp{--srcdir} option; it is assumed.)
34889
34890 For example, with version @value{GDBVN}, you can build @value{GDBN} in a
34891 separate directory for a Sun 4 like this:
34892
34893 @smallexample
34894 @group
34895 cd gdb-@value{GDBVN}
34896 mkdir ../gdb-sun4
34897 cd ../gdb-sun4
34898 ../gdb-@value{GDBVN}/configure sun4
34899 make
34900 @end group
34901 @end smallexample
34902
34903 When @file{configure} builds a configuration using a remote source
34904 directory, it creates a tree for the binaries with the same structure
34905 (and using the same names) as the tree under the source directory. In
34906 the example, you'd find the Sun 4 library @file{libiberty.a} in the
34907 directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
34908 @file{gdb-sun4/gdb}.
34909
34910 Make sure that your path to the @file{configure} script has just one
34911 instance of @file{gdb} in it. If your path to @file{configure} looks
34912 like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
34913 one subdirectory of @value{GDBN}, not the whole package. This leads to
34914 build errors about missing include files such as @file{bfd/bfd.h}.
34915
34916 One popular reason to build several @value{GDBN} configurations in separate
34917 directories is to configure @value{GDBN} for cross-compiling (where
34918 @value{GDBN} runs on one machine---the @dfn{host}---while debugging
34919 programs that run on another machine---the @dfn{target}).
34920 You specify a cross-debugging target by
34921 giving the @samp{--target=@var{target}} option to @file{configure}.
34922
34923 When you run @code{make} to build a program or library, you must run
34924 it in a configured directory---whatever directory you were in when you
34925 called @file{configure} (or one of its subdirectories).
34926
34927 The @code{Makefile} that @file{configure} generates in each source
34928 directory also runs recursively. If you type @code{make} in a source
34929 directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
34930 directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
34931 will build all the required libraries, and then build GDB.
34932
34933 When you have multiple hosts or targets configured in separate
34934 directories, you can run @code{make} on them in parallel (for example,
34935 if they are NFS-mounted on each of the hosts); they will not interfere
34936 with each other.
34937
34938 @node Config Names
34939 @section Specifying Names for Hosts and Targets
34940
34941 The specifications used for hosts and targets in the @file{configure}
34942 script are based on a three-part naming scheme, but some short predefined
34943 aliases are also supported. The full naming scheme encodes three pieces
34944 of information in the following pattern:
34945
34946 @smallexample
34947 @var{architecture}-@var{vendor}-@var{os}
34948 @end smallexample
34949
34950 For example, you can use the alias @code{sun4} as a @var{host} argument,
34951 or as the value for @var{target} in a @code{--target=@var{target}}
34952 option. The equivalent full name is @samp{sparc-sun-sunos4}.
34953
34954 The @file{configure} script accompanying @value{GDBN} does not provide
34955 any query facility to list all supported host and target names or
34956 aliases. @file{configure} calls the Bourne shell script
34957 @code{config.sub} to map abbreviations to full names; you can read the
34958 script, if you wish, or you can use it to test your guesses on
34959 abbreviations---for example:
34960
34961 @smallexample
34962 % sh config.sub i386-linux
34963 i386-pc-linux-gnu
34964 % sh config.sub alpha-linux
34965 alpha-unknown-linux-gnu
34966 % sh config.sub hp9k700
34967 hppa1.1-hp-hpux
34968 % sh config.sub sun4
34969 sparc-sun-sunos4.1.1
34970 % sh config.sub sun3
34971 m68k-sun-sunos4.1.1
34972 % sh config.sub i986v
34973 Invalid configuration `i986v': machine `i986v' not recognized
34974 @end smallexample
34975
34976 @noindent
34977 @code{config.sub} is also distributed in the @value{GDBN} source
34978 directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
34979
34980 @node Configure Options
34981 @section @file{configure} Options
34982
34983 Here is a summary of the @file{configure} options and arguments that
34984 are most often useful for building @value{GDBN}. @file{configure} also has
34985 several other options not listed here. @inforef{What Configure
34986 Does,,configure.info}, for a full explanation of @file{configure}.
34987
34988 @smallexample
34989 configure @r{[}--help@r{]}
34990 @r{[}--prefix=@var{dir}@r{]}
34991 @r{[}--exec-prefix=@var{dir}@r{]}
34992 @r{[}--srcdir=@var{dirname}@r{]}
34993 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
34994 @r{[}--target=@var{target}@r{]}
34995 @var{host}
34996 @end smallexample
34997
34998 @noindent
34999 You may introduce options with a single @samp{-} rather than
35000 @samp{--} if you prefer; but you may abbreviate option names if you use
35001 @samp{--}.
35002
35003 @table @code
35004 @item --help
35005 Display a quick summary of how to invoke @file{configure}.
35006
35007 @item --prefix=@var{dir}
35008 Configure the source to install programs and files under directory
35009 @file{@var{dir}}.
35010
35011 @item --exec-prefix=@var{dir}
35012 Configure the source to install programs under directory
35013 @file{@var{dir}}.
35014
35015 @c avoid splitting the warning from the explanation:
35016 @need 2000
35017 @item --srcdir=@var{dirname}
35018 @strong{Warning: using this option requires @sc{gnu} @code{make}, or another
35019 @code{make} that implements the @code{VPATH} feature.}@*
35020 Use this option to make configurations in directories separate from the
35021 @value{GDBN} source directories. Among other things, you can use this to
35022 build (or maintain) several configurations simultaneously, in separate
35023 directories. @file{configure} writes configuration-specific files in
35024 the current directory, but arranges for them to use the source in the
35025 directory @var{dirname}. @file{configure} creates directories under
35026 the working directory in parallel to the source directories below
35027 @var{dirname}.
35028
35029 @item --norecursion
35030 Configure only the directory level where @file{configure} is executed; do not
35031 propagate configuration to subdirectories.
35032
35033 @item --target=@var{target}
35034 Configure @value{GDBN} for cross-debugging programs running on the specified
35035 @var{target}. Without this option, @value{GDBN} is configured to debug
35036 programs that run on the same machine (@var{host}) as @value{GDBN} itself.
35037
35038 There is no convenient way to generate a list of all available targets.
35039
35040 @item @var{host} @dots{}
35041 Configure @value{GDBN} to run on the specified @var{host}.
35042
35043 There is no convenient way to generate a list of all available hosts.
35044 @end table
35045
35046 There are many other options available as well, but they are generally
35047 needed for special purposes only.
35048
35049 @node System-wide configuration
35050 @section System-wide configuration and settings
35051 @cindex system-wide init file
35052
35053 @value{GDBN} can be configured to have a system-wide init file;
35054 this file will be read and executed at startup (@pxref{Startup, , What
35055 @value{GDBN} does during startup}).
35056
35057 Here is the corresponding configure option:
35058
35059 @table @code
35060 @item --with-system-gdbinit=@var{file}
35061 Specify that the default location of the system-wide init file is
35062 @var{file}.
35063 @end table
35064
35065 If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
35066 it may be subject to relocation. Two possible cases:
35067
35068 @itemize @bullet
35069 @item
35070 If the default location of this init file contains @file{$prefix},
35071 it will be subject to relocation. Suppose that the configure options
35072 are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
35073 if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
35074 init file is looked for as @file{$install/etc/gdbinit} instead of
35075 @file{$prefix/etc/gdbinit}.
35076
35077 @item
35078 By contrast, if the default location does not contain the prefix,
35079 it will not be relocated. E.g.@: if @value{GDBN} has been configured with
35080 @option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
35081 then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
35082 wherever @value{GDBN} is installed.
35083 @end itemize
35084
35085 If the configured location of the system-wide init file (as given by the
35086 @option{--with-system-gdbinit} option at configure time) is in the
35087 data-directory (as specified by @option{--with-gdb-datadir} at configure
35088 time) or in one of its subdirectories, then @value{GDBN} will look for the
35089 system-wide init file in the directory specified by the
35090 @option{--data-directory} command-line option.
35091 Note that the system-wide init file is only read once, during @value{GDBN}
35092 initialization. If the data-directory is changed after @value{GDBN} has
35093 started with the @code{set data-directory} command, the file will not be
35094 reread.
35095
35096 @menu
35097 * System-wide Configuration Scripts:: Installed System-wide Configuration Scripts
35098 @end menu
35099
35100 @node System-wide Configuration Scripts
35101 @subsection Installed System-wide Configuration Scripts
35102 @cindex system-wide configuration scripts
35103
35104 The @file{system-gdbinit} directory, located inside the data-directory
35105 (as specified by @option{--with-gdb-datadir} at configure time) contains
35106 a number of scripts which can be used as system-wide init files. To
35107 automatically source those scripts at startup, @value{GDBN} should be
35108 configured with @option{--with-system-gdbinit}. Otherwise, any user
35109 should be able to source them by hand as needed.
35110
35111 The following scripts are currently available:
35112 @itemize @bullet
35113
35114 @item @file{elinos.py}
35115 @pindex elinos.py
35116 @cindex ELinOS system-wide configuration script
35117 This script is useful when debugging a program on an ELinOS target.
35118 It takes advantage of the environment variables defined in a standard
35119 ELinOS environment in order to determine the location of the system
35120 shared libraries, and then sets the @samp{solib-absolute-prefix}
35121 and @samp{solib-search-path} variables appropriately.
35122
35123 @item @file{wrs-linux.py}
35124 @pindex wrs-linux.py
35125 @cindex Wind River Linux system-wide configuration script
35126 This script is useful when debugging a program on a target running
35127 Wind River Linux. It expects the @env{ENV_PREFIX} to be set to
35128 the host-side sysroot used by the target system.
35129
35130 @end itemize
35131
35132 @node Maintenance Commands
35133 @appendix Maintenance Commands
35134 @cindex maintenance commands
35135 @cindex internal commands
35136
35137 In addition to commands intended for @value{GDBN} users, @value{GDBN}
35138 includes a number of commands intended for @value{GDBN} developers,
35139 that are not documented elsewhere in this manual. These commands are
35140 provided here for reference. (For commands that turn on debugging
35141 messages, see @ref{Debugging Output}.)
35142
35143 @table @code
35144 @kindex maint agent
35145 @kindex maint agent-eval
35146 @item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression}
35147 @itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression}
35148 Translate the given @var{expression} into remote agent bytecodes.
35149 This command is useful for debugging the Agent Expression mechanism
35150 (@pxref{Agent Expressions}). The @samp{agent} version produces an
35151 expression useful for data collection, such as by tracepoints, while
35152 @samp{maint agent-eval} produces an expression that evaluates directly
35153 to a result. For instance, a collection expression for @code{globa +
35154 globb} will include bytecodes to record four bytes of memory at each
35155 of the addresses of @code{globa} and @code{globb}, while discarding
35156 the result of the addition, while an evaluation expression will do the
35157 addition and return the sum.
35158 If @code{-at} is given, generate remote agent bytecode for @var{location}.
35159 If not, generate remote agent bytecode for current frame PC address.
35160
35161 @kindex maint agent-printf
35162 @item maint agent-printf @var{format},@var{expr},...
35163 Translate the given format string and list of argument expressions
35164 into remote agent bytecodes and display them as a disassembled list.
35165 This command is useful for debugging the agent version of dynamic
35166 printf (@pxref{Dynamic Printf}).
35167
35168 @kindex maint info breakpoints
35169 @item @anchor{maint info breakpoints}maint info breakpoints
35170 Using the same format as @samp{info breakpoints}, display both the
35171 breakpoints you've set explicitly, and those @value{GDBN} is using for
35172 internal purposes. Internal breakpoints are shown with negative
35173 breakpoint numbers. The type column identifies what kind of breakpoint
35174 is shown:
35175
35176 @table @code
35177 @item breakpoint
35178 Normal, explicitly set breakpoint.
35179
35180 @item watchpoint
35181 Normal, explicitly set watchpoint.
35182
35183 @item longjmp
35184 Internal breakpoint, used to handle correctly stepping through
35185 @code{longjmp} calls.
35186
35187 @item longjmp resume
35188 Internal breakpoint at the target of a @code{longjmp}.
35189
35190 @item until
35191 Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
35192
35193 @item finish
35194 Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
35195
35196 @item shlib events
35197 Shared library events.
35198
35199 @end table
35200
35201 @kindex maint info btrace
35202 @item maint info btrace
35203 Pint information about raw branch tracing data.
35204
35205 @kindex maint btrace packet-history
35206 @item maint btrace packet-history
35207 Print the raw branch trace packets that are used to compute the
35208 execution history for the @samp{record btrace} command. Both the
35209 information and the format in which it is printed depend on the btrace
35210 recording format.
35211
35212 @table @code
35213 @item bts
35214 For the BTS recording format, print a list of blocks of sequential
35215 code. For each block, the following information is printed:
35216
35217 @table @asis
35218 @item Block number
35219 Newer blocks have higher numbers. The oldest block has number zero.
35220 @item Lowest @samp{PC}
35221 @item Highest @samp{PC}
35222 @end table
35223
35224 @item pt
35225 For the Intel Processor Trace recording format, print a list of
35226 Intel Processor Trace packets. For each packet, the following
35227 information is printed:
35228
35229 @table @asis
35230 @item Packet number
35231 Newer packets have higher numbers. The oldest packet has number zero.
35232 @item Trace offset
35233 The packet's offset in the trace stream.
35234 @item Packet opcode and payload
35235 @end table
35236 @end table
35237
35238 @kindex maint btrace clear-packet-history
35239 @item maint btrace clear-packet-history
35240 Discards the cached packet history printed by the @samp{maint btrace
35241 packet-history} command. The history will be computed again when
35242 needed.
35243
35244 @kindex maint btrace clear
35245 @item maint btrace clear
35246 Discard the branch trace data. The data will be fetched anew and the
35247 branch trace will be recomputed when needed.
35248
35249 This implicitly truncates the branch trace to a single branch trace
35250 buffer. When updating branch trace incrementally, the branch trace
35251 available to @value{GDBN} may be bigger than a single branch trace
35252 buffer.
35253
35254 @kindex maint set btrace pt skip-pad
35255 @item maint set btrace pt skip-pad
35256 @kindex maint show btrace pt skip-pad
35257 @item maint show btrace pt skip-pad
35258 Control whether @value{GDBN} will skip PAD packets when computing the
35259 packet history.
35260
35261 @kindex set displaced-stepping
35262 @kindex show displaced-stepping
35263 @cindex displaced stepping support
35264 @cindex out-of-line single-stepping
35265 @item set displaced-stepping
35266 @itemx show displaced-stepping
35267 Control whether or not @value{GDBN} will do @dfn{displaced stepping}
35268 if the target supports it. Displaced stepping is a way to single-step
35269 over breakpoints without removing them from the inferior, by executing
35270 an out-of-line copy of the instruction that was originally at the
35271 breakpoint location. It is also known as out-of-line single-stepping.
35272
35273 @table @code
35274 @item set displaced-stepping on
35275 If the target architecture supports it, @value{GDBN} will use
35276 displaced stepping to step over breakpoints.
35277
35278 @item set displaced-stepping off
35279 @value{GDBN} will not use displaced stepping to step over breakpoints,
35280 even if such is supported by the target architecture.
35281
35282 @cindex non-stop mode, and @samp{set displaced-stepping}
35283 @item set displaced-stepping auto
35284 This is the default mode. @value{GDBN} will use displaced stepping
35285 only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
35286 architecture supports displaced stepping.
35287 @end table
35288
35289 @kindex maint check-psymtabs
35290 @item maint check-psymtabs
35291 Check the consistency of currently expanded psymtabs versus symtabs.
35292 Use this to check, for example, whether a symbol is in one but not the other.
35293
35294 @kindex maint check-symtabs
35295 @item maint check-symtabs
35296 Check the consistency of currently expanded symtabs.
35297
35298 @kindex maint expand-symtabs
35299 @item maint expand-symtabs [@var{regexp}]
35300 Expand symbol tables.
35301 If @var{regexp} is specified, only expand symbol tables for file
35302 names matching @var{regexp}.
35303
35304 @kindex maint set catch-demangler-crashes
35305 @kindex maint show catch-demangler-crashes
35306 @cindex demangler crashes
35307 @item maint set catch-demangler-crashes [on|off]
35308 @itemx maint show catch-demangler-crashes
35309 Control whether @value{GDBN} should attempt to catch crashes in the
35310 symbol name demangler. The default is to attempt to catch crashes.
35311 If enabled, the first time a crash is caught, a core file is created,
35312 the offending symbol is displayed and the user is presented with the
35313 option to terminate the current session.
35314
35315 @kindex maint cplus first_component
35316 @item maint cplus first_component @var{name}
35317 Print the first C@t{++} class/namespace component of @var{name}.
35318
35319 @kindex maint cplus namespace
35320 @item maint cplus namespace
35321 Print the list of possible C@t{++} namespaces.
35322
35323 @kindex maint deprecate
35324 @kindex maint undeprecate
35325 @cindex deprecated commands
35326 @item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
35327 @itemx maint undeprecate @var{command}
35328 Deprecate or undeprecate the named @var{command}. Deprecated commands
35329 cause @value{GDBN} to issue a warning when you use them. The optional
35330 argument @var{replacement} says which newer command should be used in
35331 favor of the deprecated one; if it is given, @value{GDBN} will mention
35332 the replacement as part of the warning.
35333
35334 @kindex maint dump-me
35335 @item maint dump-me
35336 @cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
35337 Cause a fatal signal in the debugger and force it to dump its core.
35338 This is supported only on systems which support aborting a program
35339 with the @code{SIGQUIT} signal.
35340
35341 @kindex maint internal-error
35342 @kindex maint internal-warning
35343 @kindex maint demangler-warning
35344 @cindex demangler crashes
35345 @item maint internal-error @r{[}@var{message-text}@r{]}
35346 @itemx maint internal-warning @r{[}@var{message-text}@r{]}
35347 @itemx maint demangler-warning @r{[}@var{message-text}@r{]}
35348
35349 Cause @value{GDBN} to call the internal function @code{internal_error},
35350 @code{internal_warning} or @code{demangler_warning} and hence behave
35351 as though an internal problem has been detected. In addition to
35352 reporting the internal problem, these functions give the user the
35353 opportunity to either quit @value{GDBN} or (for @code{internal_error}
35354 and @code{internal_warning}) create a core file of the current
35355 @value{GDBN} session.
35356
35357 These commands take an optional parameter @var{message-text} that is
35358 used as the text of the error or warning message.
35359
35360 Here's an example of using @code{internal-error}:
35361
35362 @smallexample
35363 (@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
35364 @dots{}/maint.c:121: internal-error: testing, 1, 2
35365 A problem internal to GDB has been detected. Further
35366 debugging may prove unreliable.
35367 Quit this debugging session? (y or n) @kbd{n}
35368 Create a core file? (y or n) @kbd{n}
35369 (@value{GDBP})
35370 @end smallexample
35371
35372 @cindex @value{GDBN} internal error
35373 @cindex internal errors, control of @value{GDBN} behavior
35374 @cindex demangler crashes
35375
35376 @kindex maint set internal-error
35377 @kindex maint show internal-error
35378 @kindex maint set internal-warning
35379 @kindex maint show internal-warning
35380 @kindex maint set demangler-warning
35381 @kindex maint show demangler-warning
35382 @item maint set internal-error @var{action} [ask|yes|no]
35383 @itemx maint show internal-error @var{action}
35384 @itemx maint set internal-warning @var{action} [ask|yes|no]
35385 @itemx maint show internal-warning @var{action}
35386 @itemx maint set demangler-warning @var{action} [ask|yes|no]
35387 @itemx maint show demangler-warning @var{action}
35388 When @value{GDBN} reports an internal problem (error or warning) it
35389 gives the user the opportunity to both quit @value{GDBN} and create a
35390 core file of the current @value{GDBN} session. These commands let you
35391 override the default behaviour for each particular @var{action},
35392 described in the table below.
35393
35394 @table @samp
35395 @item quit
35396 You can specify that @value{GDBN} should always (yes) or never (no)
35397 quit. The default is to ask the user what to do.
35398
35399 @item corefile
35400 You can specify that @value{GDBN} should always (yes) or never (no)
35401 create a core file. The default is to ask the user what to do. Note
35402 that there is no @code{corefile} option for @code{demangler-warning}:
35403 demangler warnings always create a core file and this cannot be
35404 disabled.
35405 @end table
35406
35407 @kindex maint packet
35408 @item maint packet @var{text}
35409 If @value{GDBN} is talking to an inferior via the serial protocol,
35410 then this command sends the string @var{text} to the inferior, and
35411 displays the response packet. @value{GDBN} supplies the initial
35412 @samp{$} character, the terminating @samp{#} character, and the
35413 checksum.
35414
35415 @kindex maint print architecture
35416 @item maint print architecture @r{[}@var{file}@r{]}
35417 Print the entire architecture configuration. The optional argument
35418 @var{file} names the file where the output goes.
35419
35420 @kindex maint print c-tdesc @r{[}@var{file}@r{]}
35421 @item maint print c-tdesc
35422 Print the target description (@pxref{Target Descriptions}) as
35423 a C source file. By default, the target description is for the current
35424 target, but if the optional argument @var{file} is provided, that file
35425 is used to produce the description. The @var{file} should be an XML
35426 document, of the form described in @ref{Target Description Format}.
35427 The created source file is built into @value{GDBN} when @value{GDBN} is
35428 built again. This command is used by developers after they add or
35429 modify XML target descriptions.
35430
35431 @kindex maint check xml-descriptions
35432 @item maint check xml-descriptions @var{dir}
35433 Check that the target descriptions dynamically created by @value{GDBN}
35434 equal the descriptions created from XML files found in @var{dir}.
35435
35436 @kindex maint print dummy-frames
35437 @item maint print dummy-frames
35438 Prints the contents of @value{GDBN}'s internal dummy-frame stack.
35439
35440 @smallexample
35441 (@value{GDBP}) @kbd{b add}
35442 @dots{}
35443 (@value{GDBP}) @kbd{print add(2,3)}
35444 Breakpoint 2, add (a=2, b=3) at @dots{}
35445 58 return (a + b);
35446 The program being debugged stopped while in a function called from GDB.
35447 @dots{}
35448 (@value{GDBP}) @kbd{maint print dummy-frames}
35449 0xa8206d8: id=@{stack=0xbfffe734,code=0xbfffe73f,!special@}, ptid=process 9353
35450 (@value{GDBP})
35451 @end smallexample
35452
35453 Takes an optional file parameter.
35454
35455 @kindex maint print registers
35456 @kindex maint print raw-registers
35457 @kindex maint print cooked-registers
35458 @kindex maint print register-groups
35459 @kindex maint print remote-registers
35460 @item maint print registers @r{[}@var{file}@r{]}
35461 @itemx maint print raw-registers @r{[}@var{file}@r{]}
35462 @itemx maint print cooked-registers @r{[}@var{file}@r{]}
35463 @itemx maint print register-groups @r{[}@var{file}@r{]}
35464 @itemx maint print remote-registers @r{[}@var{file}@r{]}
35465 Print @value{GDBN}'s internal register data structures.
35466
35467 The command @code{maint print raw-registers} includes the contents of
35468 the raw register cache; the command @code{maint print
35469 cooked-registers} includes the (cooked) value of all registers,
35470 including registers which aren't available on the target nor visible
35471 to user; the command @code{maint print register-groups} includes the
35472 groups that each register is a member of; and the command @code{maint
35473 print remote-registers} includes the remote target's register numbers
35474 and offsets in the `G' packets.
35475
35476 These commands take an optional parameter, a file name to which to
35477 write the information.
35478
35479 @kindex maint print reggroups
35480 @item maint print reggroups @r{[}@var{file}@r{]}
35481 Print @value{GDBN}'s internal register group data structures. The
35482 optional argument @var{file} tells to what file to write the
35483 information.
35484
35485 The register groups info looks like this:
35486
35487 @smallexample
35488 (@value{GDBP}) @kbd{maint print reggroups}
35489 Group Type
35490 general user
35491 float user
35492 all user
35493 vector user
35494 system user
35495 save internal
35496 restore internal
35497 @end smallexample
35498
35499 @kindex flushregs
35500 @item flushregs
35501 This command forces @value{GDBN} to flush its internal register cache.
35502
35503 @kindex maint print objfiles
35504 @cindex info for known object files
35505 @item maint print objfiles @r{[}@var{regexp}@r{]}
35506 Print a dump of all known object files.
35507 If @var{regexp} is specified, only print object files whose names
35508 match @var{regexp}. For each object file, this command prints its name,
35509 address in memory, and all of its psymtabs and symtabs.
35510
35511 @kindex maint print user-registers
35512 @cindex user registers
35513 @item maint print user-registers
35514 List all currently available @dfn{user registers}. User registers
35515 typically provide alternate names for actual hardware registers. They
35516 include the four ``standard'' registers @code{$fp}, @code{$pc},
35517 @code{$sp}, and @code{$ps}. @xref{standard registers}. User
35518 registers can be used in expressions in the same way as the canonical
35519 register names, but only the latter are listed by the @code{info
35520 registers} and @code{maint print registers} commands.
35521
35522 @kindex maint print section-scripts
35523 @cindex info for known .debug_gdb_scripts-loaded scripts
35524 @item maint print section-scripts [@var{regexp}]
35525 Print a dump of scripts specified in the @code{.debug_gdb_section} section.
35526 If @var{regexp} is specified, only print scripts loaded by object files
35527 matching @var{regexp}.
35528 For each script, this command prints its name as specified in the objfile,
35529 and the full path if known.
35530 @xref{dotdebug_gdb_scripts section}.
35531
35532 @kindex maint print statistics
35533 @cindex bcache statistics
35534 @item maint print statistics
35535 This command prints, for each object file in the program, various data
35536 about that object file followed by the byte cache (@dfn{bcache})
35537 statistics for the object file. The objfile data includes the number
35538 of minimal, partial, full, and stabs symbols, the number of types
35539 defined by the objfile, the number of as yet unexpanded psym tables,
35540 the number of line tables and string tables, and the amount of memory
35541 used by the various tables. The bcache statistics include the counts,
35542 sizes, and counts of duplicates of all and unique objects, max,
35543 average, and median entry size, total memory used and its overhead and
35544 savings, and various measures of the hash table size and chain
35545 lengths.
35546
35547 @kindex maint print target-stack
35548 @cindex target stack description
35549 @item maint print target-stack
35550 A @dfn{target} is an interface between the debugger and a particular
35551 kind of file or process. Targets can be stacked in @dfn{strata},
35552 so that more than one target can potentially respond to a request.
35553 In particular, memory accesses will walk down the stack of targets
35554 until they find a target that is interested in handling that particular
35555 address.
35556
35557 This command prints a short description of each layer that was pushed on
35558 the @dfn{target stack}, starting from the top layer down to the bottom one.
35559
35560 @kindex maint print type
35561 @cindex type chain of a data type
35562 @item maint print type @var{expr}
35563 Print the type chain for a type specified by @var{expr}. The argument
35564 can be either a type name or a symbol. If it is a symbol, the type of
35565 that symbol is described. The type chain produced by this command is
35566 a recursive definition of the data type as stored in @value{GDBN}'s
35567 data structures, including its flags and contained types.
35568
35569 @kindex maint selftest
35570 @cindex self tests
35571 @item maint selftest @r{[}@var{filter}@r{]}
35572 Run any self tests that were compiled in to @value{GDBN}. This will
35573 print a message showing how many tests were run, and how many failed.
35574 If a @var{filter} is passed, only the tests with @var{filter} in their
35575 name will by ran.
35576
35577 @kindex "maint info selftests"
35578 @cindex self tests
35579 @item maint info selftests
35580 List the selftests compiled in to @value{GDBN}.
35581
35582 @kindex maint set dwarf always-disassemble
35583 @kindex maint show dwarf always-disassemble
35584 @item maint set dwarf always-disassemble
35585 @item maint show dwarf always-disassemble
35586 Control the behavior of @code{info address} when using DWARF debugging
35587 information.
35588
35589 The default is @code{off}, which means that @value{GDBN} should try to
35590 describe a variable's location in an easily readable format. When
35591 @code{on}, @value{GDBN} will instead display the DWARF location
35592 expression in an assembly-like format. Note that some locations are
35593 too complex for @value{GDBN} to describe simply; in this case you will
35594 always see the disassembly form.
35595
35596 Here is an example of the resulting disassembly:
35597
35598 @smallexample
35599 (gdb) info addr argc
35600 Symbol "argc" is a complex DWARF expression:
35601 1: DW_OP_fbreg 0
35602 @end smallexample
35603
35604 For more information on these expressions, see
35605 @uref{http://www.dwarfstd.org/, the DWARF standard}.
35606
35607 @kindex maint set dwarf max-cache-age
35608 @kindex maint show dwarf max-cache-age
35609 @item maint set dwarf max-cache-age
35610 @itemx maint show dwarf max-cache-age
35611 Control the DWARF compilation unit cache.
35612
35613 @cindex DWARF compilation units cache
35614 In object files with inter-compilation-unit references, such as those
35615 produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF
35616 reader needs to frequently refer to previously read compilation units.
35617 This setting controls how long a compilation unit will remain in the
35618 cache if it is not referenced. A higher limit means that cached
35619 compilation units will be stored in memory longer, and more total
35620 memory will be used. Setting it to zero disables caching, which will
35621 slow down @value{GDBN} startup, but reduce memory consumption.
35622
35623 @kindex maint set profile
35624 @kindex maint show profile
35625 @cindex profiling GDB
35626 @item maint set profile
35627 @itemx maint show profile
35628 Control profiling of @value{GDBN}.
35629
35630 Profiling will be disabled until you use the @samp{maint set profile}
35631 command to enable it. When you enable profiling, the system will begin
35632 collecting timing and execution count data; when you disable profiling or
35633 exit @value{GDBN}, the results will be written to a log file. Remember that
35634 if you use profiling, @value{GDBN} will overwrite the profiling log file
35635 (often called @file{gmon.out}). If you have a record of important profiling
35636 data in a @file{gmon.out} file, be sure to move it to a safe location.
35637
35638 Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
35639 compiled with the @samp{-pg} compiler option.
35640
35641 @kindex maint set show-debug-regs
35642 @kindex maint show show-debug-regs
35643 @cindex hardware debug registers
35644 @item maint set show-debug-regs
35645 @itemx maint show show-debug-regs
35646 Control whether to show variables that mirror the hardware debug
35647 registers. Use @code{on} to enable, @code{off} to disable. If
35648 enabled, the debug registers values are shown when @value{GDBN} inserts or
35649 removes a hardware breakpoint or watchpoint, and when the inferior
35650 triggers a hardware-assisted breakpoint or watchpoint.
35651
35652 @kindex maint set show-all-tib
35653 @kindex maint show show-all-tib
35654 @item maint set show-all-tib
35655 @itemx maint show show-all-tib
35656 Control whether to show all non zero areas within a 1k block starting
35657 at thread local base, when using the @samp{info w32 thread-information-block}
35658 command.
35659
35660 @kindex maint set target-async
35661 @kindex maint show target-async
35662 @item maint set target-async
35663 @itemx maint show target-async
35664 This controls whether @value{GDBN} targets operate in synchronous or
35665 asynchronous mode (@pxref{Background Execution}). Normally the
35666 default is asynchronous, if it is available; but this can be changed
35667 to more easily debug problems occurring only in synchronous mode.
35668
35669 @kindex maint set target-non-stop @var{mode} [on|off|auto]
35670 @kindex maint show target-non-stop
35671 @item maint set target-non-stop
35672 @itemx maint show target-non-stop
35673
35674 This controls whether @value{GDBN} targets always operate in non-stop
35675 mode even if @code{set non-stop} is @code{off} (@pxref{Non-Stop
35676 Mode}). The default is @code{auto}, meaning non-stop mode is enabled
35677 if supported by the target.
35678
35679 @table @code
35680 @item maint set target-non-stop auto
35681 This is the default mode. @value{GDBN} controls the target in
35682 non-stop mode if the target supports it.
35683
35684 @item maint set target-non-stop on
35685 @value{GDBN} controls the target in non-stop mode even if the target
35686 does not indicate support.
35687
35688 @item maint set target-non-stop off
35689 @value{GDBN} does not control the target in non-stop mode even if the
35690 target supports it.
35691 @end table
35692
35693 @kindex maint set per-command
35694 @kindex maint show per-command
35695 @item maint set per-command
35696 @itemx maint show per-command
35697 @cindex resources used by commands
35698
35699 @value{GDBN} can display the resources used by each command.
35700 This is useful in debugging performance problems.
35701
35702 @table @code
35703 @item maint set per-command space [on|off]
35704 @itemx maint show per-command space
35705 Enable or disable the printing of the memory used by GDB for each command.
35706 If enabled, @value{GDBN} will display how much memory each command
35707 took, following the command's own output.
35708 This can also be requested by invoking @value{GDBN} with the
35709 @option{--statistics} command-line switch (@pxref{Mode Options}).
35710
35711 @item maint set per-command time [on|off]
35712 @itemx maint show per-command time
35713 Enable or disable the printing of the execution time of @value{GDBN}
35714 for each command.
35715 If enabled, @value{GDBN} will display how much time it
35716 took to execute each command, following the command's own output.
35717 Both CPU time and wallclock time are printed.
35718 Printing both is useful when trying to determine whether the cost is
35719 CPU or, e.g., disk/network latency.
35720 Note that the CPU time printed is for @value{GDBN} only, it does not include
35721 the execution time of the inferior because there's no mechanism currently
35722 to compute how much time was spent by @value{GDBN} and how much time was
35723 spent by the program been debugged.
35724 This can also be requested by invoking @value{GDBN} with the
35725 @option{--statistics} command-line switch (@pxref{Mode Options}).
35726
35727 @item maint set per-command symtab [on|off]
35728 @itemx maint show per-command symtab
35729 Enable or disable the printing of basic symbol table statistics
35730 for each command.
35731 If enabled, @value{GDBN} will display the following information:
35732
35733 @enumerate a
35734 @item
35735 number of symbol tables
35736 @item
35737 number of primary symbol tables
35738 @item
35739 number of blocks in the blockvector
35740 @end enumerate
35741 @end table
35742
35743 @kindex maint space
35744 @cindex memory used by commands
35745 @item maint space @var{value}
35746 An alias for @code{maint set per-command space}.
35747 A non-zero value enables it, zero disables it.
35748
35749 @kindex maint time
35750 @cindex time of command execution
35751 @item maint time @var{value}
35752 An alias for @code{maint set per-command time}.
35753 A non-zero value enables it, zero disables it.
35754
35755 @kindex maint translate-address
35756 @item maint translate-address @r{[}@var{section}@r{]} @var{addr}
35757 Find the symbol stored at the location specified by the address
35758 @var{addr} and an optional section name @var{section}. If found,
35759 @value{GDBN} prints the name of the closest symbol and an offset from
35760 the symbol's location to the specified address. This is similar to
35761 the @code{info address} command (@pxref{Symbols}), except that this
35762 command also allows to find symbols in other sections.
35763
35764 If section was not specified, the section in which the symbol was found
35765 is also printed. For dynamically linked executables, the name of
35766 executable or shared library containing the symbol is printed as well.
35767
35768 @end table
35769
35770 The following command is useful for non-interactive invocations of
35771 @value{GDBN}, such as in the test suite.
35772
35773 @table @code
35774 @item set watchdog @var{nsec}
35775 @kindex set watchdog
35776 @cindex watchdog timer
35777 @cindex timeout for commands
35778 Set the maximum number of seconds @value{GDBN} will wait for the
35779 target operation to finish. If this time expires, @value{GDBN}
35780 reports and error and the command is aborted.
35781
35782 @item show watchdog
35783 Show the current setting of the target wait timeout.
35784 @end table
35785
35786 @node Remote Protocol
35787 @appendix @value{GDBN} Remote Serial Protocol
35788
35789 @menu
35790 * Overview::
35791 * Packets::
35792 * Stop Reply Packets::
35793 * General Query Packets::
35794 * Architecture-Specific Protocol Details::
35795 * Tracepoint Packets::
35796 * Host I/O Packets::
35797 * Interrupts::
35798 * Notification Packets::
35799 * Remote Non-Stop::
35800 * Packet Acknowledgment::
35801 * Examples::
35802 * File-I/O Remote Protocol Extension::
35803 * Library List Format::
35804 * Library List Format for SVR4 Targets::
35805 * Memory Map Format::
35806 * Thread List Format::
35807 * Traceframe Info Format::
35808 * Branch Trace Format::
35809 * Branch Trace Configuration Format::
35810 @end menu
35811
35812 @node Overview
35813 @section Overview
35814
35815 There may be occasions when you need to know something about the
35816 protocol---for example, if there is only one serial port to your target
35817 machine, you might want your program to do something special if it
35818 recognizes a packet meant for @value{GDBN}.
35819
35820 In the examples below, @samp{->} and @samp{<-} are used to indicate
35821 transmitted and received data, respectively.
35822
35823 @cindex protocol, @value{GDBN} remote serial
35824 @cindex serial protocol, @value{GDBN} remote
35825 @cindex remote serial protocol
35826 All @value{GDBN} commands and responses (other than acknowledgments
35827 and notifications, see @ref{Notification Packets}) are sent as a
35828 @var{packet}. A @var{packet} is introduced with the character
35829 @samp{$}, the actual @var{packet-data}, and the terminating character
35830 @samp{#} followed by a two-digit @var{checksum}:
35831
35832 @smallexample
35833 @code{$}@var{packet-data}@code{#}@var{checksum}
35834 @end smallexample
35835 @noindent
35836
35837 @cindex checksum, for @value{GDBN} remote
35838 @noindent
35839 The two-digit @var{checksum} is computed as the modulo 256 sum of all
35840 characters between the leading @samp{$} and the trailing @samp{#} (an
35841 eight bit unsigned checksum).
35842
35843 Implementors should note that prior to @value{GDBN} 5.0 the protocol
35844 specification also included an optional two-digit @var{sequence-id}:
35845
35846 @smallexample
35847 @code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
35848 @end smallexample
35849
35850 @cindex sequence-id, for @value{GDBN} remote
35851 @noindent
35852 That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
35853 has never output @var{sequence-id}s. Stubs that handle packets added
35854 since @value{GDBN} 5.0 must not accept @var{sequence-id}.
35855
35856 When either the host or the target machine receives a packet, the first
35857 response expected is an acknowledgment: either @samp{+} (to indicate
35858 the package was received correctly) or @samp{-} (to request
35859 retransmission):
35860
35861 @smallexample
35862 -> @code{$}@var{packet-data}@code{#}@var{checksum}
35863 <- @code{+}
35864 @end smallexample
35865 @noindent
35866
35867 The @samp{+}/@samp{-} acknowledgments can be disabled
35868 once a connection is established.
35869 @xref{Packet Acknowledgment}, for details.
35870
35871 The host (@value{GDBN}) sends @var{command}s, and the target (the
35872 debugging stub incorporated in your program) sends a @var{response}. In
35873 the case of step and continue @var{command}s, the response is only sent
35874 when the operation has completed, and the target has again stopped all
35875 threads in all attached processes. This is the default all-stop mode
35876 behavior, but the remote protocol also supports @value{GDBN}'s non-stop
35877 execution mode; see @ref{Remote Non-Stop}, for details.
35878
35879 @var{packet-data} consists of a sequence of characters with the
35880 exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
35881 exceptions).
35882
35883 @cindex remote protocol, field separator
35884 Fields within the packet should be separated using @samp{,} @samp{;} or
35885 @samp{:}. Except where otherwise noted all numbers are represented in
35886 @sc{hex} with leading zeros suppressed.
35887
35888 Implementors should note that prior to @value{GDBN} 5.0, the character
35889 @samp{:} could not appear as the third character in a packet (as it
35890 would potentially conflict with the @var{sequence-id}).
35891
35892 @cindex remote protocol, binary data
35893 @anchor{Binary Data}
35894 Binary data in most packets is encoded either as two hexadecimal
35895 digits per byte of binary data. This allowed the traditional remote
35896 protocol to work over connections which were only seven-bit clean.
35897 Some packets designed more recently assume an eight-bit clean
35898 connection, and use a more efficient encoding to send and receive
35899 binary data.
35900
35901 The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
35902 as an escape character. Any escaped byte is transmitted as the escape
35903 character followed by the original character XORed with @code{0x20}.
35904 For example, the byte @code{0x7d} would be transmitted as the two
35905 bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
35906 @code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
35907 @samp{@}}) must always be escaped. Responses sent by the stub
35908 must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
35909 is not interpreted as the start of a run-length encoded sequence
35910 (described next).
35911
35912 Response @var{data} can be run-length encoded to save space.
35913 Run-length encoding replaces runs of identical characters with one
35914 instance of the repeated character, followed by a @samp{*} and a
35915 repeat count. The repeat count is itself sent encoded, to avoid
35916 binary characters in @var{data}: a value of @var{n} is sent as
35917 @code{@var{n}+29}. For a repeat count greater or equal to 3, this
35918 produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
35919 code 32) for a repeat count of 3. (This is because run-length
35920 encoding starts to win for counts 3 or more.) Thus, for example,
35921 @samp{0* } is a run-length encoding of ``0000'': the space character
35922 after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
35923 3}} more times.
35924
35925 The printable characters @samp{#} and @samp{$} or with a numeric value
35926 greater than 126 must not be used. Runs of six repeats (@samp{#}) or
35927 seven repeats (@samp{$}) can be expanded using a repeat count of only
35928 five (@samp{"}). For example, @samp{00000000} can be encoded as
35929 @samp{0*"00}.
35930
35931 The error response returned for some packets includes a two character
35932 error number. That number is not well defined.
35933
35934 @cindex empty response, for unsupported packets
35935 For any @var{command} not supported by the stub, an empty response
35936 (@samp{$#00}) should be returned. That way it is possible to extend the
35937 protocol. A newer @value{GDBN} can tell if a packet is supported based
35938 on that response.
35939
35940 At a minimum, a stub is required to support the @samp{g} and @samp{G}
35941 commands for register access, and the @samp{m} and @samp{M} commands
35942 for memory access. Stubs that only control single-threaded targets
35943 can implement run control with the @samp{c} (continue), and @samp{s}
35944 (step) commands. Stubs that support multi-threading targets should
35945 support the @samp{vCont} command. All other commands are optional.
35946
35947 @node Packets
35948 @section Packets
35949
35950 The following table provides a complete list of all currently defined
35951 @var{command}s and their corresponding response @var{data}.
35952 @xref{File-I/O Remote Protocol Extension}, for details about the File
35953 I/O extension of the remote protocol.
35954
35955 Each packet's description has a template showing the packet's overall
35956 syntax, followed by an explanation of the packet's meaning. We
35957 include spaces in some of the templates for clarity; these are not
35958 part of the packet's syntax. No @value{GDBN} packet uses spaces to
35959 separate its components. For example, a template like @samp{foo
35960 @var{bar} @var{baz}} describes a packet beginning with the three ASCII
35961 bytes @samp{foo}, followed by a @var{bar}, followed directly by a
35962 @var{baz}. @value{GDBN} does not transmit a space character between the
35963 @samp{foo} and the @var{bar}, or between the @var{bar} and the
35964 @var{baz}.
35965
35966 @cindex @var{thread-id}, in remote protocol
35967 @anchor{thread-id syntax}
35968 Several packets and replies include a @var{thread-id} field to identify
35969 a thread. Normally these are positive numbers with a target-specific
35970 interpretation, formatted as big-endian hex strings. A @var{thread-id}
35971 can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
35972 pick any thread.
35973
35974 In addition, the remote protocol supports a multiprocess feature in
35975 which the @var{thread-id} syntax is extended to optionally include both
35976 process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
35977 The @var{pid} (process) and @var{tid} (thread) components each have the
35978 format described above: a positive number with target-specific
35979 interpretation formatted as a big-endian hex string, literal @samp{-1}
35980 to indicate all processes or threads (respectively), or @samp{0} to
35981 indicate an arbitrary process or thread. Specifying just a process, as
35982 @samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
35983 error to specify all processes but a specific thread, such as
35984 @samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
35985 for those packets and replies explicitly documented to include a process
35986 ID, rather than a @var{thread-id}.
35987
35988 The multiprocess @var{thread-id} syntax extensions are only used if both
35989 @value{GDBN} and the stub report support for the @samp{multiprocess}
35990 feature using @samp{qSupported}. @xref{multiprocess extensions}, for
35991 more information.
35992
35993 Note that all packet forms beginning with an upper- or lower-case
35994 letter, other than those described here, are reserved for future use.
35995
35996 Here are the packet descriptions.
35997
35998 @table @samp
35999
36000 @item !
36001 @cindex @samp{!} packet
36002 @anchor{extended mode}
36003 Enable extended mode. In extended mode, the remote server is made
36004 persistent. The @samp{R} packet is used to restart the program being
36005 debugged.
36006
36007 Reply:
36008 @table @samp
36009 @item OK
36010 The remote target both supports and has enabled extended mode.
36011 @end table
36012
36013 @item ?
36014 @cindex @samp{?} packet
36015 @anchor{? packet}
36016 Indicate the reason the target halted. The reply is the same as for
36017 step and continue. This packet has a special interpretation when the
36018 target is in non-stop mode; see @ref{Remote Non-Stop}.
36019
36020 Reply:
36021 @xref{Stop Reply Packets}, for the reply specifications.
36022
36023 @item A @var{arglen},@var{argnum},@var{arg},@dots{}
36024 @cindex @samp{A} packet
36025 Initialized @code{argv[]} array passed into program. @var{arglen}
36026 specifies the number of bytes in the hex encoded byte stream
36027 @var{arg}. See @code{gdbserver} for more details.
36028
36029 Reply:
36030 @table @samp
36031 @item OK
36032 The arguments were set.
36033 @item E @var{NN}
36034 An error occurred.
36035 @end table
36036
36037 @item b @var{baud}
36038 @cindex @samp{b} packet
36039 (Don't use this packet; its behavior is not well-defined.)
36040 Change the serial line speed to @var{baud}.
36041
36042 JTC: @emph{When does the transport layer state change? When it's
36043 received, or after the ACK is transmitted. In either case, there are
36044 problems if the command or the acknowledgment packet is dropped.}
36045
36046 Stan: @emph{If people really wanted to add something like this, and get
36047 it working for the first time, they ought to modify ser-unix.c to send
36048 some kind of out-of-band message to a specially-setup stub and have the
36049 switch happen "in between" packets, so that from remote protocol's point
36050 of view, nothing actually happened.}
36051
36052 @item B @var{addr},@var{mode}
36053 @cindex @samp{B} packet
36054 Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
36055 breakpoint at @var{addr}.
36056
36057 Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
36058 (@pxref{insert breakpoint or watchpoint packet}).
36059
36060 @cindex @samp{bc} packet
36061 @anchor{bc}
36062 @item bc
36063 Backward continue. Execute the target system in reverse. No parameter.
36064 @xref{Reverse Execution}, for more information.
36065
36066 Reply:
36067 @xref{Stop Reply Packets}, for the reply specifications.
36068
36069 @cindex @samp{bs} packet
36070 @anchor{bs}
36071 @item bs
36072 Backward single step. Execute one instruction in reverse. No parameter.
36073 @xref{Reverse Execution}, for more information.
36074
36075 Reply:
36076 @xref{Stop Reply Packets}, for the reply specifications.
36077
36078 @item c @r{[}@var{addr}@r{]}
36079 @cindex @samp{c} packet
36080 Continue at @var{addr}, which is the address to resume. If @var{addr}
36081 is omitted, resume at current address.
36082
36083 This packet is deprecated for multi-threading support. @xref{vCont
36084 packet}.
36085
36086 Reply:
36087 @xref{Stop Reply Packets}, for the reply specifications.
36088
36089 @item C @var{sig}@r{[};@var{addr}@r{]}
36090 @cindex @samp{C} packet
36091 Continue with signal @var{sig} (hex signal number). If
36092 @samp{;@var{addr}} is omitted, resume at same address.
36093
36094 This packet is deprecated for multi-threading support. @xref{vCont
36095 packet}.
36096
36097 Reply:
36098 @xref{Stop Reply Packets}, for the reply specifications.
36099
36100 @item d
36101 @cindex @samp{d} packet
36102 Toggle debug flag.
36103
36104 Don't use this packet; instead, define a general set packet
36105 (@pxref{General Query Packets}).
36106
36107 @item D
36108 @itemx D;@var{pid}
36109 @cindex @samp{D} packet
36110 The first form of the packet is used to detach @value{GDBN} from the
36111 remote system. It is sent to the remote target
36112 before @value{GDBN} disconnects via the @code{detach} command.
36113
36114 The second form, including a process ID, is used when multiprocess
36115 protocol extensions are enabled (@pxref{multiprocess extensions}), to
36116 detach only a specific process. The @var{pid} is specified as a
36117 big-endian hex string.
36118
36119 Reply:
36120 @table @samp
36121 @item OK
36122 for success
36123 @item E @var{NN}
36124 for an error
36125 @end table
36126
36127 @item F @var{RC},@var{EE},@var{CF};@var{XX}
36128 @cindex @samp{F} packet
36129 A reply from @value{GDBN} to an @samp{F} packet sent by the target.
36130 This is part of the File-I/O protocol extension. @xref{File-I/O
36131 Remote Protocol Extension}, for the specification.
36132
36133 @item g
36134 @anchor{read registers packet}
36135 @cindex @samp{g} packet
36136 Read general registers.
36137
36138 Reply:
36139 @table @samp
36140 @item @var{XX@dots{}}
36141 Each byte of register data is described by two hex digits. The bytes
36142 with the register are transmitted in target byte order. The size of
36143 each register and their position within the @samp{g} packet are
36144 determined by the @value{GDBN} internal gdbarch functions
36145 @code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}.
36146
36147 When reading registers from a trace frame (@pxref{Analyze Collected
36148 Data,,Using the Collected Data}), the stub may also return a string of
36149 literal @samp{x}'s in place of the register data digits, to indicate
36150 that the corresponding register has not been collected, thus its value
36151 is unavailable. For example, for an architecture with 4 registers of
36152 4 bytes each, the following reply indicates to @value{GDBN} that
36153 registers 0 and 2 have not been collected, while registers 1 and 3
36154 have been collected, and both have zero value:
36155
36156 @smallexample
36157 -> @code{g}
36158 <- @code{xxxxxxxx00000000xxxxxxxx00000000}
36159 @end smallexample
36160
36161 @item E @var{NN}
36162 for an error.
36163 @end table
36164
36165 @item G @var{XX@dots{}}
36166 @cindex @samp{G} packet
36167 Write general registers. @xref{read registers packet}, for a
36168 description of the @var{XX@dots{}} data.
36169
36170 Reply:
36171 @table @samp
36172 @item OK
36173 for success
36174 @item E @var{NN}
36175 for an error
36176 @end table
36177
36178 @item H @var{op} @var{thread-id}
36179 @cindex @samp{H} packet
36180 Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
36181 @samp{G}, et.al.). Depending on the operation to be performed, @var{op}
36182 should be @samp{c} for step and continue operations (note that this
36183 is deprecated, supporting the @samp{vCont} command is a better
36184 option), and @samp{g} for other operations. The thread designator
36185 @var{thread-id} has the format and interpretation described in
36186 @ref{thread-id syntax}.
36187
36188 Reply:
36189 @table @samp
36190 @item OK
36191 for success
36192 @item E @var{NN}
36193 for an error
36194 @end table
36195
36196 @c FIXME: JTC:
36197 @c 'H': How restrictive (or permissive) is the thread model. If a
36198 @c thread is selected and stopped, are other threads allowed
36199 @c to continue to execute? As I mentioned above, I think the
36200 @c semantics of each command when a thread is selected must be
36201 @c described. For example:
36202 @c
36203 @c 'g': If the stub supports threads and a specific thread is
36204 @c selected, returns the register block from that thread;
36205 @c otherwise returns current registers.
36206 @c
36207 @c 'G' If the stub supports threads and a specific thread is
36208 @c selected, sets the registers of the register block of
36209 @c that thread; otherwise sets current registers.
36210
36211 @item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
36212 @anchor{cycle step packet}
36213 @cindex @samp{i} packet
36214 Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
36215 present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
36216 step starting at that address.
36217
36218 @item I
36219 @cindex @samp{I} packet
36220 Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
36221 step packet}.
36222
36223 @item k
36224 @cindex @samp{k} packet
36225 Kill request.
36226
36227 The exact effect of this packet is not specified.
36228
36229 For a bare-metal target, it may power cycle or reset the target
36230 system. For that reason, the @samp{k} packet has no reply.
36231
36232 For a single-process target, it may kill that process if possible.
36233
36234 A multiple-process target may choose to kill just one process, or all
36235 that are under @value{GDBN}'s control. For more precise control, use
36236 the vKill packet (@pxref{vKill packet}).
36237
36238 If the target system immediately closes the connection in response to
36239 @samp{k}, @value{GDBN} does not consider the lack of packet
36240 acknowledgment to be an error, and assumes the kill was successful.
36241
36242 If connected using @kbd{target extended-remote}, and the target does
36243 not close the connection in response to a kill request, @value{GDBN}
36244 probes the target state as if a new connection was opened
36245 (@pxref{? packet}).
36246
36247 @item m @var{addr},@var{length}
36248 @cindex @samp{m} packet
36249 Read @var{length} addressable memory units starting at address @var{addr}
36250 (@pxref{addressable memory unit}). Note that @var{addr} may not be aligned to
36251 any particular boundary.
36252
36253 The stub need not use any particular size or alignment when gathering
36254 data from memory for the response; even if @var{addr} is word-aligned
36255 and @var{length} is a multiple of the word size, the stub is free to
36256 use byte accesses, or not. For this reason, this packet may not be
36257 suitable for accessing memory-mapped I/O devices.
36258 @cindex alignment of remote memory accesses
36259 @cindex size of remote memory accesses
36260 @cindex memory, alignment and size of remote accesses
36261
36262 Reply:
36263 @table @samp
36264 @item @var{XX@dots{}}
36265 Memory contents; each byte is transmitted as a two-digit hexadecimal number.
36266 The reply may contain fewer addressable memory units than requested if the
36267 server was able to read only part of the region of memory.
36268 @item E @var{NN}
36269 @var{NN} is errno
36270 @end table
36271
36272 @item M @var{addr},@var{length}:@var{XX@dots{}}
36273 @cindex @samp{M} packet
36274 Write @var{length} addressable memory units starting at address @var{addr}
36275 (@pxref{addressable memory unit}). The data is given by @var{XX@dots{}}; each
36276 byte is transmitted as a two-digit hexadecimal number.
36277
36278 Reply:
36279 @table @samp
36280 @item OK
36281 for success
36282 @item E @var{NN}
36283 for an error (this includes the case where only part of the data was
36284 written).
36285 @end table
36286
36287 @item p @var{n}
36288 @cindex @samp{p} packet
36289 Read the value of register @var{n}; @var{n} is in hex.
36290 @xref{read registers packet}, for a description of how the returned
36291 register value is encoded.
36292
36293 Reply:
36294 @table @samp
36295 @item @var{XX@dots{}}
36296 the register's value
36297 @item E @var{NN}
36298 for an error
36299 @item @w{}
36300 Indicating an unrecognized @var{query}.
36301 @end table
36302
36303 @item P @var{n@dots{}}=@var{r@dots{}}
36304 @anchor{write register packet}
36305 @cindex @samp{P} packet
36306 Write register @var{n@dots{}} with value @var{r@dots{}}. The register
36307 number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
36308 digits for each byte in the register (target byte order).
36309
36310 Reply:
36311 @table @samp
36312 @item OK
36313 for success
36314 @item E @var{NN}
36315 for an error
36316 @end table
36317
36318 @item q @var{name} @var{params}@dots{}
36319 @itemx Q @var{name} @var{params}@dots{}
36320 @cindex @samp{q} packet
36321 @cindex @samp{Q} packet
36322 General query (@samp{q}) and set (@samp{Q}). These packets are
36323 described fully in @ref{General Query Packets}.
36324
36325 @item r
36326 @cindex @samp{r} packet
36327 Reset the entire system.
36328
36329 Don't use this packet; use the @samp{R} packet instead.
36330
36331 @item R @var{XX}
36332 @cindex @samp{R} packet
36333 Restart the program being debugged. The @var{XX}, while needed, is ignored.
36334 This packet is only available in extended mode (@pxref{extended mode}).
36335
36336 The @samp{R} packet has no reply.
36337
36338 @item s @r{[}@var{addr}@r{]}
36339 @cindex @samp{s} packet
36340 Single step, resuming at @var{addr}. If
36341 @var{addr} is omitted, resume at same address.
36342
36343 This packet is deprecated for multi-threading support. @xref{vCont
36344 packet}.
36345
36346 Reply:
36347 @xref{Stop Reply Packets}, for the reply specifications.
36348
36349 @item S @var{sig}@r{[};@var{addr}@r{]}
36350 @anchor{step with signal packet}
36351 @cindex @samp{S} packet
36352 Step with signal. This is analogous to the @samp{C} packet, but
36353 requests a single-step, rather than a normal resumption of execution.
36354
36355 This packet is deprecated for multi-threading support. @xref{vCont
36356 packet}.
36357
36358 Reply:
36359 @xref{Stop Reply Packets}, for the reply specifications.
36360
36361 @item t @var{addr}:@var{PP},@var{MM}
36362 @cindex @samp{t} packet
36363 Search backwards starting at address @var{addr} for a match with pattern
36364 @var{PP} and mask @var{MM}, both of which are are 4 byte long.
36365 There must be at least 3 digits in @var{addr}.
36366
36367 @item T @var{thread-id}
36368 @cindex @samp{T} packet
36369 Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
36370
36371 Reply:
36372 @table @samp
36373 @item OK
36374 thread is still alive
36375 @item E @var{NN}
36376 thread is dead
36377 @end table
36378
36379 @item v
36380 Packets starting with @samp{v} are identified by a multi-letter name,
36381 up to the first @samp{;} or @samp{?} (or the end of the packet).
36382
36383 @item vAttach;@var{pid}
36384 @cindex @samp{vAttach} packet
36385 Attach to a new process with the specified process ID @var{pid}.
36386 The process ID is a
36387 hexadecimal integer identifying the process. In all-stop mode, all
36388 threads in the attached process are stopped; in non-stop mode, it may be
36389 attached without being stopped if that is supported by the target.
36390
36391 @c In non-stop mode, on a successful vAttach, the stub should set the
36392 @c current thread to a thread of the newly-attached process. After
36393 @c attaching, GDB queries for the attached process's thread ID with qC.
36394 @c Also note that, from a user perspective, whether or not the
36395 @c target is stopped on attach in non-stop mode depends on whether you
36396 @c use the foreground or background version of the attach command, not
36397 @c on what vAttach does; GDB does the right thing with respect to either
36398 @c stopping or restarting threads.
36399
36400 This packet is only available in extended mode (@pxref{extended mode}).
36401
36402 Reply:
36403 @table @samp
36404 @item E @var{nn}
36405 for an error
36406 @item @r{Any stop packet}
36407 for success in all-stop mode (@pxref{Stop Reply Packets})
36408 @item OK
36409 for success in non-stop mode (@pxref{Remote Non-Stop})
36410 @end table
36411
36412 @item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
36413 @cindex @samp{vCont} packet
36414 @anchor{vCont packet}
36415 Resume the inferior, specifying different actions for each thread.
36416
36417 For each inferior thread, the leftmost action with a matching
36418 @var{thread-id} is applied. Threads that don't match any action
36419 remain in their current state. Thread IDs are specified using the
36420 syntax described in @ref{thread-id syntax}. If multiprocess
36421 extensions (@pxref{multiprocess extensions}) are supported, actions
36422 can be specified to match all threads in a process by using the
36423 @samp{p@var{pid}.-1} form of the @var{thread-id}. An action with no
36424 @var{thread-id} matches all threads. Specifying no actions is an
36425 error.
36426
36427 Currently supported actions are:
36428
36429 @table @samp
36430 @item c
36431 Continue.
36432 @item C @var{sig}
36433 Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
36434 @item s
36435 Step.
36436 @item S @var{sig}
36437 Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
36438 @item t
36439 Stop.
36440 @item r @var{start},@var{end}
36441 Step once, and then keep stepping as long as the thread stops at
36442 addresses between @var{start} (inclusive) and @var{end} (exclusive).
36443 The remote stub reports a stop reply when either the thread goes out
36444 of the range or is stopped due to an unrelated reason, such as hitting
36445 a breakpoint. @xref{range stepping}.
36446
36447 If the range is empty (@var{start} == @var{end}), then the action
36448 becomes equivalent to the @samp{s} action. In other words,
36449 single-step once, and report the stop (even if the stepped instruction
36450 jumps to @var{start}).
36451
36452 (A stop reply may be sent at any point even if the PC is still within
36453 the stepping range; for example, it is valid to implement this packet
36454 in a degenerate way as a single instruction step operation.)
36455
36456 @end table
36457
36458 The optional argument @var{addr} normally associated with the
36459 @samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
36460 not supported in @samp{vCont}.
36461
36462 The @samp{t} action is only relevant in non-stop mode
36463 (@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
36464 A stop reply should be generated for any affected thread not already stopped.
36465 When a thread is stopped by means of a @samp{t} action,
36466 the corresponding stop reply should indicate that the thread has stopped with
36467 signal @samp{0}, regardless of whether the target uses some other signal
36468 as an implementation detail.
36469
36470 The server must ignore @samp{c}, @samp{C}, @samp{s}, @samp{S}, and
36471 @samp{r} actions for threads that are already running. Conversely,
36472 the server must ignore @samp{t} actions for threads that are already
36473 stopped.
36474
36475 @emph{Note:} In non-stop mode, a thread is considered running until
36476 @value{GDBN} acknowleges an asynchronous stop notification for it with
36477 the @samp{vStopped} packet (@pxref{Remote Non-Stop}).
36478
36479 The stub must support @samp{vCont} if it reports support for
36480 multiprocess extensions (@pxref{multiprocess extensions}).
36481
36482 Reply:
36483 @xref{Stop Reply Packets}, for the reply specifications.
36484
36485 @item vCont?
36486 @cindex @samp{vCont?} packet
36487 Request a list of actions supported by the @samp{vCont} packet.
36488
36489 Reply:
36490 @table @samp
36491 @item vCont@r{[};@var{action}@dots{}@r{]}
36492 The @samp{vCont} packet is supported. Each @var{action} is a supported
36493 command in the @samp{vCont} packet.
36494 @item @w{}
36495 The @samp{vCont} packet is not supported.
36496 @end table
36497
36498 @anchor{vCtrlC packet}
36499 @item vCtrlC
36500 @cindex @samp{vCtrlC} packet
36501 Interrupt remote target as if a control-C was pressed on the remote
36502 terminal. This is the equivalent to reacting to the @code{^C}
36503 (@samp{\003}, the control-C character) character in all-stop mode
36504 while the target is running, except this works in non-stop mode.
36505 @xref{interrupting remote targets}, for more info on the all-stop
36506 variant.
36507
36508 Reply:
36509 @table @samp
36510 @item E @var{nn}
36511 for an error
36512 @item OK
36513 for success
36514 @end table
36515
36516 @item vFile:@var{operation}:@var{parameter}@dots{}
36517 @cindex @samp{vFile} packet
36518 Perform a file operation on the target system. For details,
36519 see @ref{Host I/O Packets}.
36520
36521 @item vFlashErase:@var{addr},@var{length}
36522 @cindex @samp{vFlashErase} packet
36523 Direct the stub to erase @var{length} bytes of flash starting at
36524 @var{addr}. The region may enclose any number of flash blocks, but
36525 its start and end must fall on block boundaries, as indicated by the
36526 flash block size appearing in the memory map (@pxref{Memory Map
36527 Format}). @value{GDBN} groups flash memory programming operations
36528 together, and sends a @samp{vFlashDone} request after each group; the
36529 stub is allowed to delay erase operation until the @samp{vFlashDone}
36530 packet is received.
36531
36532 Reply:
36533 @table @samp
36534 @item OK
36535 for success
36536 @item E @var{NN}
36537 for an error
36538 @end table
36539
36540 @item vFlashWrite:@var{addr}:@var{XX@dots{}}
36541 @cindex @samp{vFlashWrite} packet
36542 Direct the stub to write data to flash address @var{addr}. The data
36543 is passed in binary form using the same encoding as for the @samp{X}
36544 packet (@pxref{Binary Data}). The memory ranges specified by
36545 @samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
36546 not overlap, and must appear in order of increasing addresses
36547 (although @samp{vFlashErase} packets for higher addresses may already
36548 have been received; the ordering is guaranteed only between
36549 @samp{vFlashWrite} packets). If a packet writes to an address that was
36550 neither erased by a preceding @samp{vFlashErase} packet nor by some other
36551 target-specific method, the results are unpredictable.
36552
36553
36554 Reply:
36555 @table @samp
36556 @item OK
36557 for success
36558 @item E.memtype
36559 for vFlashWrite addressing non-flash memory
36560 @item E @var{NN}
36561 for an error
36562 @end table
36563
36564 @item vFlashDone
36565 @cindex @samp{vFlashDone} packet
36566 Indicate to the stub that flash programming operation is finished.
36567 The stub is permitted to delay or batch the effects of a group of
36568 @samp{vFlashErase} and @samp{vFlashWrite} packets until a
36569 @samp{vFlashDone} packet is received. The contents of the affected
36570 regions of flash memory are unpredictable until the @samp{vFlashDone}
36571 request is completed.
36572
36573 @item vKill;@var{pid}
36574 @cindex @samp{vKill} packet
36575 @anchor{vKill packet}
36576 Kill the process with the specified process ID @var{pid}, which is a
36577 hexadecimal integer identifying the process. This packet is used in
36578 preference to @samp{k} when multiprocess protocol extensions are
36579 supported; see @ref{multiprocess extensions}.
36580
36581 Reply:
36582 @table @samp
36583 @item E @var{nn}
36584 for an error
36585 @item OK
36586 for success
36587 @end table
36588
36589 @item vMustReplyEmpty
36590 @cindex @samp{vMustReplyEmpty} packet
36591 The correct reply to an unknown @samp{v} packet is to return the empty
36592 string, however, some older versions of @command{gdbserver} would
36593 incorrectly return @samp{OK} for unknown @samp{v} packets.
36594
36595 The @samp{vMustReplyEmpty} is used as a feature test to check how
36596 @command{gdbserver} handles unknown packets, it is important that this
36597 packet be handled in the same way as other unknown @samp{v} packets.
36598 If this packet is handled differently to other unknown @samp{v}
36599 packets then it is possile that @value{GDBN} may run into problems in
36600 other areas, specifically around use of @samp{vFile:setfs:}.
36601
36602 @item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
36603 @cindex @samp{vRun} packet
36604 Run the program @var{filename}, passing it each @var{argument} on its
36605 command line. The file and arguments are hex-encoded strings. If
36606 @var{filename} is an empty string, the stub may use a default program
36607 (e.g.@: the last program run). The program is created in the stopped
36608 state.
36609
36610 @c FIXME: What about non-stop mode?
36611
36612 This packet is only available in extended mode (@pxref{extended mode}).
36613
36614 Reply:
36615 @table @samp
36616 @item E @var{nn}
36617 for an error
36618 @item @r{Any stop packet}
36619 for success (@pxref{Stop Reply Packets})
36620 @end table
36621
36622 @item vStopped
36623 @cindex @samp{vStopped} packet
36624 @xref{Notification Packets}.
36625
36626 @item X @var{addr},@var{length}:@var{XX@dots{}}
36627 @anchor{X packet}
36628 @cindex @samp{X} packet
36629 Write data to memory, where the data is transmitted in binary.
36630 Memory is specified by its address @var{addr} and number of addressable memory
36631 units @var{length} (@pxref{addressable memory unit});
36632 @samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
36633
36634 Reply:
36635 @table @samp
36636 @item OK
36637 for success
36638 @item E @var{NN}
36639 for an error
36640 @end table
36641
36642 @item z @var{type},@var{addr},@var{kind}
36643 @itemx Z @var{type},@var{addr},@var{kind}
36644 @anchor{insert breakpoint or watchpoint packet}
36645 @cindex @samp{z} packet
36646 @cindex @samp{Z} packets
36647 Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
36648 watchpoint starting at address @var{address} of kind @var{kind}.
36649
36650 Each breakpoint and watchpoint packet @var{type} is documented
36651 separately.
36652
36653 @emph{Implementation notes: A remote target shall return an empty string
36654 for an unrecognized breakpoint or watchpoint packet @var{type}. A
36655 remote target shall support either both or neither of a given
36656 @samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
36657 avoid potential problems with duplicate packets, the operations should
36658 be implemented in an idempotent way.}
36659
36660 @item z0,@var{addr},@var{kind}
36661 @itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]}
36662 @cindex @samp{z0} packet
36663 @cindex @samp{Z0} packet
36664 Insert (@samp{Z0}) or remove (@samp{z0}) a software breakpoint at address
36665 @var{addr} of type @var{kind}.
36666
36667 A software breakpoint is implemented by replacing the instruction at
36668 @var{addr} with a software breakpoint or trap instruction. The
36669 @var{kind} is target-specific and typically indicates the size of the
36670 breakpoint in bytes that should be inserted. E.g., the @sc{arm} and
36671 @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
36672 architectures have additional meanings for @var{kind}
36673 (@pxref{Architecture-Specific Protocol Details}); if no
36674 architecture-specific value is being used, it should be @samp{0}.
36675 @var{kind} is hex-encoded. @var{cond_list} is an optional list of
36676 conditional expressions in bytecode form that should be evaluated on
36677 the target's side. These are the conditions that should be taken into
36678 consideration when deciding if the breakpoint trigger should be
36679 reported back to @value{GDBN}.
36680
36681 See also the @samp{swbreak} stop reason (@pxref{swbreak stop reason})
36682 for how to best report a software breakpoint event to @value{GDBN}.
36683
36684 The @var{cond_list} parameter is comprised of a series of expressions,
36685 concatenated without separators. Each expression has the following form:
36686
36687 @table @samp
36688
36689 @item X @var{len},@var{expr}
36690 @var{len} is the length of the bytecode expression and @var{expr} is the
36691 actual conditional expression in bytecode form.
36692
36693 @end table
36694
36695 The optional @var{cmd_list} parameter introduces commands that may be
36696 run on the target, rather than being reported back to @value{GDBN}.
36697 The parameter starts with a numeric flag @var{persist}; if the flag is
36698 nonzero, then the breakpoint may remain active and the commands
36699 continue to be run even when @value{GDBN} disconnects from the target.
36700 Following this flag is a series of expressions concatenated with no
36701 separators. Each expression has the following form:
36702
36703 @table @samp
36704
36705 @item X @var{len},@var{expr}
36706 @var{len} is the length of the bytecode expression and @var{expr} is the
36707 actual commands expression in bytecode form.
36708
36709 @end table
36710
36711 @emph{Implementation note: It is possible for a target to copy or move
36712 code that contains software breakpoints (e.g., when implementing
36713 overlays). The behavior of this packet, in the presence of such a
36714 target, is not defined.}
36715
36716 Reply:
36717 @table @samp
36718 @item OK
36719 success
36720 @item @w{}
36721 not supported
36722 @item E @var{NN}
36723 for an error
36724 @end table
36725
36726 @item z1,@var{addr},@var{kind}
36727 @itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]}
36728 @cindex @samp{z1} packet
36729 @cindex @samp{Z1} packet
36730 Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
36731 address @var{addr}.
36732
36733 A hardware breakpoint is implemented using a mechanism that is not
36734 dependent on being able to modify the target's memory. The
36735 @var{kind}, @var{cond_list}, and @var{cmd_list} arguments have the
36736 same meaning as in @samp{Z0} packets.
36737
36738 @emph{Implementation note: A hardware breakpoint is not affected by code
36739 movement.}
36740
36741 Reply:
36742 @table @samp
36743 @item OK
36744 success
36745 @item @w{}
36746 not supported
36747 @item E @var{NN}
36748 for an error
36749 @end table
36750
36751 @item z2,@var{addr},@var{kind}
36752 @itemx Z2,@var{addr},@var{kind}
36753 @cindex @samp{z2} packet
36754 @cindex @samp{Z2} packet
36755 Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
36756 The number of bytes to watch is specified by @var{kind}.
36757
36758 Reply:
36759 @table @samp
36760 @item OK
36761 success
36762 @item @w{}
36763 not supported
36764 @item E @var{NN}
36765 for an error
36766 @end table
36767
36768 @item z3,@var{addr},@var{kind}
36769 @itemx Z3,@var{addr},@var{kind}
36770 @cindex @samp{z3} packet
36771 @cindex @samp{Z3} packet
36772 Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
36773 The number of bytes to watch is specified by @var{kind}.
36774
36775 Reply:
36776 @table @samp
36777 @item OK
36778 success
36779 @item @w{}
36780 not supported
36781 @item E @var{NN}
36782 for an error
36783 @end table
36784
36785 @item z4,@var{addr},@var{kind}
36786 @itemx Z4,@var{addr},@var{kind}
36787 @cindex @samp{z4} packet
36788 @cindex @samp{Z4} packet
36789 Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
36790 The number of bytes to watch is specified by @var{kind}.
36791
36792 Reply:
36793 @table @samp
36794 @item OK
36795 success
36796 @item @w{}
36797 not supported
36798 @item E @var{NN}
36799 for an error
36800 @end table
36801
36802 @end table
36803
36804 @node Stop Reply Packets
36805 @section Stop Reply Packets
36806 @cindex stop reply packets
36807
36808 The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
36809 @samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
36810 receive any of the below as a reply. Except for @samp{?}
36811 and @samp{vStopped}, that reply is only returned
36812 when the target halts. In the below the exact meaning of @dfn{signal
36813 number} is defined by the header @file{include/gdb/signals.h} in the
36814 @value{GDBN} source code.
36815
36816 In non-stop mode, the server will simply reply @samp{OK} to commands
36817 such as @samp{vCont}; any stop will be the subject of a future
36818 notification. @xref{Remote Non-Stop}.
36819
36820 As in the description of request packets, we include spaces in the
36821 reply templates for clarity; these are not part of the reply packet's
36822 syntax. No @value{GDBN} stop reply packet uses spaces to separate its
36823 components.
36824
36825 @table @samp
36826
36827 @item S @var{AA}
36828 The program received signal number @var{AA} (a two-digit hexadecimal
36829 number). This is equivalent to a @samp{T} response with no
36830 @var{n}:@var{r} pairs.
36831
36832 @item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
36833 @cindex @samp{T} packet reply
36834 The program received signal number @var{AA} (a two-digit hexadecimal
36835 number). This is equivalent to an @samp{S} response, except that the
36836 @samp{@var{n}:@var{r}} pairs can carry values of important registers
36837 and other information directly in the stop reply packet, reducing
36838 round-trip latency. Single-step and breakpoint traps are reported
36839 this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
36840
36841 @itemize @bullet
36842 @item
36843 If @var{n} is a hexadecimal number, it is a register number, and the
36844 corresponding @var{r} gives that register's value. The data @var{r} is a
36845 series of bytes in target byte order, with each byte given by a
36846 two-digit hex number.
36847
36848 @item
36849 If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
36850 the stopped thread, as specified in @ref{thread-id syntax}.
36851
36852 @item
36853 If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
36854 the core on which the stop event was detected.
36855
36856 @item
36857 If @var{n} is a recognized @dfn{stop reason}, it describes a more
36858 specific event that stopped the target. The currently defined stop
36859 reasons are listed below. The @var{aa} should be @samp{05}, the trap
36860 signal. At most one stop reason should be present.
36861
36862 @item
36863 Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
36864 and go on to the next; this allows us to extend the protocol in the
36865 future.
36866 @end itemize
36867
36868 The currently defined stop reasons are:
36869
36870 @table @samp
36871 @item watch
36872 @itemx rwatch
36873 @itemx awatch
36874 The packet indicates a watchpoint hit, and @var{r} is the data address, in
36875 hex.
36876
36877 @item syscall_entry
36878 @itemx syscall_return
36879 The packet indicates a syscall entry or return, and @var{r} is the
36880 syscall number, in hex.
36881
36882 @cindex shared library events, remote reply
36883 @item library
36884 The packet indicates that the loaded libraries have changed.
36885 @value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
36886 list of loaded libraries. The @var{r} part is ignored.
36887
36888 @cindex replay log events, remote reply
36889 @item replaylog
36890 The packet indicates that the target cannot continue replaying
36891 logged execution events, because it has reached the end (or the
36892 beginning when executing backward) of the log. The value of @var{r}
36893 will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
36894 for more information.
36895
36896 @item swbreak
36897 @anchor{swbreak stop reason}
36898 The packet indicates a software breakpoint instruction was executed,
36899 irrespective of whether it was @value{GDBN} that planted the
36900 breakpoint or the breakpoint is hardcoded in the program. The @var{r}
36901 part must be left empty.
36902
36903 On some architectures, such as x86, at the architecture level, when a
36904 breakpoint instruction executes the program counter points at the
36905 breakpoint address plus an offset. On such targets, the stub is
36906 responsible for adjusting the PC to point back at the breakpoint
36907 address.
36908
36909 This packet should not be sent by default; older @value{GDBN} versions
36910 did not support it. @value{GDBN} requests it, by supplying an
36911 appropriate @samp{qSupported} feature (@pxref{qSupported}). The
36912 remote stub must also supply the appropriate @samp{qSupported} feature
36913 indicating support.
36914
36915 This packet is required for correct non-stop mode operation.
36916
36917 @item hwbreak
36918 The packet indicates the target stopped for a hardware breakpoint.
36919 The @var{r} part must be left empty.
36920
36921 The same remarks about @samp{qSupported} and non-stop mode above
36922 apply.
36923
36924 @cindex fork events, remote reply
36925 @item fork
36926 The packet indicates that @code{fork} was called, and @var{r}
36927 is the thread ID of the new child process. Refer to
36928 @ref{thread-id syntax} for the format of the @var{thread-id}
36929 field. This packet is only applicable to targets that support
36930 fork events.
36931
36932 This packet should not be sent by default; older @value{GDBN} versions
36933 did not support it. @value{GDBN} requests it, by supplying an
36934 appropriate @samp{qSupported} feature (@pxref{qSupported}). The
36935 remote stub must also supply the appropriate @samp{qSupported} feature
36936 indicating support.
36937
36938 @cindex vfork events, remote reply
36939 @item vfork
36940 The packet indicates that @code{vfork} was called, and @var{r}
36941 is the thread ID of the new child process. Refer to
36942 @ref{thread-id syntax} for the format of the @var{thread-id}
36943 field. This packet is only applicable to targets that support
36944 vfork events.
36945
36946 This packet should not be sent by default; older @value{GDBN} versions
36947 did not support it. @value{GDBN} requests it, by supplying an
36948 appropriate @samp{qSupported} feature (@pxref{qSupported}). The
36949 remote stub must also supply the appropriate @samp{qSupported} feature
36950 indicating support.
36951
36952 @cindex vforkdone events, remote reply
36953 @item vforkdone
36954 The packet indicates that a child process created by a vfork
36955 has either called @code{exec} or terminated, so that the
36956 address spaces of the parent and child process are no longer
36957 shared. The @var{r} part is ignored. This packet is only
36958 applicable to targets that support vforkdone events.
36959
36960 This packet should not be sent by default; older @value{GDBN} versions
36961 did not support it. @value{GDBN} requests it, by supplying an
36962 appropriate @samp{qSupported} feature (@pxref{qSupported}). The
36963 remote stub must also supply the appropriate @samp{qSupported} feature
36964 indicating support.
36965
36966 @cindex exec events, remote reply
36967 @item exec
36968 The packet indicates that @code{execve} was called, and @var{r}
36969 is the absolute pathname of the file that was executed, in hex.
36970 This packet is only applicable to targets that support exec events.
36971
36972 This packet should not be sent by default; older @value{GDBN} versions
36973 did not support it. @value{GDBN} requests it, by supplying an
36974 appropriate @samp{qSupported} feature (@pxref{qSupported}). The
36975 remote stub must also supply the appropriate @samp{qSupported} feature
36976 indicating support.
36977
36978 @cindex thread create event, remote reply
36979 @anchor{thread create event}
36980 @item create
36981 The packet indicates that the thread was just created. The new thread
36982 is stopped until @value{GDBN} sets it running with a resumption packet
36983 (@pxref{vCont packet}). This packet should not be sent by default;
36984 @value{GDBN} requests it with the @ref{QThreadEvents} packet. See
36985 also the @samp{w} (@pxref{thread exit event}) remote reply below. The
36986 @var{r} part is ignored.
36987
36988 @end table
36989
36990 @item W @var{AA}
36991 @itemx W @var{AA} ; process:@var{pid}
36992 The process exited, and @var{AA} is the exit status. This is only
36993 applicable to certain targets.
36994
36995 The second form of the response, including the process ID of the
36996 exited process, can be used only when @value{GDBN} has reported
36997 support for multiprocess protocol extensions; see @ref{multiprocess
36998 extensions}. Both @var{AA} and @var{pid} are formatted as big-endian
36999 hex strings.
37000
37001 @item X @var{AA}
37002 @itemx X @var{AA} ; process:@var{pid}
37003 The process terminated with signal @var{AA}.
37004
37005 The second form of the response, including the process ID of the
37006 terminated process, can be used only when @value{GDBN} has reported
37007 support for multiprocess protocol extensions; see @ref{multiprocess
37008 extensions}. Both @var{AA} and @var{pid} are formatted as big-endian
37009 hex strings.
37010
37011 @anchor{thread exit event}
37012 @cindex thread exit event, remote reply
37013 @item w @var{AA} ; @var{tid}
37014
37015 The thread exited, and @var{AA} is the exit status. This response
37016 should not be sent by default; @value{GDBN} requests it with the
37017 @ref{QThreadEvents} packet. See also @ref{thread create event} above.
37018 @var{AA} is formatted as a big-endian hex string.
37019
37020 @item N
37021 There are no resumed threads left in the target. In other words, even
37022 though the process is alive, the last resumed thread has exited. For
37023 example, say the target process has two threads: thread 1 and thread
37024 2. The client leaves thread 1 stopped, and resumes thread 2, which
37025 subsequently exits. At this point, even though the process is still
37026 alive, and thus no @samp{W} stop reply is sent, no thread is actually
37027 executing either. The @samp{N} stop reply thus informs the client
37028 that it can stop waiting for stop replies. This packet should not be
37029 sent by default; older @value{GDBN} versions did not support it.
37030 @value{GDBN} requests it, by supplying an appropriate
37031 @samp{qSupported} feature (@pxref{qSupported}). The remote stub must
37032 also supply the appropriate @samp{qSupported} feature indicating
37033 support.
37034
37035 @item O @var{XX}@dots{}
37036 @samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
37037 written as the program's console output. This can happen at any time
37038 while the program is running and the debugger should continue to wait
37039 for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
37040
37041 @item F @var{call-id},@var{parameter}@dots{}
37042 @var{call-id} is the identifier which says which host system call should
37043 be called. This is just the name of the function. Translation into the
37044 correct system call is only applicable as it's defined in @value{GDBN}.
37045 @xref{File-I/O Remote Protocol Extension}, for a list of implemented
37046 system calls.
37047
37048 @samp{@var{parameter}@dots{}} is a list of parameters as defined for
37049 this very system call.
37050
37051 The target replies with this packet when it expects @value{GDBN} to
37052 call a host system call on behalf of the target. @value{GDBN} replies
37053 with an appropriate @samp{F} packet and keeps up waiting for the next
37054 reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
37055 or @samp{s} action is expected to be continued. @xref{File-I/O Remote
37056 Protocol Extension}, for more details.
37057
37058 @end table
37059
37060 @node General Query Packets
37061 @section General Query Packets
37062 @cindex remote query requests
37063
37064 Packets starting with @samp{q} are @dfn{general query packets};
37065 packets starting with @samp{Q} are @dfn{general set packets}. General
37066 query and set packets are a semi-unified form for retrieving and
37067 sending information to and from the stub.
37068
37069 The initial letter of a query or set packet is followed by a name
37070 indicating what sort of thing the packet applies to. For example,
37071 @value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
37072 definitions with the stub. These packet names follow some
37073 conventions:
37074
37075 @itemize @bullet
37076 @item
37077 The name must not contain commas, colons or semicolons.
37078 @item
37079 Most @value{GDBN} query and set packets have a leading upper case
37080 letter.
37081 @item
37082 The names of custom vendor packets should use a company prefix, in
37083 lower case, followed by a period. For example, packets designed at
37084 the Acme Corporation might begin with @samp{qacme.foo} (for querying
37085 foos) or @samp{Qacme.bar} (for setting bars).
37086 @end itemize
37087
37088 The name of a query or set packet should be separated from any
37089 parameters by a @samp{:}; the parameters themselves should be
37090 separated by @samp{,} or @samp{;}. Stubs must be careful to match the
37091 full packet name, and check for a separator or the end of the packet,
37092 in case two packet names share a common prefix. New packets should not begin
37093 with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
37094 packets predate these conventions, and have arguments without any terminator
37095 for the packet name; we suspect they are in widespread use in places that
37096 are difficult to upgrade. The @samp{qC} packet has no arguments, but some
37097 existing stubs (e.g.@: RedBoot) are known to not check for the end of the
37098 packet.}.
37099
37100 Like the descriptions of the other packets, each description here
37101 has a template showing the packet's overall syntax, followed by an
37102 explanation of the packet's meaning. We include spaces in some of the
37103 templates for clarity; these are not part of the packet's syntax. No
37104 @value{GDBN} packet uses spaces to separate its components.
37105
37106 Here are the currently defined query and set packets:
37107
37108 @table @samp
37109
37110 @item QAgent:1
37111 @itemx QAgent:0
37112 Turn on or off the agent as a helper to perform some debugging operations
37113 delegated from @value{GDBN} (@pxref{Control Agent}).
37114
37115 @item QAllow:@var{op}:@var{val}@dots{}
37116 @cindex @samp{QAllow} packet
37117 Specify which operations @value{GDBN} expects to request of the
37118 target, as a semicolon-separated list of operation name and value
37119 pairs. Possible values for @var{op} include @samp{WriteReg},
37120 @samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace},
37121 @samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0,
37122 indicating that @value{GDBN} will not request the operation, or 1,
37123 indicating that it may. (The target can then use this to set up its
37124 own internals optimally, for instance if the debugger never expects to
37125 insert breakpoints, it may not need to install its own trap handler.)
37126
37127 @item qC
37128 @cindex current thread, remote request
37129 @cindex @samp{qC} packet
37130 Return the current thread ID.
37131
37132 Reply:
37133 @table @samp
37134 @item QC @var{thread-id}
37135 Where @var{thread-id} is a thread ID as documented in
37136 @ref{thread-id syntax}.
37137 @item @r{(anything else)}
37138 Any other reply implies the old thread ID.
37139 @end table
37140
37141 @item qCRC:@var{addr},@var{length}
37142 @cindex CRC of memory block, remote request
37143 @cindex @samp{qCRC} packet
37144 @anchor{qCRC packet}
37145 Compute the CRC checksum of a block of memory using CRC-32 defined in
37146 IEEE 802.3. The CRC is computed byte at a time, taking the most
37147 significant bit of each byte first. The initial pattern code
37148 @code{0xffffffff} is used to ensure leading zeros affect the CRC.
37149
37150 @emph{Note:} This is the same CRC used in validating separate debug
37151 files (@pxref{Separate Debug Files, , Debugging Information in Separate
37152 Files}). However the algorithm is slightly different. When validating
37153 separate debug files, the CRC is computed taking the @emph{least}
37154 significant bit of each byte first, and the final result is inverted to
37155 detect trailing zeros.
37156
37157 Reply:
37158 @table @samp
37159 @item E @var{NN}
37160 An error (such as memory fault)
37161 @item C @var{crc32}
37162 The specified memory region's checksum is @var{crc32}.
37163 @end table
37164
37165 @item QDisableRandomization:@var{value}
37166 @cindex disable address space randomization, remote request
37167 @cindex @samp{QDisableRandomization} packet
37168 Some target operating systems will randomize the virtual address space
37169 of the inferior process as a security feature, but provide a feature
37170 to disable such randomization, e.g.@: to allow for a more deterministic
37171 debugging experience. On such systems, this packet with a @var{value}
37172 of 1 directs the target to disable address space randomization for
37173 processes subsequently started via @samp{vRun} packets, while a packet
37174 with a @var{value} of 0 tells the target to enable address space
37175 randomization.
37176
37177 This packet is only available in extended mode (@pxref{extended mode}).
37178
37179 Reply:
37180 @table @samp
37181 @item OK
37182 The request succeeded.
37183
37184 @item E @var{nn}
37185 An error occurred. The error number @var{nn} is given as hex digits.
37186
37187 @item @w{}
37188 An empty reply indicates that @samp{QDisableRandomization} is not supported
37189 by the stub.
37190 @end table
37191
37192 This packet is not probed by default; the remote stub must request it,
37193 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37194 This should only be done on targets that actually support disabling
37195 address space randomization.
37196
37197 @item QStartupWithShell:@var{value}
37198 @cindex startup with shell, remote request
37199 @cindex @samp{QStartupWithShell} packet
37200 On UNIX-like targets, it is possible to start the inferior using a
37201 shell program. This is the default behavior on both @value{GDBN} and
37202 @command{gdbserver} (@pxref{set startup-with-shell}). This packet is
37203 used to inform @command{gdbserver} whether it should start the
37204 inferior using a shell or not.
37205
37206 If @var{value} is @samp{0}, @command{gdbserver} will not use a shell
37207 to start the inferior. If @var{value} is @samp{1},
37208 @command{gdbserver} will use a shell to start the inferior. All other
37209 values are considered an error.
37210
37211 This packet is only available in extended mode (@pxref{extended
37212 mode}).
37213
37214 Reply:
37215 @table @samp
37216 @item OK
37217 The request succeeded.
37218
37219 @item E @var{nn}
37220 An error occurred. The error number @var{nn} is given as hex digits.
37221 @end table
37222
37223 This packet is not probed by default; the remote stub must request it,
37224 by supplying an appropriate @samp{qSupported} response
37225 (@pxref{qSupported}). This should only be done on targets that
37226 actually support starting the inferior using a shell.
37227
37228 Use of this packet is controlled by the @code{set startup-with-shell}
37229 command; @pxref{set startup-with-shell}.
37230
37231 @item QEnvironmentHexEncoded:@var{hex-value}
37232 @anchor{QEnvironmentHexEncoded}
37233 @cindex set environment variable, remote request
37234 @cindex @samp{QEnvironmentHexEncoded} packet
37235 On UNIX-like targets, it is possible to set environment variables that
37236 will be passed to the inferior during the startup process. This
37237 packet is used to inform @command{gdbserver} of an environment
37238 variable that has been defined by the user on @value{GDBN} (@pxref{set
37239 environment}).
37240
37241 The packet is composed by @var{hex-value}, an hex encoded
37242 representation of the @var{name=value} format representing an
37243 environment variable. The name of the environment variable is
37244 represented by @var{name}, and the value to be assigned to the
37245 environment variable is represented by @var{value}. If the variable
37246 has no value (i.e., the value is @code{null}), then @var{value} will
37247 not be present.
37248
37249 This packet is only available in extended mode (@pxref{extended
37250 mode}).
37251
37252 Reply:
37253 @table @samp
37254 @item OK
37255 The request succeeded.
37256 @end table
37257
37258 This packet is not probed by default; the remote stub must request it,
37259 by supplying an appropriate @samp{qSupported} response
37260 (@pxref{qSupported}). This should only be done on targets that
37261 actually support passing environment variables to the starting
37262 inferior.
37263
37264 This packet is related to the @code{set environment} command;
37265 @pxref{set environment}.
37266
37267 @item QEnvironmentUnset:@var{hex-value}
37268 @anchor{QEnvironmentUnset}
37269 @cindex unset environment variable, remote request
37270 @cindex @samp{QEnvironmentUnset} packet
37271 On UNIX-like targets, it is possible to unset environment variables
37272 before starting the inferior in the remote target. This packet is
37273 used to inform @command{gdbserver} of an environment variable that has
37274 been unset by the user on @value{GDBN} (@pxref{unset environment}).
37275
37276 The packet is composed by @var{hex-value}, an hex encoded
37277 representation of the name of the environment variable to be unset.
37278
37279 This packet is only available in extended mode (@pxref{extended
37280 mode}).
37281
37282 Reply:
37283 @table @samp
37284 @item OK
37285 The request succeeded.
37286 @end table
37287
37288 This packet is not probed by default; the remote stub must request it,
37289 by supplying an appropriate @samp{qSupported} response
37290 (@pxref{qSupported}). This should only be done on targets that
37291 actually support passing environment variables to the starting
37292 inferior.
37293
37294 This packet is related to the @code{unset environment} command;
37295 @pxref{unset environment}.
37296
37297 @item QEnvironmentReset
37298 @anchor{QEnvironmentReset}
37299 @cindex reset environment, remote request
37300 @cindex @samp{QEnvironmentReset} packet
37301 On UNIX-like targets, this packet is used to reset the state of
37302 environment variables in the remote target before starting the
37303 inferior. In this context, reset means unsetting all environment
37304 variables that were previously set by the user (i.e., were not
37305 initially present in the environment). It is sent to
37306 @command{gdbserver} before the @samp{QEnvironmentHexEncoded}
37307 (@pxref{QEnvironmentHexEncoded}) and the @samp{QEnvironmentUnset}
37308 (@pxref{QEnvironmentUnset}) packets.
37309
37310 This packet is only available in extended mode (@pxref{extended
37311 mode}).
37312
37313 Reply:
37314 @table @samp
37315 @item OK
37316 The request succeeded.
37317 @end table
37318
37319 This packet is not probed by default; the remote stub must request it,
37320 by supplying an appropriate @samp{qSupported} response
37321 (@pxref{qSupported}). This should only be done on targets that
37322 actually support passing environment variables to the starting
37323 inferior.
37324
37325 @item QSetWorkingDir:@r{[}@var{directory}@r{]}
37326 @anchor{QSetWorkingDir packet}
37327 @cindex set working directory, remote request
37328 @cindex @samp{QSetWorkingDir} packet
37329 This packet is used to inform the remote server of the intended
37330 current working directory for programs that are going to be executed.
37331
37332 The packet is composed by @var{directory}, an hex encoded
37333 representation of the directory that the remote inferior will use as
37334 its current working directory. If @var{directory} is an empty string,
37335 the remote server should reset the inferior's current working
37336 directory to its original, empty value.
37337
37338 This packet is only available in extended mode (@pxref{extended
37339 mode}).
37340
37341 Reply:
37342 @table @samp
37343 @item OK
37344 The request succeeded.
37345 @end table
37346
37347 @item qfThreadInfo
37348 @itemx qsThreadInfo
37349 @cindex list active threads, remote request
37350 @cindex @samp{qfThreadInfo} packet
37351 @cindex @samp{qsThreadInfo} packet
37352 Obtain a list of all active thread IDs from the target (OS). Since there
37353 may be too many active threads to fit into one reply packet, this query
37354 works iteratively: it may require more than one query/reply sequence to
37355 obtain the entire list of threads. The first query of the sequence will
37356 be the @samp{qfThreadInfo} query; subsequent queries in the
37357 sequence will be the @samp{qsThreadInfo} query.
37358
37359 NOTE: This packet replaces the @samp{qL} query (see below).
37360
37361 Reply:
37362 @table @samp
37363 @item m @var{thread-id}
37364 A single thread ID
37365 @item m @var{thread-id},@var{thread-id}@dots{}
37366 a comma-separated list of thread IDs
37367 @item l
37368 (lower case letter @samp{L}) denotes end of list.
37369 @end table
37370
37371 In response to each query, the target will reply with a list of one or
37372 more thread IDs, separated by commas.
37373 @value{GDBN} will respond to each reply with a request for more thread
37374 ids (using the @samp{qs} form of the query), until the target responds
37375 with @samp{l} (lower-case ell, for @dfn{last}).
37376 Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
37377 fields.
37378
37379 @emph{Note: @value{GDBN} will send the @code{qfThreadInfo} query during the
37380 initial connection with the remote target, and the very first thread ID
37381 mentioned in the reply will be stopped by @value{GDBN} in a subsequent
37382 message. Therefore, the stub should ensure that the first thread ID in
37383 the @code{qfThreadInfo} reply is suitable for being stopped by @value{GDBN}.}
37384
37385 @item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
37386 @cindex get thread-local storage address, remote request
37387 @cindex @samp{qGetTLSAddr} packet
37388 Fetch the address associated with thread local storage specified
37389 by @var{thread-id}, @var{offset}, and @var{lm}.
37390
37391 @var{thread-id} is the thread ID associated with the
37392 thread for which to fetch the TLS address. @xref{thread-id syntax}.
37393
37394 @var{offset} is the (big endian, hex encoded) offset associated with the
37395 thread local variable. (This offset is obtained from the debug
37396 information associated with the variable.)
37397
37398 @var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
37399 load module associated with the thread local storage. For example,
37400 a @sc{gnu}/Linux system will pass the link map address of the shared
37401 object associated with the thread local storage under consideration.
37402 Other operating environments may choose to represent the load module
37403 differently, so the precise meaning of this parameter will vary.
37404
37405 Reply:
37406 @table @samp
37407 @item @var{XX}@dots{}
37408 Hex encoded (big endian) bytes representing the address of the thread
37409 local storage requested.
37410
37411 @item E @var{nn}
37412 An error occurred. The error number @var{nn} is given as hex digits.
37413
37414 @item @w{}
37415 An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
37416 @end table
37417
37418 @item qGetTIBAddr:@var{thread-id}
37419 @cindex get thread information block address
37420 @cindex @samp{qGetTIBAddr} packet
37421 Fetch address of the Windows OS specific Thread Information Block.
37422
37423 @var{thread-id} is the thread ID associated with the thread.
37424
37425 Reply:
37426 @table @samp
37427 @item @var{XX}@dots{}
37428 Hex encoded (big endian) bytes representing the linear address of the
37429 thread information block.
37430
37431 @item E @var{nn}
37432 An error occured. This means that either the thread was not found, or the
37433 address could not be retrieved.
37434
37435 @item @w{}
37436 An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub.
37437 @end table
37438
37439 @item qL @var{startflag} @var{threadcount} @var{nextthread}
37440 Obtain thread information from RTOS. Where: @var{startflag} (one hex
37441 digit) is one to indicate the first query and zero to indicate a
37442 subsequent query; @var{threadcount} (two hex digits) is the maximum
37443 number of threads the response packet can contain; and @var{nextthread}
37444 (eight hex digits), for subsequent queries (@var{startflag} is zero), is
37445 returned in the response as @var{argthread}.
37446
37447 Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
37448
37449 Reply:
37450 @table @samp
37451 @item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
37452 Where: @var{count} (two hex digits) is the number of threads being
37453 returned; @var{done} (one hex digit) is zero to indicate more threads
37454 and one indicates no further threads; @var{argthreadid} (eight hex
37455 digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
37456 is a sequence of thread IDs, @var{threadid} (eight hex
37457 digits), from the target. See @code{remote.c:parse_threadlist_response()}.
37458 @end table
37459
37460 @item qOffsets
37461 @cindex section offsets, remote request
37462 @cindex @samp{qOffsets} packet
37463 Get section offsets that the target used when relocating the downloaded
37464 image.
37465
37466 Reply:
37467 @table @samp
37468 @item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
37469 Relocate the @code{Text} section by @var{xxx} from its original address.
37470 Relocate the @code{Data} section by @var{yyy} from its original address.
37471 If the object file format provides segment information (e.g.@: @sc{elf}
37472 @samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
37473 segments by the supplied offsets.
37474
37475 @emph{Note: while a @code{Bss} offset may be included in the response,
37476 @value{GDBN} ignores this and instead applies the @code{Data} offset
37477 to the @code{Bss} section.}
37478
37479 @item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
37480 Relocate the first segment of the object file, which conventionally
37481 contains program code, to a starting address of @var{xxx}. If
37482 @samp{DataSeg} is specified, relocate the second segment, which
37483 conventionally contains modifiable data, to a starting address of
37484 @var{yyy}. @value{GDBN} will report an error if the object file
37485 does not contain segment information, or does not contain at least
37486 as many segments as mentioned in the reply. Extra segments are
37487 kept at fixed offsets relative to the last relocated segment.
37488 @end table
37489
37490 @item qP @var{mode} @var{thread-id}
37491 @cindex thread information, remote request
37492 @cindex @samp{qP} packet
37493 Returns information on @var{thread-id}. Where: @var{mode} is a hex
37494 encoded 32 bit mode; @var{thread-id} is a thread ID
37495 (@pxref{thread-id syntax}).
37496
37497 Don't use this packet; use the @samp{qThreadExtraInfo} query instead
37498 (see below).
37499
37500 Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
37501
37502 @item QNonStop:1
37503 @itemx QNonStop:0
37504 @cindex non-stop mode, remote request
37505 @cindex @samp{QNonStop} packet
37506 @anchor{QNonStop}
37507 Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
37508 @xref{Remote Non-Stop}, for more information.
37509
37510 Reply:
37511 @table @samp
37512 @item OK
37513 The request succeeded.
37514
37515 @item E @var{nn}
37516 An error occurred. The error number @var{nn} is given as hex digits.
37517
37518 @item @w{}
37519 An empty reply indicates that @samp{QNonStop} is not supported by
37520 the stub.
37521 @end table
37522
37523 This packet is not probed by default; the remote stub must request it,
37524 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37525 Use of this packet is controlled by the @code{set non-stop} command;
37526 @pxref{Non-Stop Mode}.
37527
37528 @item QCatchSyscalls:1 @r{[};@var{sysno}@r{]}@dots{}
37529 @itemx QCatchSyscalls:0
37530 @cindex catch syscalls from inferior, remote request
37531 @cindex @samp{QCatchSyscalls} packet
37532 @anchor{QCatchSyscalls}
37533 Enable (@samp{QCatchSyscalls:1}) or disable (@samp{QCatchSyscalls:0})
37534 catching syscalls from the inferior process.
37535
37536 For @samp{QCatchSyscalls:1}, each listed syscall @var{sysno} (encoded
37537 in hex) should be reported to @value{GDBN}. If no syscall @var{sysno}
37538 is listed, every system call should be reported.
37539
37540 Note that if a syscall not in the list is reported, @value{GDBN} will
37541 still filter the event according to its own list from all corresponding
37542 @code{catch syscall} commands. However, it is more efficient to only
37543 report the requested syscalls.
37544
37545 Multiple @samp{QCatchSyscalls:1} packets do not combine; any earlier
37546 @samp{QCatchSyscalls:1} list is completely replaced by the new list.
37547
37548 If the inferior process execs, the state of @samp{QCatchSyscalls} is
37549 kept for the new process too. On targets where exec may affect syscall
37550 numbers, for example with exec between 32 and 64-bit processes, the
37551 client should send a new packet with the new syscall list.
37552
37553 Reply:
37554 @table @samp
37555 @item OK
37556 The request succeeded.
37557
37558 @item E @var{nn}
37559 An error occurred. @var{nn} are hex digits.
37560
37561 @item @w{}
37562 An empty reply indicates that @samp{QCatchSyscalls} is not supported by
37563 the stub.
37564 @end table
37565
37566 Use of this packet is controlled by the @code{set remote catch-syscalls}
37567 command (@pxref{Remote Configuration, set remote catch-syscalls}).
37568 This packet is not probed by default; the remote stub must request it,
37569 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37570
37571 @item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
37572 @cindex pass signals to inferior, remote request
37573 @cindex @samp{QPassSignals} packet
37574 @anchor{QPassSignals}
37575 Each listed @var{signal} should be passed directly to the inferior process.
37576 Signals are numbered identically to continue packets and stop replies
37577 (@pxref{Stop Reply Packets}). Each @var{signal} list item should be
37578 strictly greater than the previous item. These signals do not need to stop
37579 the inferior, or be reported to @value{GDBN}. All other signals should be
37580 reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
37581 combine; any earlier @samp{QPassSignals} list is completely replaced by the
37582 new list. This packet improves performance when using @samp{handle
37583 @var{signal} nostop noprint pass}.
37584
37585 Reply:
37586 @table @samp
37587 @item OK
37588 The request succeeded.
37589
37590 @item E @var{nn}
37591 An error occurred. The error number @var{nn} is given as hex digits.
37592
37593 @item @w{}
37594 An empty reply indicates that @samp{QPassSignals} is not supported by
37595 the stub.
37596 @end table
37597
37598 Use of this packet is controlled by the @code{set remote pass-signals}
37599 command (@pxref{Remote Configuration, set remote pass-signals}).
37600 This packet is not probed by default; the remote stub must request it,
37601 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37602
37603 @item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
37604 @cindex signals the inferior may see, remote request
37605 @cindex @samp{QProgramSignals} packet
37606 @anchor{QProgramSignals}
37607 Each listed @var{signal} may be delivered to the inferior process.
37608 Others should be silently discarded.
37609
37610 In some cases, the remote stub may need to decide whether to deliver a
37611 signal to the program or not without @value{GDBN} involvement. One
37612 example of that is while detaching --- the program's threads may have
37613 stopped for signals that haven't yet had a chance of being reported to
37614 @value{GDBN}, and so the remote stub can use the signal list specified
37615 by this packet to know whether to deliver or ignore those pending
37616 signals.
37617
37618 This does not influence whether to deliver a signal as requested by a
37619 resumption packet (@pxref{vCont packet}).
37620
37621 Signals are numbered identically to continue packets and stop replies
37622 (@pxref{Stop Reply Packets}). Each @var{signal} list item should be
37623 strictly greater than the previous item. Multiple
37624 @samp{QProgramSignals} packets do not combine; any earlier
37625 @samp{QProgramSignals} list is completely replaced by the new list.
37626
37627 Reply:
37628 @table @samp
37629 @item OK
37630 The request succeeded.
37631
37632 @item E @var{nn}
37633 An error occurred. The error number @var{nn} is given as hex digits.
37634
37635 @item @w{}
37636 An empty reply indicates that @samp{QProgramSignals} is not supported
37637 by the stub.
37638 @end table
37639
37640 Use of this packet is controlled by the @code{set remote program-signals}
37641 command (@pxref{Remote Configuration, set remote program-signals}).
37642 This packet is not probed by default; the remote stub must request it,
37643 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37644
37645 @anchor{QThreadEvents}
37646 @item QThreadEvents:1
37647 @itemx QThreadEvents:0
37648 @cindex thread create/exit events, remote request
37649 @cindex @samp{QThreadEvents} packet
37650
37651 Enable (@samp{QThreadEvents:1}) or disable (@samp{QThreadEvents:0})
37652 reporting of thread create and exit events. @xref{thread create
37653 event}, for the reply specifications. For example, this is used in
37654 non-stop mode when @value{GDBN} stops a set of threads and
37655 synchronously waits for the their corresponding stop replies. Without
37656 exit events, if one of the threads exits, @value{GDBN} would hang
37657 forever not knowing that it should no longer expect a stop for that
37658 same thread. @value{GDBN} does not enable this feature unless the
37659 stub reports that it supports it by including @samp{QThreadEvents+} in
37660 its @samp{qSupported} reply.
37661
37662 Reply:
37663 @table @samp
37664 @item OK
37665 The request succeeded.
37666
37667 @item E @var{nn}
37668 An error occurred. The error number @var{nn} is given as hex digits.
37669
37670 @item @w{}
37671 An empty reply indicates that @samp{QThreadEvents} is not supported by
37672 the stub.
37673 @end table
37674
37675 Use of this packet is controlled by the @code{set remote thread-events}
37676 command (@pxref{Remote Configuration, set remote thread-events}).
37677
37678 @item qRcmd,@var{command}
37679 @cindex execute remote command, remote request
37680 @cindex @samp{qRcmd} packet
37681 @var{command} (hex encoded) is passed to the local interpreter for
37682 execution. Invalid commands should be reported using the output
37683 string. Before the final result packet, the target may also respond
37684 with a number of intermediate @samp{O@var{output}} console output
37685 packets. @emph{Implementors should note that providing access to a
37686 stubs's interpreter may have security implications}.
37687
37688 Reply:
37689 @table @samp
37690 @item OK
37691 A command response with no output.
37692 @item @var{OUTPUT}
37693 A command response with the hex encoded output string @var{OUTPUT}.
37694 @item E @var{NN}
37695 Indicate a badly formed request.
37696 @item @w{}
37697 An empty reply indicates that @samp{qRcmd} is not recognized.
37698 @end table
37699
37700 (Note that the @code{qRcmd} packet's name is separated from the
37701 command by a @samp{,}, not a @samp{:}, contrary to the naming
37702 conventions above. Please don't use this packet as a model for new
37703 packets.)
37704
37705 @item qSearch:memory:@var{address};@var{length};@var{search-pattern}
37706 @cindex searching memory, in remote debugging
37707 @ifnotinfo
37708 @cindex @samp{qSearch:memory} packet
37709 @end ifnotinfo
37710 @cindex @samp{qSearch memory} packet
37711 @anchor{qSearch memory}
37712 Search @var{length} bytes at @var{address} for @var{search-pattern}.
37713 Both @var{address} and @var{length} are encoded in hex;
37714 @var{search-pattern} is a sequence of bytes, also hex encoded.
37715
37716 Reply:
37717 @table @samp
37718 @item 0
37719 The pattern was not found.
37720 @item 1,address
37721 The pattern was found at @var{address}.
37722 @item E @var{NN}
37723 A badly formed request or an error was encountered while searching memory.
37724 @item @w{}
37725 An empty reply indicates that @samp{qSearch:memory} is not recognized.
37726 @end table
37727
37728 @item QStartNoAckMode
37729 @cindex @samp{QStartNoAckMode} packet
37730 @anchor{QStartNoAckMode}
37731 Request that the remote stub disable the normal @samp{+}/@samp{-}
37732 protocol acknowledgments (@pxref{Packet Acknowledgment}).
37733
37734 Reply:
37735 @table @samp
37736 @item OK
37737 The stub has switched to no-acknowledgment mode.
37738 @value{GDBN} acknowledges this reponse,
37739 but neither the stub nor @value{GDBN} shall send or expect further
37740 @samp{+}/@samp{-} acknowledgments in the current connection.
37741 @item @w{}
37742 An empty reply indicates that the stub does not support no-acknowledgment mode.
37743 @end table
37744
37745 @item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
37746 @cindex supported packets, remote query
37747 @cindex features of the remote protocol
37748 @cindex @samp{qSupported} packet
37749 @anchor{qSupported}
37750 Tell the remote stub about features supported by @value{GDBN}, and
37751 query the stub for features it supports. This packet allows
37752 @value{GDBN} and the remote stub to take advantage of each others'
37753 features. @samp{qSupported} also consolidates multiple feature probes
37754 at startup, to improve @value{GDBN} performance---a single larger
37755 packet performs better than multiple smaller probe packets on
37756 high-latency links. Some features may enable behavior which must not
37757 be on by default, e.g.@: because it would confuse older clients or
37758 stubs. Other features may describe packets which could be
37759 automatically probed for, but are not. These features must be
37760 reported before @value{GDBN} will use them. This ``default
37761 unsupported'' behavior is not appropriate for all packets, but it
37762 helps to keep the initial connection time under control with new
37763 versions of @value{GDBN} which support increasing numbers of packets.
37764
37765 Reply:
37766 @table @samp
37767 @item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
37768 The stub supports or does not support each returned @var{stubfeature},
37769 depending on the form of each @var{stubfeature} (see below for the
37770 possible forms).
37771 @item @w{}
37772 An empty reply indicates that @samp{qSupported} is not recognized,
37773 or that no features needed to be reported to @value{GDBN}.
37774 @end table
37775
37776 The allowed forms for each feature (either a @var{gdbfeature} in the
37777 @samp{qSupported} packet, or a @var{stubfeature} in the response)
37778 are:
37779
37780 @table @samp
37781 @item @var{name}=@var{value}
37782 The remote protocol feature @var{name} is supported, and associated
37783 with the specified @var{value}. The format of @var{value} depends
37784 on the feature, but it must not include a semicolon.
37785 @item @var{name}+
37786 The remote protocol feature @var{name} is supported, and does not
37787 need an associated value.
37788 @item @var{name}-
37789 The remote protocol feature @var{name} is not supported.
37790 @item @var{name}?
37791 The remote protocol feature @var{name} may be supported, and
37792 @value{GDBN} should auto-detect support in some other way when it is
37793 needed. This form will not be used for @var{gdbfeature} notifications,
37794 but may be used for @var{stubfeature} responses.
37795 @end table
37796
37797 Whenever the stub receives a @samp{qSupported} request, the
37798 supplied set of @value{GDBN} features should override any previous
37799 request. This allows @value{GDBN} to put the stub in a known
37800 state, even if the stub had previously been communicating with
37801 a different version of @value{GDBN}.
37802
37803 The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
37804 are defined:
37805
37806 @table @samp
37807 @item multiprocess
37808 This feature indicates whether @value{GDBN} supports multiprocess
37809 extensions to the remote protocol. @value{GDBN} does not use such
37810 extensions unless the stub also reports that it supports them by
37811 including @samp{multiprocess+} in its @samp{qSupported} reply.
37812 @xref{multiprocess extensions}, for details.
37813
37814 @item xmlRegisters
37815 This feature indicates that @value{GDBN} supports the XML target
37816 description. If the stub sees @samp{xmlRegisters=} with target
37817 specific strings separated by a comma, it will report register
37818 description.
37819
37820 @item qRelocInsn
37821 This feature indicates whether @value{GDBN} supports the
37822 @samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate
37823 instruction reply packet}).
37824
37825 @item swbreak
37826 This feature indicates whether @value{GDBN} supports the swbreak stop
37827 reason in stop replies. @xref{swbreak stop reason}, for details.
37828
37829 @item hwbreak
37830 This feature indicates whether @value{GDBN} supports the hwbreak stop
37831 reason in stop replies. @xref{swbreak stop reason}, for details.
37832
37833 @item fork-events
37834 This feature indicates whether @value{GDBN} supports fork event
37835 extensions to the remote protocol. @value{GDBN} does not use such
37836 extensions unless the stub also reports that it supports them by
37837 including @samp{fork-events+} in its @samp{qSupported} reply.
37838
37839 @item vfork-events
37840 This feature indicates whether @value{GDBN} supports vfork event
37841 extensions to the remote protocol. @value{GDBN} does not use such
37842 extensions unless the stub also reports that it supports them by
37843 including @samp{vfork-events+} in its @samp{qSupported} reply.
37844
37845 @item exec-events
37846 This feature indicates whether @value{GDBN} supports exec event
37847 extensions to the remote protocol. @value{GDBN} does not use such
37848 extensions unless the stub also reports that it supports them by
37849 including @samp{exec-events+} in its @samp{qSupported} reply.
37850
37851 @item vContSupported
37852 This feature indicates whether @value{GDBN} wants to know the
37853 supported actions in the reply to @samp{vCont?} packet.
37854 @end table
37855
37856 Stubs should ignore any unknown values for
37857 @var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
37858 packet supports receiving packets of unlimited length (earlier
37859 versions of @value{GDBN} may reject overly long responses). Additional values
37860 for @var{gdbfeature} may be defined in the future to let the stub take
37861 advantage of new features in @value{GDBN}, e.g.@: incompatible
37862 improvements in the remote protocol---the @samp{multiprocess} feature is
37863 an example of such a feature. The stub's reply should be independent
37864 of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
37865 describes all the features it supports, and then the stub replies with
37866 all the features it supports.
37867
37868 Similarly, @value{GDBN} will silently ignore unrecognized stub feature
37869 responses, as long as each response uses one of the standard forms.
37870
37871 Some features are flags. A stub which supports a flag feature
37872 should respond with a @samp{+} form response. Other features
37873 require values, and the stub should respond with an @samp{=}
37874 form response.
37875
37876 Each feature has a default value, which @value{GDBN} will use if
37877 @samp{qSupported} is not available or if the feature is not mentioned
37878 in the @samp{qSupported} response. The default values are fixed; a
37879 stub is free to omit any feature responses that match the defaults.
37880
37881 Not all features can be probed, but for those which can, the probing
37882 mechanism is useful: in some cases, a stub's internal
37883 architecture may not allow the protocol layer to know some information
37884 about the underlying target in advance. This is especially common in
37885 stubs which may be configured for multiple targets.
37886
37887 These are the currently defined stub features and their properties:
37888
37889 @multitable @columnfractions 0.35 0.2 0.12 0.2
37890 @c NOTE: The first row should be @headitem, but we do not yet require
37891 @c a new enough version of Texinfo (4.7) to use @headitem.
37892 @item Feature Name
37893 @tab Value Required
37894 @tab Default
37895 @tab Probe Allowed
37896
37897 @item @samp{PacketSize}
37898 @tab Yes
37899 @tab @samp{-}
37900 @tab No
37901
37902 @item @samp{qXfer:auxv:read}
37903 @tab No
37904 @tab @samp{-}
37905 @tab Yes
37906
37907 @item @samp{qXfer:btrace:read}
37908 @tab No
37909 @tab @samp{-}
37910 @tab Yes
37911
37912 @item @samp{qXfer:btrace-conf:read}
37913 @tab No
37914 @tab @samp{-}
37915 @tab Yes
37916
37917 @item @samp{qXfer:exec-file:read}
37918 @tab No
37919 @tab @samp{-}
37920 @tab Yes
37921
37922 @item @samp{qXfer:features:read}
37923 @tab No
37924 @tab @samp{-}
37925 @tab Yes
37926
37927 @item @samp{qXfer:libraries:read}
37928 @tab No
37929 @tab @samp{-}
37930 @tab Yes
37931
37932 @item @samp{qXfer:libraries-svr4:read}
37933 @tab No
37934 @tab @samp{-}
37935 @tab Yes
37936
37937 @item @samp{augmented-libraries-svr4-read}
37938 @tab No
37939 @tab @samp{-}
37940 @tab No
37941
37942 @item @samp{qXfer:memory-map:read}
37943 @tab No
37944 @tab @samp{-}
37945 @tab Yes
37946
37947 @item @samp{qXfer:sdata:read}
37948 @tab No
37949 @tab @samp{-}
37950 @tab Yes
37951
37952 @item @samp{qXfer:spu:read}
37953 @tab No
37954 @tab @samp{-}
37955 @tab Yes
37956
37957 @item @samp{qXfer:spu:write}
37958 @tab No
37959 @tab @samp{-}
37960 @tab Yes
37961
37962 @item @samp{qXfer:siginfo:read}
37963 @tab No
37964 @tab @samp{-}
37965 @tab Yes
37966
37967 @item @samp{qXfer:siginfo:write}
37968 @tab No
37969 @tab @samp{-}
37970 @tab Yes
37971
37972 @item @samp{qXfer:threads:read}
37973 @tab No
37974 @tab @samp{-}
37975 @tab Yes
37976
37977 @item @samp{qXfer:traceframe-info:read}
37978 @tab No
37979 @tab @samp{-}
37980 @tab Yes
37981
37982 @item @samp{qXfer:uib:read}
37983 @tab No
37984 @tab @samp{-}
37985 @tab Yes
37986
37987 @item @samp{qXfer:fdpic:read}
37988 @tab No
37989 @tab @samp{-}
37990 @tab Yes
37991
37992 @item @samp{Qbtrace:off}
37993 @tab Yes
37994 @tab @samp{-}
37995 @tab Yes
37996
37997 @item @samp{Qbtrace:bts}
37998 @tab Yes
37999 @tab @samp{-}
38000 @tab Yes
38001
38002 @item @samp{Qbtrace:pt}
38003 @tab Yes
38004 @tab @samp{-}
38005 @tab Yes
38006
38007 @item @samp{Qbtrace-conf:bts:size}
38008 @tab Yes
38009 @tab @samp{-}
38010 @tab Yes
38011
38012 @item @samp{Qbtrace-conf:pt:size}
38013 @tab Yes
38014 @tab @samp{-}
38015 @tab Yes
38016
38017 @item @samp{QNonStop}
38018 @tab No
38019 @tab @samp{-}
38020 @tab Yes
38021
38022 @item @samp{QCatchSyscalls}
38023 @tab No
38024 @tab @samp{-}
38025 @tab Yes
38026
38027 @item @samp{QPassSignals}
38028 @tab No
38029 @tab @samp{-}
38030 @tab Yes
38031
38032 @item @samp{QStartNoAckMode}
38033 @tab No
38034 @tab @samp{-}
38035 @tab Yes
38036
38037 @item @samp{multiprocess}
38038 @tab No
38039 @tab @samp{-}
38040 @tab No
38041
38042 @item @samp{ConditionalBreakpoints}
38043 @tab No
38044 @tab @samp{-}
38045 @tab No
38046
38047 @item @samp{ConditionalTracepoints}
38048 @tab No
38049 @tab @samp{-}
38050 @tab No
38051
38052 @item @samp{ReverseContinue}
38053 @tab No
38054 @tab @samp{-}
38055 @tab No
38056
38057 @item @samp{ReverseStep}
38058 @tab No
38059 @tab @samp{-}
38060 @tab No
38061
38062 @item @samp{TracepointSource}
38063 @tab No
38064 @tab @samp{-}
38065 @tab No
38066
38067 @item @samp{QAgent}
38068 @tab No
38069 @tab @samp{-}
38070 @tab No
38071
38072 @item @samp{QAllow}
38073 @tab No
38074 @tab @samp{-}
38075 @tab No
38076
38077 @item @samp{QDisableRandomization}
38078 @tab No
38079 @tab @samp{-}
38080 @tab No
38081
38082 @item @samp{EnableDisableTracepoints}
38083 @tab No
38084 @tab @samp{-}
38085 @tab No
38086
38087 @item @samp{QTBuffer:size}
38088 @tab No
38089 @tab @samp{-}
38090 @tab No
38091
38092 @item @samp{tracenz}
38093 @tab No
38094 @tab @samp{-}
38095 @tab No
38096
38097 @item @samp{BreakpointCommands}
38098 @tab No
38099 @tab @samp{-}
38100 @tab No
38101
38102 @item @samp{swbreak}
38103 @tab No
38104 @tab @samp{-}
38105 @tab No
38106
38107 @item @samp{hwbreak}
38108 @tab No
38109 @tab @samp{-}
38110 @tab No
38111
38112 @item @samp{fork-events}
38113 @tab No
38114 @tab @samp{-}
38115 @tab No
38116
38117 @item @samp{vfork-events}
38118 @tab No
38119 @tab @samp{-}
38120 @tab No
38121
38122 @item @samp{exec-events}
38123 @tab No
38124 @tab @samp{-}
38125 @tab No
38126
38127 @item @samp{QThreadEvents}
38128 @tab No
38129 @tab @samp{-}
38130 @tab No
38131
38132 @item @samp{no-resumed}
38133 @tab No
38134 @tab @samp{-}
38135 @tab No
38136
38137 @end multitable
38138
38139 These are the currently defined stub features, in more detail:
38140
38141 @table @samp
38142 @cindex packet size, remote protocol
38143 @item PacketSize=@var{bytes}
38144 The remote stub can accept packets up to at least @var{bytes} in
38145 length. @value{GDBN} will send packets up to this size for bulk
38146 transfers, and will never send larger packets. This is a limit on the
38147 data characters in the packet, including the frame and checksum.
38148 There is no trailing NUL byte in a remote protocol packet; if the stub
38149 stores packets in a NUL-terminated format, it should allow an extra
38150 byte in its buffer for the NUL. If this stub feature is not supported,
38151 @value{GDBN} guesses based on the size of the @samp{g} packet response.
38152
38153 @item qXfer:auxv:read
38154 The remote stub understands the @samp{qXfer:auxv:read} packet
38155 (@pxref{qXfer auxiliary vector read}).
38156
38157 @item qXfer:btrace:read
38158 The remote stub understands the @samp{qXfer:btrace:read}
38159 packet (@pxref{qXfer btrace read}).
38160
38161 @item qXfer:btrace-conf:read
38162 The remote stub understands the @samp{qXfer:btrace-conf:read}
38163 packet (@pxref{qXfer btrace-conf read}).
38164
38165 @item qXfer:exec-file:read
38166 The remote stub understands the @samp{qXfer:exec-file:read} packet
38167 (@pxref{qXfer executable filename read}).
38168
38169 @item qXfer:features:read
38170 The remote stub understands the @samp{qXfer:features:read} packet
38171 (@pxref{qXfer target description read}).
38172
38173 @item qXfer:libraries:read
38174 The remote stub understands the @samp{qXfer:libraries:read} packet
38175 (@pxref{qXfer library list read}).
38176
38177 @item qXfer:libraries-svr4:read
38178 The remote stub understands the @samp{qXfer:libraries-svr4:read} packet
38179 (@pxref{qXfer svr4 library list read}).
38180
38181 @item augmented-libraries-svr4-read
38182 The remote stub understands the augmented form of the
38183 @samp{qXfer:libraries-svr4:read} packet
38184 (@pxref{qXfer svr4 library list read}).
38185
38186 @item qXfer:memory-map:read
38187 The remote stub understands the @samp{qXfer:memory-map:read} packet
38188 (@pxref{qXfer memory map read}).
38189
38190 @item qXfer:sdata:read
38191 The remote stub understands the @samp{qXfer:sdata:read} packet
38192 (@pxref{qXfer sdata read}).
38193
38194 @item qXfer:spu:read
38195 The remote stub understands the @samp{qXfer:spu:read} packet
38196 (@pxref{qXfer spu read}).
38197
38198 @item qXfer:spu:write
38199 The remote stub understands the @samp{qXfer:spu:write} packet
38200 (@pxref{qXfer spu write}).
38201
38202 @item qXfer:siginfo:read
38203 The remote stub understands the @samp{qXfer:siginfo:read} packet
38204 (@pxref{qXfer siginfo read}).
38205
38206 @item qXfer:siginfo:write
38207 The remote stub understands the @samp{qXfer:siginfo:write} packet
38208 (@pxref{qXfer siginfo write}).
38209
38210 @item qXfer:threads:read
38211 The remote stub understands the @samp{qXfer:threads:read} packet
38212 (@pxref{qXfer threads read}).
38213
38214 @item qXfer:traceframe-info:read
38215 The remote stub understands the @samp{qXfer:traceframe-info:read}
38216 packet (@pxref{qXfer traceframe info read}).
38217
38218 @item qXfer:uib:read
38219 The remote stub understands the @samp{qXfer:uib:read}
38220 packet (@pxref{qXfer unwind info block}).
38221
38222 @item qXfer:fdpic:read
38223 The remote stub understands the @samp{qXfer:fdpic:read}
38224 packet (@pxref{qXfer fdpic loadmap read}).
38225
38226 @item QNonStop
38227 The remote stub understands the @samp{QNonStop} packet
38228 (@pxref{QNonStop}).
38229
38230 @item QCatchSyscalls
38231 The remote stub understands the @samp{QCatchSyscalls} packet
38232 (@pxref{QCatchSyscalls}).
38233
38234 @item QPassSignals
38235 The remote stub understands the @samp{QPassSignals} packet
38236 (@pxref{QPassSignals}).
38237
38238 @item QStartNoAckMode
38239 The remote stub understands the @samp{QStartNoAckMode} packet and
38240 prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
38241
38242 @item multiprocess
38243 @anchor{multiprocess extensions}
38244 @cindex multiprocess extensions, in remote protocol
38245 The remote stub understands the multiprocess extensions to the remote
38246 protocol syntax. The multiprocess extensions affect the syntax of
38247 thread IDs in both packets and replies (@pxref{thread-id syntax}), and
38248 add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
38249 replies. Note that reporting this feature indicates support for the
38250 syntactic extensions only, not that the stub necessarily supports
38251 debugging of more than one process at a time. The stub must not use
38252 multiprocess extensions in packet replies unless @value{GDBN} has also
38253 indicated it supports them in its @samp{qSupported} request.
38254
38255 @item qXfer:osdata:read
38256 The remote stub understands the @samp{qXfer:osdata:read} packet
38257 ((@pxref{qXfer osdata read}).
38258
38259 @item ConditionalBreakpoints
38260 The target accepts and implements evaluation of conditional expressions
38261 defined for breakpoints. The target will only report breakpoint triggers
38262 when such conditions are true (@pxref{Conditions, ,Break Conditions}).
38263
38264 @item ConditionalTracepoints
38265 The remote stub accepts and implements conditional expressions defined
38266 for tracepoints (@pxref{Tracepoint Conditions}).
38267
38268 @item ReverseContinue
38269 The remote stub accepts and implements the reverse continue packet
38270 (@pxref{bc}).
38271
38272 @item ReverseStep
38273 The remote stub accepts and implements the reverse step packet
38274 (@pxref{bs}).
38275
38276 @item TracepointSource
38277 The remote stub understands the @samp{QTDPsrc} packet that supplies
38278 the source form of tracepoint definitions.
38279
38280 @item QAgent
38281 The remote stub understands the @samp{QAgent} packet.
38282
38283 @item QAllow
38284 The remote stub understands the @samp{QAllow} packet.
38285
38286 @item QDisableRandomization
38287 The remote stub understands the @samp{QDisableRandomization} packet.
38288
38289 @item StaticTracepoint
38290 @cindex static tracepoints, in remote protocol
38291 The remote stub supports static tracepoints.
38292
38293 @item InstallInTrace
38294 @anchor{install tracepoint in tracing}
38295 The remote stub supports installing tracepoint in tracing.
38296
38297 @item EnableDisableTracepoints
38298 The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and
38299 @samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints
38300 to be enabled and disabled while a trace experiment is running.
38301
38302 @item QTBuffer:size
38303 The remote stub supports the @samp{QTBuffer:size} (@pxref{QTBuffer-size})
38304 packet that allows to change the size of the trace buffer.
38305
38306 @item tracenz
38307 @cindex string tracing, in remote protocol
38308 The remote stub supports the @samp{tracenz} bytecode for collecting strings.
38309 See @ref{Bytecode Descriptions} for details about the bytecode.
38310
38311 @item BreakpointCommands
38312 @cindex breakpoint commands, in remote protocol
38313 The remote stub supports running a breakpoint's command list itself,
38314 rather than reporting the hit to @value{GDBN}.
38315
38316 @item Qbtrace:off
38317 The remote stub understands the @samp{Qbtrace:off} packet.
38318
38319 @item Qbtrace:bts
38320 The remote stub understands the @samp{Qbtrace:bts} packet.
38321
38322 @item Qbtrace:pt
38323 The remote stub understands the @samp{Qbtrace:pt} packet.
38324
38325 @item Qbtrace-conf:bts:size
38326 The remote stub understands the @samp{Qbtrace-conf:bts:size} packet.
38327
38328 @item Qbtrace-conf:pt:size
38329 The remote stub understands the @samp{Qbtrace-conf:pt:size} packet.
38330
38331 @item swbreak
38332 The remote stub reports the @samp{swbreak} stop reason for memory
38333 breakpoints.
38334
38335 @item hwbreak
38336 The remote stub reports the @samp{hwbreak} stop reason for hardware
38337 breakpoints.
38338
38339 @item fork-events
38340 The remote stub reports the @samp{fork} stop reason for fork events.
38341
38342 @item vfork-events
38343 The remote stub reports the @samp{vfork} stop reason for vfork events
38344 and vforkdone events.
38345
38346 @item exec-events
38347 The remote stub reports the @samp{exec} stop reason for exec events.
38348
38349 @item vContSupported
38350 The remote stub reports the supported actions in the reply to
38351 @samp{vCont?} packet.
38352
38353 @item QThreadEvents
38354 The remote stub understands the @samp{QThreadEvents} packet.
38355
38356 @item no-resumed
38357 The remote stub reports the @samp{N} stop reply.
38358
38359 @end table
38360
38361 @item qSymbol::
38362 @cindex symbol lookup, remote request
38363 @cindex @samp{qSymbol} packet
38364 Notify the target that @value{GDBN} is prepared to serve symbol lookup
38365 requests. Accept requests from the target for the values of symbols.
38366
38367 Reply:
38368 @table @samp
38369 @item OK
38370 The target does not need to look up any (more) symbols.
38371 @item qSymbol:@var{sym_name}
38372 The target requests the value of symbol @var{sym_name} (hex encoded).
38373 @value{GDBN} may provide the value by using the
38374 @samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
38375 below.
38376 @end table
38377
38378 @item qSymbol:@var{sym_value}:@var{sym_name}
38379 Set the value of @var{sym_name} to @var{sym_value}.
38380
38381 @var{sym_name} (hex encoded) is the name of a symbol whose value the
38382 target has previously requested.
38383
38384 @var{sym_value} (hex) is the value for symbol @var{sym_name}. If
38385 @value{GDBN} cannot supply a value for @var{sym_name}, then this field
38386 will be empty.
38387
38388 Reply:
38389 @table @samp
38390 @item OK
38391 The target does not need to look up any (more) symbols.
38392 @item qSymbol:@var{sym_name}
38393 The target requests the value of a new symbol @var{sym_name} (hex
38394 encoded). @value{GDBN} will continue to supply the values of symbols
38395 (if available), until the target ceases to request them.
38396 @end table
38397
38398 @item qTBuffer
38399 @itemx QTBuffer
38400 @itemx QTDisconnected
38401 @itemx QTDP
38402 @itemx QTDPsrc
38403 @itemx QTDV
38404 @itemx qTfP
38405 @itemx qTfV
38406 @itemx QTFrame
38407 @itemx qTMinFTPILen
38408
38409 @xref{Tracepoint Packets}.
38410
38411 @item qThreadExtraInfo,@var{thread-id}
38412 @cindex thread attributes info, remote request
38413 @cindex @samp{qThreadExtraInfo} packet
38414 Obtain from the target OS a printable string description of thread
38415 attributes for the thread @var{thread-id}; see @ref{thread-id syntax},
38416 for the forms of @var{thread-id}. This
38417 string may contain anything that the target OS thinks is interesting
38418 for @value{GDBN} to tell the user about the thread. The string is
38419 displayed in @value{GDBN}'s @code{info threads} display. Some
38420 examples of possible thread extra info strings are @samp{Runnable}, or
38421 @samp{Blocked on Mutex}.
38422
38423 Reply:
38424 @table @samp
38425 @item @var{XX}@dots{}
38426 Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
38427 comprising the printable string containing the extra information about
38428 the thread's attributes.
38429 @end table
38430
38431 (Note that the @code{qThreadExtraInfo} packet's name is separated from
38432 the command by a @samp{,}, not a @samp{:}, contrary to the naming
38433 conventions above. Please don't use this packet as a model for new
38434 packets.)
38435
38436 @item QTNotes
38437 @itemx qTP
38438 @itemx QTSave
38439 @itemx qTsP
38440 @itemx qTsV
38441 @itemx QTStart
38442 @itemx QTStop
38443 @itemx QTEnable
38444 @itemx QTDisable
38445 @itemx QTinit
38446 @itemx QTro
38447 @itemx qTStatus
38448 @itemx qTV
38449 @itemx qTfSTM
38450 @itemx qTsSTM
38451 @itemx qTSTMat
38452 @xref{Tracepoint Packets}.
38453
38454 @item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
38455 @cindex read special object, remote request
38456 @cindex @samp{qXfer} packet
38457 @anchor{qXfer read}
38458 Read uninterpreted bytes from the target's special data area
38459 identified by the keyword @var{object}. Request @var{length} bytes
38460 starting at @var{offset} bytes into the data. The content and
38461 encoding of @var{annex} is specific to @var{object}; it can supply
38462 additional details about what data to access.
38463
38464 Reply:
38465 @table @samp
38466 @item m @var{data}
38467 Data @var{data} (@pxref{Binary Data}) has been read from the
38468 target. There may be more data at a higher address (although
38469 it is permitted to return @samp{m} even for the last valid
38470 block of data, as long as at least one byte of data was read).
38471 It is possible for @var{data} to have fewer bytes than the @var{length} in the
38472 request.
38473
38474 @item l @var{data}
38475 Data @var{data} (@pxref{Binary Data}) has been read from the target.
38476 There is no more data to be read. It is possible for @var{data} to
38477 have fewer bytes than the @var{length} in the request.
38478
38479 @item l
38480 The @var{offset} in the request is at the end of the data.
38481 There is no more data to be read.
38482
38483 @item E00
38484 The request was malformed, or @var{annex} was invalid.
38485
38486 @item E @var{nn}
38487 The offset was invalid, or there was an error encountered reading the data.
38488 The @var{nn} part is a hex-encoded @code{errno} value.
38489
38490 @item @w{}
38491 An empty reply indicates the @var{object} string was not recognized by
38492 the stub, or that the object does not support reading.
38493 @end table
38494
38495 Here are the specific requests of this form defined so far. All the
38496 @samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
38497 formats, listed above.
38498
38499 @table @samp
38500 @item qXfer:auxv:read::@var{offset},@var{length}
38501 @anchor{qXfer auxiliary vector read}
38502 Access the target's @dfn{auxiliary vector}. @xref{OS Information,
38503 auxiliary vector}. Note @var{annex} must be empty.
38504
38505 This packet is not probed by default; the remote stub must request it,
38506 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38507
38508 @item qXfer:btrace:read:@var{annex}:@var{offset},@var{length}
38509 @anchor{qXfer btrace read}
38510
38511 Return a description of the current branch trace.
38512 @xref{Branch Trace Format}. The annex part of the generic @samp{qXfer}
38513 packet may have one of the following values:
38514
38515 @table @code
38516 @item all
38517 Returns all available branch trace.
38518
38519 @item new
38520 Returns all available branch trace if the branch trace changed since
38521 the last read request.
38522
38523 @item delta
38524 Returns the new branch trace since the last read request. Adds a new
38525 block to the end of the trace that begins at zero and ends at the source
38526 location of the first branch in the trace buffer. This extra block is
38527 used to stitch traces together.
38528
38529 If the trace buffer overflowed, returns an error indicating the overflow.
38530 @end table
38531
38532 This packet is not probed by default; the remote stub must request it
38533 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38534
38535 @item qXfer:btrace-conf:read::@var{offset},@var{length}
38536 @anchor{qXfer btrace-conf read}
38537
38538 Return a description of the current branch trace configuration.
38539 @xref{Branch Trace Configuration Format}.
38540
38541 This packet is not probed by default; the remote stub must request it
38542 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38543
38544 @item qXfer:exec-file:read:@var{annex}:@var{offset},@var{length}
38545 @anchor{qXfer executable filename read}
38546 Return the full absolute name of the file that was executed to create
38547 a process running on the remote system. The annex specifies the
38548 numeric process ID of the process to query, encoded as a hexadecimal
38549 number. If the annex part is empty the remote stub should return the
38550 filename corresponding to the currently executing process.
38551
38552 This packet is not probed by default; the remote stub must request it,
38553 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38554
38555 @item qXfer:features:read:@var{annex}:@var{offset},@var{length}
38556 @anchor{qXfer target description read}
38557 Access the @dfn{target description}. @xref{Target Descriptions}. The
38558 annex specifies which XML document to access. The main description is
38559 always loaded from the @samp{target.xml} annex.
38560
38561 This packet is not probed by default; the remote stub must request it,
38562 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38563
38564 @item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
38565 @anchor{qXfer library list read}
38566 Access the target's list of loaded libraries. @xref{Library List Format}.
38567 The annex part of the generic @samp{qXfer} packet must be empty
38568 (@pxref{qXfer read}).
38569
38570 Targets which maintain a list of libraries in the program's memory do
38571 not need to implement this packet; it is designed for platforms where
38572 the operating system manages the list of loaded libraries.
38573
38574 This packet is not probed by default; the remote stub must request it,
38575 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38576
38577 @item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length}
38578 @anchor{qXfer svr4 library list read}
38579 Access the target's list of loaded libraries when the target is an SVR4
38580 platform. @xref{Library List Format for SVR4 Targets}. The annex part
38581 of the generic @samp{qXfer} packet must be empty unless the remote
38582 stub indicated it supports the augmented form of this packet
38583 by supplying an appropriate @samp{qSupported} response
38584 (@pxref{qXfer read}, @ref{qSupported}).
38585
38586 This packet is optional for better performance on SVR4 targets.
38587 @value{GDBN} uses memory read packets to read the SVR4 library list otherwise.
38588
38589 This packet is not probed by default; the remote stub must request it,
38590 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38591
38592 If the remote stub indicates it supports the augmented form of this
38593 packet then the annex part of the generic @samp{qXfer} packet may
38594 contain a semicolon-separated list of @samp{@var{name}=@var{value}}
38595 arguments. The currently supported arguments are:
38596
38597 @table @code
38598 @item start=@var{address}
38599 A hexadecimal number specifying the address of the @samp{struct
38600 link_map} to start reading the library list from. If unset or zero
38601 then the first @samp{struct link_map} in the library list will be
38602 chosen as the starting point.
38603
38604 @item prev=@var{address}
38605 A hexadecimal number specifying the address of the @samp{struct
38606 link_map} immediately preceding the @samp{struct link_map}
38607 specified by the @samp{start} argument. If unset or zero then
38608 the remote stub will expect that no @samp{struct link_map}
38609 exists prior to the starting point.
38610
38611 @end table
38612
38613 Arguments that are not understood by the remote stub will be silently
38614 ignored.
38615
38616 @item qXfer:memory-map:read::@var{offset},@var{length}
38617 @anchor{qXfer memory map read}
38618 Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
38619 annex part of the generic @samp{qXfer} packet must be empty
38620 (@pxref{qXfer read}).
38621
38622 This packet is not probed by default; the remote stub must request it,
38623 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38624
38625 @item qXfer:sdata:read::@var{offset},@var{length}
38626 @anchor{qXfer sdata read}
38627
38628 Read contents of the extra collected static tracepoint marker
38629 information. The annex part of the generic @samp{qXfer} packet must
38630 be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint
38631 Action Lists}.
38632
38633 This packet is not probed by default; the remote stub must request it,
38634 by supplying an appropriate @samp{qSupported} response
38635 (@pxref{qSupported}).
38636
38637 @item qXfer:siginfo:read::@var{offset},@var{length}
38638 @anchor{qXfer siginfo read}
38639 Read contents of the extra signal information on the target
38640 system. The annex part of the generic @samp{qXfer} packet must be
38641 empty (@pxref{qXfer read}).
38642
38643 This packet is not probed by default; the remote stub must request it,
38644 by supplying an appropriate @samp{qSupported} response
38645 (@pxref{qSupported}).
38646
38647 @item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
38648 @anchor{qXfer spu read}
38649 Read contents of an @code{spufs} file on the target system. The
38650 annex specifies which file to read; it must be of the form
38651 @file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
38652 in the target process, and @var{name} identifes the @code{spufs} file
38653 in that context to be accessed.
38654
38655 This packet is not probed by default; the remote stub must request it,
38656 by supplying an appropriate @samp{qSupported} response
38657 (@pxref{qSupported}).
38658
38659 @item qXfer:threads:read::@var{offset},@var{length}
38660 @anchor{qXfer threads read}
38661 Access the list of threads on target. @xref{Thread List Format}. The
38662 annex part of the generic @samp{qXfer} packet must be empty
38663 (@pxref{qXfer read}).
38664
38665 This packet is not probed by default; the remote stub must request it,
38666 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38667
38668 @item qXfer:traceframe-info:read::@var{offset},@var{length}
38669 @anchor{qXfer traceframe info read}
38670
38671 Return a description of the current traceframe's contents.
38672 @xref{Traceframe Info Format}. The annex part of the generic
38673 @samp{qXfer} packet must be empty (@pxref{qXfer read}).
38674
38675 This packet is not probed by default; the remote stub must request it,
38676 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38677
38678 @item qXfer:uib:read:@var{pc}:@var{offset},@var{length}
38679 @anchor{qXfer unwind info block}
38680
38681 Return the unwind information block for @var{pc}. This packet is used
38682 on OpenVMS/ia64 to ask the kernel unwind information.
38683
38684 This packet is not probed by default.
38685
38686 @item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length}
38687 @anchor{qXfer fdpic loadmap read}
38688 Read contents of @code{loadmap}s on the target system. The
38689 annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap},
38690 executable @code{loadmap} or interpreter @code{loadmap} to read.
38691
38692 This packet is not probed by default; the remote stub must request it,
38693 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38694
38695 @item qXfer:osdata:read::@var{offset},@var{length}
38696 @anchor{qXfer osdata read}
38697 Access the target's @dfn{operating system information}.
38698 @xref{Operating System Information}.
38699
38700 @end table
38701
38702 @item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
38703 @cindex write data into object, remote request
38704 @anchor{qXfer write}
38705 Write uninterpreted bytes into the target's special data area
38706 identified by the keyword @var{object}, starting at @var{offset} bytes
38707 into the data. The binary-encoded data (@pxref{Binary Data}) to be
38708 written is given by @var{data}@dots{}. The content and encoding of @var{annex}
38709 is specific to @var{object}; it can supply additional details about what data
38710 to access.
38711
38712 Reply:
38713 @table @samp
38714 @item @var{nn}
38715 @var{nn} (hex encoded) is the number of bytes written.
38716 This may be fewer bytes than supplied in the request.
38717
38718 @item E00
38719 The request was malformed, or @var{annex} was invalid.
38720
38721 @item E @var{nn}
38722 The offset was invalid, or there was an error encountered writing the data.
38723 The @var{nn} part is a hex-encoded @code{errno} value.
38724
38725 @item @w{}
38726 An empty reply indicates the @var{object} string was not
38727 recognized by the stub, or that the object does not support writing.
38728 @end table
38729
38730 Here are the specific requests of this form defined so far. All the
38731 @samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
38732 formats, listed above.
38733
38734 @table @samp
38735 @item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
38736 @anchor{qXfer siginfo write}
38737 Write @var{data} to the extra signal information on the target system.
38738 The annex part of the generic @samp{qXfer} packet must be
38739 empty (@pxref{qXfer write}).
38740
38741 This packet is not probed by default; the remote stub must request it,
38742 by supplying an appropriate @samp{qSupported} response
38743 (@pxref{qSupported}).
38744
38745 @item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
38746 @anchor{qXfer spu write}
38747 Write @var{data} to an @code{spufs} file on the target system. The
38748 annex specifies which file to write; it must be of the form
38749 @file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
38750 in the target process, and @var{name} identifes the @code{spufs} file
38751 in that context to be accessed.
38752
38753 This packet is not probed by default; the remote stub must request it,
38754 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
38755 @end table
38756
38757 @item qXfer:@var{object}:@var{operation}:@dots{}
38758 Requests of this form may be added in the future. When a stub does
38759 not recognize the @var{object} keyword, or its support for
38760 @var{object} does not recognize the @var{operation} keyword, the stub
38761 must respond with an empty packet.
38762
38763 @item qAttached:@var{pid}
38764 @cindex query attached, remote request
38765 @cindex @samp{qAttached} packet
38766 Return an indication of whether the remote server attached to an
38767 existing process or created a new process. When the multiprocess
38768 protocol extensions are supported (@pxref{multiprocess extensions}),
38769 @var{pid} is an integer in hexadecimal format identifying the target
38770 process. Otherwise, @value{GDBN} will omit the @var{pid} field and
38771 the query packet will be simplified as @samp{qAttached}.
38772
38773 This query is used, for example, to know whether the remote process
38774 should be detached or killed when a @value{GDBN} session is ended with
38775 the @code{quit} command.
38776
38777 Reply:
38778 @table @samp
38779 @item 1
38780 The remote server attached to an existing process.
38781 @item 0
38782 The remote server created a new process.
38783 @item E @var{NN}
38784 A badly formed request or an error was encountered.
38785 @end table
38786
38787 @item Qbtrace:bts
38788 Enable branch tracing for the current thread using Branch Trace Store.
38789
38790 Reply:
38791 @table @samp
38792 @item OK
38793 Branch tracing has been enabled.
38794 @item E.errtext
38795 A badly formed request or an error was encountered.
38796 @end table
38797
38798 @item Qbtrace:pt
38799 Enable branch tracing for the current thread using Intel Processor Trace.
38800
38801 Reply:
38802 @table @samp
38803 @item OK
38804 Branch tracing has been enabled.
38805 @item E.errtext
38806 A badly formed request or an error was encountered.
38807 @end table
38808
38809 @item Qbtrace:off
38810 Disable branch tracing for the current thread.
38811
38812 Reply:
38813 @table @samp
38814 @item OK
38815 Branch tracing has been disabled.
38816 @item E.errtext
38817 A badly formed request or an error was encountered.
38818 @end table
38819
38820 @item Qbtrace-conf:bts:size=@var{value}
38821 Set the requested ring buffer size for new threads that use the
38822 btrace recording method in bts format.
38823
38824 Reply:
38825 @table @samp
38826 @item OK
38827 The ring buffer size has been set.
38828 @item E.errtext
38829 A badly formed request or an error was encountered.
38830 @end table
38831
38832 @item Qbtrace-conf:pt:size=@var{value}
38833 Set the requested ring buffer size for new threads that use the
38834 btrace recording method in pt format.
38835
38836 Reply:
38837 @table @samp
38838 @item OK
38839 The ring buffer size has been set.
38840 @item E.errtext
38841 A badly formed request or an error was encountered.
38842 @end table
38843
38844 @end table
38845
38846 @node Architecture-Specific Protocol Details
38847 @section Architecture-Specific Protocol Details
38848
38849 This section describes how the remote protocol is applied to specific
38850 target architectures. Also see @ref{Standard Target Features}, for
38851 details of XML target descriptions for each architecture.
38852
38853 @menu
38854 * ARM-Specific Protocol Details::
38855 * MIPS-Specific Protocol Details::
38856 @end menu
38857
38858 @node ARM-Specific Protocol Details
38859 @subsection @acronym{ARM}-specific Protocol Details
38860
38861 @menu
38862 * ARM Breakpoint Kinds::
38863 @end menu
38864
38865 @node ARM Breakpoint Kinds
38866 @subsubsection @acronym{ARM} Breakpoint Kinds
38867 @cindex breakpoint kinds, @acronym{ARM}
38868
38869 These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
38870
38871 @table @r
38872
38873 @item 2
38874 16-bit Thumb mode breakpoint.
38875
38876 @item 3
38877 32-bit Thumb mode (Thumb-2) breakpoint.
38878
38879 @item 4
38880 32-bit @acronym{ARM} mode breakpoint.
38881
38882 @end table
38883
38884 @node MIPS-Specific Protocol Details
38885 @subsection @acronym{MIPS}-specific Protocol Details
38886
38887 @menu
38888 * MIPS Register packet Format::
38889 * MIPS Breakpoint Kinds::
38890 @end menu
38891
38892 @node MIPS Register packet Format
38893 @subsubsection @acronym{MIPS} Register Packet Format
38894 @cindex register packet format, @acronym{MIPS}
38895
38896 The following @code{g}/@code{G} packets have previously been defined.
38897 In the below, some thirty-two bit registers are transferred as
38898 sixty-four bits. Those registers should be zero/sign extended (which?)
38899 to fill the space allocated. Register bytes are transferred in target
38900 byte order. The two nibbles within a register byte are transferred
38901 most-significant -- least-significant.
38902
38903 @table @r
38904
38905 @item MIPS32
38906 All registers are transferred as thirty-two bit quantities in the order:
38907 32 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
38908 registers; fsr; fir; fp.
38909
38910 @item MIPS64
38911 All registers are transferred as sixty-four bit quantities (including
38912 thirty-two bit registers such as @code{sr}). The ordering is the same
38913 as @code{MIPS32}.
38914
38915 @end table
38916
38917 @node MIPS Breakpoint Kinds
38918 @subsubsection @acronym{MIPS} Breakpoint Kinds
38919 @cindex breakpoint kinds, @acronym{MIPS}
38920
38921 These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
38922
38923 @table @r
38924
38925 @item 2
38926 16-bit @acronym{MIPS16} mode breakpoint.
38927
38928 @item 3
38929 16-bit @acronym{microMIPS} mode breakpoint.
38930
38931 @item 4
38932 32-bit standard @acronym{MIPS} mode breakpoint.
38933
38934 @item 5
38935 32-bit @acronym{microMIPS} mode breakpoint.
38936
38937 @end table
38938
38939 @node Tracepoint Packets
38940 @section Tracepoint Packets
38941 @cindex tracepoint packets
38942 @cindex packets, tracepoint
38943
38944 Here we describe the packets @value{GDBN} uses to implement
38945 tracepoints (@pxref{Tracepoints}).
38946
38947 @table @samp
38948
38949 @item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
38950 @cindex @samp{QTDP} packet
38951 Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
38952 is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
38953 the tracepoint is disabled. The @var{step} gives the tracepoint's step
38954 count, and @var{pass} gives its pass count. If an @samp{F} is present,
38955 then the tracepoint is to be a fast tracepoint, and the @var{flen} is
38956 the number of bytes that the target should copy elsewhere to make room
38957 for the tracepoint. If an @samp{X} is present, it introduces a
38958 tracepoint condition, which consists of a hexadecimal length, followed
38959 by a comma and hex-encoded bytes, in a manner similar to action
38960 encodings as described below. If the trailing @samp{-} is present,
38961 further @samp{QTDP} packets will follow to specify this tracepoint's
38962 actions.
38963
38964 Replies:
38965 @table @samp
38966 @item OK
38967 The packet was understood and carried out.
38968 @item qRelocInsn
38969 @xref{Tracepoint Packets,,Relocate instruction reply packet}.
38970 @item @w{}
38971 The packet was not recognized.
38972 @end table
38973
38974 @item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
38975 Define actions to be taken when a tracepoint is hit. The @var{n} and
38976 @var{addr} must be the same as in the initial @samp{QTDP} packet for
38977 this tracepoint. This packet may only be sent immediately after
38978 another @samp{QTDP} packet that ended with a @samp{-}. If the
38979 trailing @samp{-} is present, further @samp{QTDP} packets will follow,
38980 specifying more actions for this tracepoint.
38981
38982 In the series of action packets for a given tracepoint, at most one
38983 can have an @samp{S} before its first @var{action}. If such a packet
38984 is sent, it and the following packets define ``while-stepping''
38985 actions. Any prior packets define ordinary actions --- that is, those
38986 taken when the tracepoint is first hit. If no action packet has an
38987 @samp{S}, then all the packets in the series specify ordinary
38988 tracepoint actions.
38989
38990 The @samp{@var{action}@dots{}} portion of the packet is a series of
38991 actions, concatenated without separators. Each action has one of the
38992 following forms:
38993
38994 @table @samp
38995
38996 @item R @var{mask}
38997 Collect the registers whose bits are set in @var{mask},
38998 a hexadecimal number whose @var{i}'th bit is set if register number
38999 @var{i} should be collected. (The least significant bit is numbered
39000 zero.) Note that @var{mask} may be any number of digits long; it may
39001 not fit in a 32-bit word.
39002
39003 @item M @var{basereg},@var{offset},@var{len}
39004 Collect @var{len} bytes of memory starting at the address in register
39005 number @var{basereg}, plus @var{offset}. If @var{basereg} is
39006 @samp{-1}, then the range has a fixed address: @var{offset} is the
39007 address of the lowest byte to collect. The @var{basereg},
39008 @var{offset}, and @var{len} parameters are all unsigned hexadecimal
39009 values (the @samp{-1} value for @var{basereg} is a special case).
39010
39011 @item X @var{len},@var{expr}
39012 Evaluate @var{expr}, whose length is @var{len}, and collect memory as
39013 it directs. The agent expression @var{expr} is as described in
39014 @ref{Agent Expressions}. Each byte of the expression is encoded as a
39015 two-digit hex number in the packet; @var{len} is the number of bytes
39016 in the expression (and thus one-half the number of hex digits in the
39017 packet).
39018
39019 @end table
39020
39021 Any number of actions may be packed together in a single @samp{QTDP}
39022 packet, as long as the packet does not exceed the maximum packet
39023 length (400 bytes, for many stubs). There may be only one @samp{R}
39024 action per tracepoint, and it must precede any @samp{M} or @samp{X}
39025 actions. Any registers referred to by @samp{M} and @samp{X} actions
39026 must be collected by a preceding @samp{R} action. (The
39027 ``while-stepping'' actions are treated as if they were attached to a
39028 separate tracepoint, as far as these restrictions are concerned.)
39029
39030 Replies:
39031 @table @samp
39032 @item OK
39033 The packet was understood and carried out.
39034 @item qRelocInsn
39035 @xref{Tracepoint Packets,,Relocate instruction reply packet}.
39036 @item @w{}
39037 The packet was not recognized.
39038 @end table
39039
39040 @item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
39041 @cindex @samp{QTDPsrc} packet
39042 Specify a source string of tracepoint @var{n} at address @var{addr}.
39043 This is useful to get accurate reproduction of the tracepoints
39044 originally downloaded at the beginning of the trace run. The @var{type}
39045 is the name of the tracepoint part, such as @samp{cond} for the
39046 tracepoint's conditional expression (see below for a list of types), while
39047 @var{bytes} is the string, encoded in hexadecimal.
39048
39049 @var{start} is the offset of the @var{bytes} within the overall source
39050 string, while @var{slen} is the total length of the source string.
39051 This is intended for handling source strings that are longer than will
39052 fit in a single packet.
39053 @c Add detailed example when this info is moved into a dedicated
39054 @c tracepoint descriptions section.
39055
39056 The available string types are @samp{at} for the location,
39057 @samp{cond} for the conditional, and @samp{cmd} for an action command.
39058 @value{GDBN} sends a separate packet for each command in the action
39059 list, in the same order in which the commands are stored in the list.
39060
39061 The target does not need to do anything with source strings except
39062 report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
39063 query packets.
39064
39065 Although this packet is optional, and @value{GDBN} will only send it
39066 if the target replies with @samp{TracepointSource} @xref{General
39067 Query Packets}, it makes both disconnected tracing and trace files
39068 much easier to use. Otherwise the user must be careful that the
39069 tracepoints in effect while looking at trace frames are identical to
39070 the ones in effect during the trace run; even a small discrepancy
39071 could cause @samp{tdump} not to work, or a particular trace frame not
39072 be found.
39073
39074 @item QTDV:@var{n}:@var{value}:@var{builtin}:@var{name}
39075 @cindex define trace state variable, remote request
39076 @cindex @samp{QTDV} packet
39077 Create a new trace state variable, number @var{n}, with an initial
39078 value of @var{value}, which is a 64-bit signed integer. Both @var{n}
39079 and @var{value} are encoded as hexadecimal values. @value{GDBN} has
39080 the option of not using this packet for initial values of zero; the
39081 target should simply create the trace state variables as they are
39082 mentioned in expressions. The value @var{builtin} should be 1 (one)
39083 if the trace state variable is builtin and 0 (zero) if it is not builtin.
39084 @value{GDBN} only sets @var{builtin} to 1 if a previous @samp{qTfV} or
39085 @samp{qTsV} packet had it set. The contents of @var{name} is the
39086 hex-encoded name (without the leading @samp{$}) of the trace state
39087 variable.
39088
39089 @item QTFrame:@var{n}
39090 @cindex @samp{QTFrame} packet
39091 Select the @var{n}'th tracepoint frame from the buffer, and use the
39092 register and memory contents recorded there to answer subsequent
39093 request packets from @value{GDBN}.
39094
39095 A successful reply from the stub indicates that the stub has found the
39096 requested frame. The response is a series of parts, concatenated
39097 without separators, describing the frame we selected. Each part has
39098 one of the following forms:
39099
39100 @table @samp
39101 @item F @var{f}
39102 The selected frame is number @var{n} in the trace frame buffer;
39103 @var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
39104 was no frame matching the criteria in the request packet.
39105
39106 @item T @var{t}
39107 The selected trace frame records a hit of tracepoint number @var{t};
39108 @var{t} is a hexadecimal number.
39109
39110 @end table
39111
39112 @item QTFrame:pc:@var{addr}
39113 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
39114 currently selected frame whose PC is @var{addr};
39115 @var{addr} is a hexadecimal number.
39116
39117 @item QTFrame:tdp:@var{t}
39118 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
39119 currently selected frame that is a hit of tracepoint @var{t}; @var{t}
39120 is a hexadecimal number.
39121
39122 @item QTFrame:range:@var{start}:@var{end}
39123 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
39124 currently selected frame whose PC is between @var{start} (inclusive)
39125 and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
39126 numbers.
39127
39128 @item QTFrame:outside:@var{start}:@var{end}
39129 Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
39130 frame @emph{outside} the given range of addresses (exclusive).
39131
39132 @item qTMinFTPILen
39133 @cindex @samp{qTMinFTPILen} packet
39134 This packet requests the minimum length of instruction at which a fast
39135 tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on
39136 the 32-bit x86 architecture, it is possible to use a 4-byte jump, but
39137 it depends on the target system being able to create trampolines in
39138 the first 64K of memory, which might or might not be possible for that
39139 system. So the reply to this packet will be 4 if it is able to
39140 arrange for that.
39141
39142 Replies:
39143
39144 @table @samp
39145 @item 0
39146 The minimum instruction length is currently unknown.
39147 @item @var{length}
39148 The minimum instruction length is @var{length}, where @var{length}
39149 is a hexadecimal number greater or equal to 1. A reply
39150 of 1 means that a fast tracepoint may be placed on any instruction
39151 regardless of size.
39152 @item E
39153 An error has occurred.
39154 @item @w{}
39155 An empty reply indicates that the request is not supported by the stub.
39156 @end table
39157
39158 @item QTStart
39159 @cindex @samp{QTStart} packet
39160 Begin the tracepoint experiment. Begin collecting data from
39161 tracepoint hits in the trace frame buffer. This packet supports the
39162 @samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate
39163 instruction reply packet}).
39164
39165 @item QTStop
39166 @cindex @samp{QTStop} packet
39167 End the tracepoint experiment. Stop collecting trace frames.
39168
39169 @item QTEnable:@var{n}:@var{addr}
39170 @anchor{QTEnable}
39171 @cindex @samp{QTEnable} packet
39172 Enable tracepoint @var{n} at address @var{addr} in a started tracepoint
39173 experiment. If the tracepoint was previously disabled, then collection
39174 of data from it will resume.
39175
39176 @item QTDisable:@var{n}:@var{addr}
39177 @anchor{QTDisable}
39178 @cindex @samp{QTDisable} packet
39179 Disable tracepoint @var{n} at address @var{addr} in a started tracepoint
39180 experiment. No more data will be collected from the tracepoint unless
39181 @samp{QTEnable:@var{n}:@var{addr}} is subsequently issued.
39182
39183 @item QTinit
39184 @cindex @samp{QTinit} packet
39185 Clear the table of tracepoints, and empty the trace frame buffer.
39186
39187 @item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
39188 @cindex @samp{QTro} packet
39189 Establish the given ranges of memory as ``transparent''. The stub
39190 will answer requests for these ranges from memory's current contents,
39191 if they were not collected as part of the tracepoint hit.
39192
39193 @value{GDBN} uses this to mark read-only regions of memory, like those
39194 containing program code. Since these areas never change, they should
39195 still have the same contents they did when the tracepoint was hit, so
39196 there's no reason for the stub to refuse to provide their contents.
39197
39198 @item QTDisconnected:@var{value}
39199 @cindex @samp{QTDisconnected} packet
39200 Set the choice to what to do with the tracing run when @value{GDBN}
39201 disconnects from the target. A @var{value} of 1 directs the target to
39202 continue the tracing run, while 0 tells the target to stop tracing if
39203 @value{GDBN} is no longer in the picture.
39204
39205 @item qTStatus
39206 @cindex @samp{qTStatus} packet
39207 Ask the stub if there is a trace experiment running right now.
39208
39209 The reply has the form:
39210
39211 @table @samp
39212
39213 @item T@var{running}@r{[};@var{field}@r{]}@dots{}
39214 @var{running} is a single digit @code{1} if the trace is presently
39215 running, or @code{0} if not. It is followed by semicolon-separated
39216 optional fields that an agent may use to report additional status.
39217
39218 @end table
39219
39220 If the trace is not running, the agent may report any of several
39221 explanations as one of the optional fields:
39222
39223 @table @samp
39224
39225 @item tnotrun:0
39226 No trace has been run yet.
39227
39228 @item tstop[:@var{text}]:0
39229 The trace was stopped by a user-originated stop command. The optional
39230 @var{text} field is a user-supplied string supplied as part of the
39231 stop command (for instance, an explanation of why the trace was
39232 stopped manually). It is hex-encoded.
39233
39234 @item tfull:0
39235 The trace stopped because the trace buffer filled up.
39236
39237 @item tdisconnected:0
39238 The trace stopped because @value{GDBN} disconnected from the target.
39239
39240 @item tpasscount:@var{tpnum}
39241 The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
39242
39243 @item terror:@var{text}:@var{tpnum}
39244 The trace stopped because tracepoint @var{tpnum} had an error. The
39245 string @var{text} is available to describe the nature of the error
39246 (for instance, a divide by zero in the condition expression); it
39247 is hex encoded.
39248
39249 @item tunknown:0
39250 The trace stopped for some other reason.
39251
39252 @end table
39253
39254 Additional optional fields supply statistical and other information.
39255 Although not required, they are extremely useful for users monitoring
39256 the progress of a trace run. If a trace has stopped, and these
39257 numbers are reported, they must reflect the state of the just-stopped
39258 trace.
39259
39260 @table @samp
39261
39262 @item tframes:@var{n}
39263 The number of trace frames in the buffer.
39264
39265 @item tcreated:@var{n}
39266 The total number of trace frames created during the run. This may
39267 be larger than the trace frame count, if the buffer is circular.
39268
39269 @item tsize:@var{n}
39270 The total size of the trace buffer, in bytes.
39271
39272 @item tfree:@var{n}
39273 The number of bytes still unused in the buffer.
39274
39275 @item circular:@var{n}
39276 The value of the circular trace buffer flag. @code{1} means that the
39277 trace buffer is circular and old trace frames will be discarded if
39278 necessary to make room, @code{0} means that the trace buffer is linear
39279 and may fill up.
39280
39281 @item disconn:@var{n}
39282 The value of the disconnected tracing flag. @code{1} means that
39283 tracing will continue after @value{GDBN} disconnects, @code{0} means
39284 that the trace run will stop.
39285
39286 @end table
39287
39288 @item qTP:@var{tp}:@var{addr}
39289 @cindex tracepoint status, remote request
39290 @cindex @samp{qTP} packet
39291 Ask the stub for the current state of tracepoint number @var{tp} at
39292 address @var{addr}.
39293
39294 Replies:
39295 @table @samp
39296 @item V@var{hits}:@var{usage}
39297 The tracepoint has been hit @var{hits} times so far during the trace
39298 run, and accounts for @var{usage} in the trace buffer. Note that
39299 @code{while-stepping} steps are not counted as separate hits, but the
39300 steps' space consumption is added into the usage number.
39301
39302 @end table
39303
39304 @item qTV:@var{var}
39305 @cindex trace state variable value, remote request
39306 @cindex @samp{qTV} packet
39307 Ask the stub for the value of the trace state variable number @var{var}.
39308
39309 Replies:
39310 @table @samp
39311 @item V@var{value}
39312 The value of the variable is @var{value}. This will be the current
39313 value of the variable if the user is examining a running target, or a
39314 saved value if the variable was collected in the trace frame that the
39315 user is looking at. Note that multiple requests may result in
39316 different reply values, such as when requesting values while the
39317 program is running.
39318
39319 @item U
39320 The value of the variable is unknown. This would occur, for example,
39321 if the user is examining a trace frame in which the requested variable
39322 was not collected.
39323 @end table
39324
39325 @item qTfP
39326 @cindex @samp{qTfP} packet
39327 @itemx qTsP
39328 @cindex @samp{qTsP} packet
39329 These packets request data about tracepoints that are being used by
39330 the target. @value{GDBN} sends @code{qTfP} to get the first piece
39331 of data, and multiple @code{qTsP} to get additional pieces. Replies
39332 to these packets generally take the form of the @code{QTDP} packets
39333 that define tracepoints. (FIXME add detailed syntax)
39334
39335 @item qTfV
39336 @cindex @samp{qTfV} packet
39337 @itemx qTsV
39338 @cindex @samp{qTsV} packet
39339 These packets request data about trace state variables that are on the
39340 target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
39341 and multiple @code{qTsV} to get additional variables. Replies to
39342 these packets follow the syntax of the @code{QTDV} packets that define
39343 trace state variables.
39344
39345 @item qTfSTM
39346 @itemx qTsSTM
39347 @anchor{qTfSTM}
39348 @anchor{qTsSTM}
39349 @cindex @samp{qTfSTM} packet
39350 @cindex @samp{qTsSTM} packet
39351 These packets request data about static tracepoint markers that exist
39352 in the target program. @value{GDBN} sends @code{qTfSTM} to get the
39353 first piece of data, and multiple @code{qTsSTM} to get additional
39354 pieces. Replies to these packets take the following form:
39355
39356 Reply:
39357 @table @samp
39358 @item m @var{address}:@var{id}:@var{extra}
39359 A single marker
39360 @item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{}
39361 a comma-separated list of markers
39362 @item l
39363 (lower case letter @samp{L}) denotes end of list.
39364 @item E @var{nn}
39365 An error occurred. The error number @var{nn} is given as hex digits.
39366 @item @w{}
39367 An empty reply indicates that the request is not supported by the
39368 stub.
39369 @end table
39370
39371 The @var{address} is encoded in hex;
39372 @var{id} and @var{extra} are strings encoded in hex.
39373
39374 In response to each query, the target will reply with a list of one or
39375 more markers, separated by commas. @value{GDBN} will respond to each
39376 reply with a request for more markers (using the @samp{qs} form of the
39377 query), until the target responds with @samp{l} (lower-case ell, for
39378 @dfn{last}).
39379
39380 @item qTSTMat:@var{address}
39381 @anchor{qTSTMat}
39382 @cindex @samp{qTSTMat} packet
39383 This packets requests data about static tracepoint markers in the
39384 target program at @var{address}. Replies to this packet follow the
39385 syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static
39386 tracepoint markers.
39387
39388 @item QTSave:@var{filename}
39389 @cindex @samp{QTSave} packet
39390 This packet directs the target to save trace data to the file name
39391 @var{filename} in the target's filesystem. The @var{filename} is encoded
39392 as a hex string; the interpretation of the file name (relative vs
39393 absolute, wild cards, etc) is up to the target.
39394
39395 @item qTBuffer:@var{offset},@var{len}
39396 @cindex @samp{qTBuffer} packet
39397 Return up to @var{len} bytes of the current contents of trace buffer,
39398 starting at @var{offset}. The trace buffer is treated as if it were
39399 a contiguous collection of traceframes, as per the trace file format.
39400 The reply consists as many hex-encoded bytes as the target can deliver
39401 in a packet; it is not an error to return fewer than were asked for.
39402 A reply consisting of just @code{l} indicates that no bytes are
39403 available.
39404
39405 @item QTBuffer:circular:@var{value}
39406 This packet directs the target to use a circular trace buffer if
39407 @var{value} is 1, or a linear buffer if the value is 0.
39408
39409 @item QTBuffer:size:@var{size}
39410 @anchor{QTBuffer-size}
39411 @cindex @samp{QTBuffer size} packet
39412 This packet directs the target to make the trace buffer be of size
39413 @var{size} if possible. A value of @code{-1} tells the target to
39414 use whatever size it prefers.
39415
39416 @item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{}
39417 @cindex @samp{QTNotes} packet
39418 This packet adds optional textual notes to the trace run. Allowable
39419 types include @code{user}, @code{notes}, and @code{tstop}, the
39420 @var{text} fields are arbitrary strings, hex-encoded.
39421
39422 @end table
39423
39424 @subsection Relocate instruction reply packet
39425 When installing fast tracepoints in memory, the target may need to
39426 relocate the instruction currently at the tracepoint address to a
39427 different address in memory. For most instructions, a simple copy is
39428 enough, but, for example, call instructions that implicitly push the
39429 return address on the stack, and relative branches or other
39430 PC-relative instructions require offset adjustment, so that the effect
39431 of executing the instruction at a different address is the same as if
39432 it had executed in the original location.
39433
39434 In response to several of the tracepoint packets, the target may also
39435 respond with a number of intermediate @samp{qRelocInsn} request
39436 packets before the final result packet, to have @value{GDBN} handle
39437 this relocation operation. If a packet supports this mechanism, its
39438 documentation will explicitly say so. See for example the above
39439 descriptions for the @samp{QTStart} and @samp{QTDP} packets. The
39440 format of the request is:
39441
39442 @table @samp
39443 @item qRelocInsn:@var{from};@var{to}
39444
39445 This requests @value{GDBN} to copy instruction at address @var{from}
39446 to address @var{to}, possibly adjusted so that executing the
39447 instruction at @var{to} has the same effect as executing it at
39448 @var{from}. @value{GDBN} writes the adjusted instruction to target
39449 memory starting at @var{to}.
39450 @end table
39451
39452 Replies:
39453 @table @samp
39454 @item qRelocInsn:@var{adjusted_size}
39455 Informs the stub the relocation is complete. The @var{adjusted_size} is
39456 the length in bytes of resulting relocated instruction sequence.
39457 @item E @var{NN}
39458 A badly formed request was detected, or an error was encountered while
39459 relocating the instruction.
39460 @end table
39461
39462 @node Host I/O Packets
39463 @section Host I/O Packets
39464 @cindex Host I/O, remote protocol
39465 @cindex file transfer, remote protocol
39466
39467 The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
39468 operations on the far side of a remote link. For example, Host I/O is
39469 used to upload and download files to a remote target with its own
39470 filesystem. Host I/O uses the same constant values and data structure
39471 layout as the target-initiated File-I/O protocol. However, the
39472 Host I/O packets are structured differently. The target-initiated
39473 protocol relies on target memory to store parameters and buffers.
39474 Host I/O requests are initiated by @value{GDBN}, and the
39475 target's memory is not involved. @xref{File-I/O Remote Protocol
39476 Extension}, for more details on the target-initiated protocol.
39477
39478 The Host I/O request packets all encode a single operation along with
39479 its arguments. They have this format:
39480
39481 @table @samp
39482
39483 @item vFile:@var{operation}: @var{parameter}@dots{}
39484 @var{operation} is the name of the particular request; the target
39485 should compare the entire packet name up to the second colon when checking
39486 for a supported operation. The format of @var{parameter} depends on
39487 the operation. Numbers are always passed in hexadecimal. Negative
39488 numbers have an explicit minus sign (i.e.@: two's complement is not
39489 used). Strings (e.g.@: filenames) are encoded as a series of
39490 hexadecimal bytes. The last argument to a system call may be a
39491 buffer of escaped binary data (@pxref{Binary Data}).
39492
39493 @end table
39494
39495 The valid responses to Host I/O packets are:
39496
39497 @table @samp
39498
39499 @item F @var{result} [, @var{errno}] [; @var{attachment}]
39500 @var{result} is the integer value returned by this operation, usually
39501 non-negative for success and -1 for errors. If an error has occured,
39502 @var{errno} will be included in the result specifying a
39503 value defined by the File-I/O protocol (@pxref{Errno Values}). For
39504 operations which return data, @var{attachment} supplies the data as a
39505 binary buffer. Binary buffers in response packets are escaped in the
39506 normal way (@pxref{Binary Data}). See the individual packet
39507 documentation for the interpretation of @var{result} and
39508 @var{attachment}.
39509
39510 @item @w{}
39511 An empty response indicates that this operation is not recognized.
39512
39513 @end table
39514
39515 These are the supported Host I/O operations:
39516
39517 @table @samp
39518 @item vFile:open: @var{filename}, @var{flags}, @var{mode}
39519 Open a file at @var{filename} and return a file descriptor for it, or
39520 return -1 if an error occurs. The @var{filename} is a string,
39521 @var{flags} is an integer indicating a mask of open flags
39522 (@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
39523 of mode bits to use if the file is created (@pxref{mode_t Values}).
39524 @xref{open}, for details of the open flags and mode values.
39525
39526 @item vFile:close: @var{fd}
39527 Close the open file corresponding to @var{fd} and return 0, or
39528 -1 if an error occurs.
39529
39530 @item vFile:pread: @var{fd}, @var{count}, @var{offset}
39531 Read data from the open file corresponding to @var{fd}. Up to
39532 @var{count} bytes will be read from the file, starting at @var{offset}
39533 relative to the start of the file. The target may read fewer bytes;
39534 common reasons include packet size limits and an end-of-file
39535 condition. The number of bytes read is returned. Zero should only be
39536 returned for a successful read at the end of the file, or if
39537 @var{count} was zero.
39538
39539 The data read should be returned as a binary attachment on success.
39540 If zero bytes were read, the response should include an empty binary
39541 attachment (i.e.@: a trailing semicolon). The return value is the
39542 number of target bytes read; the binary attachment may be longer if
39543 some characters were escaped.
39544
39545 @item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
39546 Write @var{data} (a binary buffer) to the open file corresponding
39547 to @var{fd}. Start the write at @var{offset} from the start of the
39548 file. Unlike many @code{write} system calls, there is no
39549 separate @var{count} argument; the length of @var{data} in the
39550 packet is used. @samp{vFile:write} returns the number of bytes written,
39551 which may be shorter than the length of @var{data}, or -1 if an
39552 error occurred.
39553
39554 @item vFile:fstat: @var{fd}
39555 Get information about the open file corresponding to @var{fd}.
39556 On success the information is returned as a binary attachment
39557 and the return value is the size of this attachment in bytes.
39558 If an error occurs the return value is -1. The format of the
39559 returned binary attachment is as described in @ref{struct stat}.
39560
39561 @item vFile:unlink: @var{filename}
39562 Delete the file at @var{filename} on the target. Return 0,
39563 or -1 if an error occurs. The @var{filename} is a string.
39564
39565 @item vFile:readlink: @var{filename}
39566 Read value of symbolic link @var{filename} on the target. Return
39567 the number of bytes read, or -1 if an error occurs.
39568
39569 The data read should be returned as a binary attachment on success.
39570 If zero bytes were read, the response should include an empty binary
39571 attachment (i.e.@: a trailing semicolon). The return value is the
39572 number of target bytes read; the binary attachment may be longer if
39573 some characters were escaped.
39574
39575 @item vFile:setfs: @var{pid}
39576 Select the filesystem on which @code{vFile} operations with
39577 @var{filename} arguments will operate. This is required for
39578 @value{GDBN} to be able to access files on remote targets where
39579 the remote stub does not share a common filesystem with the
39580 inferior(s).
39581
39582 If @var{pid} is nonzero, select the filesystem as seen by process
39583 @var{pid}. If @var{pid} is zero, select the filesystem as seen by
39584 the remote stub. Return 0 on success, or -1 if an error occurs.
39585 If @code{vFile:setfs:} indicates success, the selected filesystem
39586 remains selected until the next successful @code{vFile:setfs:}
39587 operation.
39588
39589 @end table
39590
39591 @node Interrupts
39592 @section Interrupts
39593 @cindex interrupts (remote protocol)
39594 @anchor{interrupting remote targets}
39595
39596 In all-stop mode, when a program on the remote target is running,
39597 @value{GDBN} may attempt to interrupt it by sending a @samp{Ctrl-C},
39598 @code{BREAK} or a @code{BREAK} followed by @code{g}, control of which
39599 is specified via @value{GDBN}'s @samp{interrupt-sequence}.
39600
39601 The precise meaning of @code{BREAK} is defined by the transport
39602 mechanism and may, in fact, be undefined. @value{GDBN} does not
39603 currently define a @code{BREAK} mechanism for any of the network
39604 interfaces except for TCP, in which case @value{GDBN} sends the
39605 @code{telnet} BREAK sequence.
39606
39607 @samp{Ctrl-C}, on the other hand, is defined and implemented for all
39608 transport mechanisms. It is represented by sending the single byte
39609 @code{0x03} without any of the usual packet overhead described in
39610 the Overview section (@pxref{Overview}). When a @code{0x03} byte is
39611 transmitted as part of a packet, it is considered to be packet data
39612 and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
39613 (@pxref{X packet}), used for binary downloads, may include an unescaped
39614 @code{0x03} as part of its packet.
39615
39616 @code{BREAK} followed by @code{g} is also known as Magic SysRq g.
39617 When Linux kernel receives this sequence from serial port,
39618 it stops execution and connects to gdb.
39619
39620 In non-stop mode, because packet resumptions are asynchronous
39621 (@pxref{vCont packet}), @value{GDBN} is always free to send a remote
39622 command to the remote stub, even when the target is running. For that
39623 reason, @value{GDBN} instead sends a regular packet (@pxref{vCtrlC
39624 packet}) with the usual packet framing instead of the single byte
39625 @code{0x03}.
39626
39627 Stubs are not required to recognize these interrupt mechanisms and the
39628 precise meaning associated with receipt of the interrupt is
39629 implementation defined. If the target supports debugging of multiple
39630 threads and/or processes, it should attempt to interrupt all
39631 currently-executing threads and processes.
39632 If the stub is successful at interrupting the
39633 running program, it should send one of the stop
39634 reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
39635 of successfully stopping the program in all-stop mode, and a stop reply
39636 for each stopped thread in non-stop mode.
39637 Interrupts received while the
39638 program is stopped are queued and the program will be interrupted when
39639 it is resumed next time.
39640
39641 @node Notification Packets
39642 @section Notification Packets
39643 @cindex notification packets
39644 @cindex packets, notification
39645
39646 The @value{GDBN} remote serial protocol includes @dfn{notifications},
39647 packets that require no acknowledgment. Both the GDB and the stub
39648 may send notifications (although the only notifications defined at
39649 present are sent by the stub). Notifications carry information
39650 without incurring the round-trip latency of an acknowledgment, and so
39651 are useful for low-impact communications where occasional packet loss
39652 is not a problem.
39653
39654 A notification packet has the form @samp{% @var{data} #
39655 @var{checksum}}, where @var{data} is the content of the notification,
39656 and @var{checksum} is a checksum of @var{data}, computed and formatted
39657 as for ordinary @value{GDBN} packets. A notification's @var{data}
39658 never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
39659 receiving a notification, the recipient sends no @samp{+} or @samp{-}
39660 to acknowledge the notification's receipt or to report its corruption.
39661
39662 Every notification's @var{data} begins with a name, which contains no
39663 colon characters, followed by a colon character.
39664
39665 Recipients should silently ignore corrupted notifications and
39666 notifications they do not understand. Recipients should restart
39667 timeout periods on receipt of a well-formed notification, whether or
39668 not they understand it.
39669
39670 Senders should only send the notifications described here when this
39671 protocol description specifies that they are permitted. In the
39672 future, we may extend the protocol to permit existing notifications in
39673 new contexts; this rule helps older senders avoid confusing newer
39674 recipients.
39675
39676 (Older versions of @value{GDBN} ignore bytes received until they see
39677 the @samp{$} byte that begins an ordinary packet, so new stubs may
39678 transmit notifications without fear of confusing older clients. There
39679 are no notifications defined for @value{GDBN} to send at the moment, but we
39680 assume that most older stubs would ignore them, as well.)
39681
39682 Each notification is comprised of three parts:
39683 @table @samp
39684 @item @var{name}:@var{event}
39685 The notification packet is sent by the side that initiates the
39686 exchange (currently, only the stub does that), with @var{event}
39687 carrying the specific information about the notification, and
39688 @var{name} specifying the name of the notification.
39689 @item @var{ack}
39690 The acknowledge sent by the other side, usually @value{GDBN}, to
39691 acknowledge the exchange and request the event.
39692 @end table
39693
39694 The purpose of an asynchronous notification mechanism is to report to
39695 @value{GDBN} that something interesting happened in the remote stub.
39696
39697 The remote stub may send notification @var{name}:@var{event}
39698 at any time, but @value{GDBN} acknowledges the notification when
39699 appropriate. The notification event is pending before @value{GDBN}
39700 acknowledges. Only one notification at a time may be pending; if
39701 additional events occur before @value{GDBN} has acknowledged the
39702 previous notification, they must be queued by the stub for later
39703 synchronous transmission in response to @var{ack} packets from
39704 @value{GDBN}. Because the notification mechanism is unreliable,
39705 the stub is permitted to resend a notification if it believes
39706 @value{GDBN} may not have received it.
39707
39708 Specifically, notifications may appear when @value{GDBN} is not
39709 otherwise reading input from the stub, or when @value{GDBN} is
39710 expecting to read a normal synchronous response or a
39711 @samp{+}/@samp{-} acknowledgment to a packet it has sent.
39712 Notification packets are distinct from any other communication from
39713 the stub so there is no ambiguity.
39714
39715 After receiving a notification, @value{GDBN} shall acknowledge it by
39716 sending a @var{ack} packet as a regular, synchronous request to the
39717 stub. Such acknowledgment is not required to happen immediately, as
39718 @value{GDBN} is permitted to send other, unrelated packets to the
39719 stub first, which the stub should process normally.
39720
39721 Upon receiving a @var{ack} packet, if the stub has other queued
39722 events to report to @value{GDBN}, it shall respond by sending a
39723 normal @var{event}. @value{GDBN} shall then send another @var{ack}
39724 packet to solicit further responses; again, it is permitted to send
39725 other, unrelated packets as well which the stub should process
39726 normally.
39727
39728 If the stub receives a @var{ack} packet and there are no additional
39729 @var{event} to report, the stub shall return an @samp{OK} response.
39730 At this point, @value{GDBN} has finished processing a notification
39731 and the stub has completed sending any queued events. @value{GDBN}
39732 won't accept any new notifications until the final @samp{OK} is
39733 received . If further notification events occur, the stub shall send
39734 a new notification, @value{GDBN} shall accept the notification, and
39735 the process shall be repeated.
39736
39737 The process of asynchronous notification can be illustrated by the
39738 following example:
39739 @smallexample
39740 <- @code{%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;}
39741 @code{...}
39742 -> @code{vStopped}
39743 <- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;}
39744 -> @code{vStopped}
39745 <- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;}
39746 -> @code{vStopped}
39747 <- @code{OK}
39748 @end smallexample
39749
39750 The following notifications are defined:
39751 @multitable @columnfractions 0.12 0.12 0.38 0.38
39752
39753 @item Notification
39754 @tab Ack
39755 @tab Event
39756 @tab Description
39757
39758 @item Stop
39759 @tab vStopped
39760 @tab @var{reply}. The @var{reply} has the form of a stop reply, as
39761 described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
39762 for information on how these notifications are acknowledged by
39763 @value{GDBN}.
39764 @tab Report an asynchronous stop event in non-stop mode.
39765
39766 @end multitable
39767
39768 @node Remote Non-Stop
39769 @section Remote Protocol Support for Non-Stop Mode
39770
39771 @value{GDBN}'s remote protocol supports non-stop debugging of
39772 multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
39773 supports non-stop mode, it should report that to @value{GDBN} by including
39774 @samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
39775
39776 @value{GDBN} typically sends a @samp{QNonStop} packet only when
39777 establishing a new connection with the stub. Entering non-stop mode
39778 does not alter the state of any currently-running threads, but targets
39779 must stop all threads in any already-attached processes when entering
39780 all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
39781 probe the target state after a mode change.
39782
39783 In non-stop mode, when an attached process encounters an event that
39784 would otherwise be reported with a stop reply, it uses the
39785 asynchronous notification mechanism (@pxref{Notification Packets}) to
39786 inform @value{GDBN}. In contrast to all-stop mode, where all threads
39787 in all processes are stopped when a stop reply is sent, in non-stop
39788 mode only the thread reporting the stop event is stopped. That is,
39789 when reporting a @samp{S} or @samp{T} response to indicate completion
39790 of a step operation, hitting a breakpoint, or a fault, only the
39791 affected thread is stopped; any other still-running threads continue
39792 to run. When reporting a @samp{W} or @samp{X} response, all running
39793 threads belonging to other attached processes continue to run.
39794
39795 In non-stop mode, the target shall respond to the @samp{?} packet as
39796 follows. First, any incomplete stop reply notification/@samp{vStopped}
39797 sequence in progress is abandoned. The target must begin a new
39798 sequence reporting stop events for all stopped threads, whether or not
39799 it has previously reported those events to @value{GDBN}. The first
39800 stop reply is sent as a synchronous reply to the @samp{?} packet, and
39801 subsequent stop replies are sent as responses to @samp{vStopped} packets
39802 using the mechanism described above. The target must not send
39803 asynchronous stop reply notifications until the sequence is complete.
39804 If all threads are running when the target receives the @samp{?} packet,
39805 or if the target is not attached to any process, it shall respond
39806 @samp{OK}.
39807
39808 If the stub supports non-stop mode, it should also support the
39809 @samp{swbreak} stop reason if software breakpoints are supported, and
39810 the @samp{hwbreak} stop reason if hardware breakpoints are supported
39811 (@pxref{swbreak stop reason}). This is because given the asynchronous
39812 nature of non-stop mode, between the time a thread hits a breakpoint
39813 and the time the event is finally processed by @value{GDBN}, the
39814 breakpoint may have already been removed from the target. Due to
39815 this, @value{GDBN} needs to be able to tell whether a trap stop was
39816 caused by a delayed breakpoint event, which should be ignored, as
39817 opposed to a random trap signal, which should be reported to the user.
39818 Note the @samp{swbreak} feature implies that the target is responsible
39819 for adjusting the PC when a software breakpoint triggers, if
39820 necessary, such as on the x86 architecture.
39821
39822 @node Packet Acknowledgment
39823 @section Packet Acknowledgment
39824
39825 @cindex acknowledgment, for @value{GDBN} remote
39826 @cindex packet acknowledgment, for @value{GDBN} remote
39827 By default, when either the host or the target machine receives a packet,
39828 the first response expected is an acknowledgment: either @samp{+} (to indicate
39829 the package was received correctly) or @samp{-} (to request retransmission).
39830 This mechanism allows the @value{GDBN} remote protocol to operate over
39831 unreliable transport mechanisms, such as a serial line.
39832
39833 In cases where the transport mechanism is itself reliable (such as a pipe or
39834 TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
39835 It may be desirable to disable them in that case to reduce communication
39836 overhead, or for other reasons. This can be accomplished by means of the
39837 @samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
39838
39839 When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
39840 expect @samp{+}/@samp{-} protocol acknowledgments. The packet
39841 and response format still includes the normal checksum, as described in
39842 @ref{Overview}, but the checksum may be ignored by the receiver.
39843
39844 If the stub supports @samp{QStartNoAckMode} and prefers to operate in
39845 no-acknowledgment mode, it should report that to @value{GDBN}
39846 by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
39847 @pxref{qSupported}.
39848 If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
39849 disabled via the @code{set remote noack-packet off} command
39850 (@pxref{Remote Configuration}),
39851 @value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
39852 Only then may the stub actually turn off packet acknowledgments.
39853 @value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
39854 response, which can be safely ignored by the stub.
39855
39856 Note that @code{set remote noack-packet} command only affects negotiation
39857 between @value{GDBN} and the stub when subsequent connections are made;
39858 it does not affect the protocol acknowledgment state for any current
39859 connection.
39860 Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
39861 new connection is established,
39862 there is also no protocol request to re-enable the acknowledgments
39863 for the current connection, once disabled.
39864
39865 @node Examples
39866 @section Examples
39867
39868 Example sequence of a target being re-started. Notice how the restart
39869 does not get any direct output:
39870
39871 @smallexample
39872 -> @code{R00}
39873 <- @code{+}
39874 @emph{target restarts}
39875 -> @code{?}
39876 <- @code{+}
39877 <- @code{T001:1234123412341234}
39878 -> @code{+}
39879 @end smallexample
39880
39881 Example sequence of a target being stepped by a single instruction:
39882
39883 @smallexample
39884 -> @code{G1445@dots{}}
39885 <- @code{+}
39886 -> @code{s}
39887 <- @code{+}
39888 @emph{time passes}
39889 <- @code{T001:1234123412341234}
39890 -> @code{+}
39891 -> @code{g}
39892 <- @code{+}
39893 <- @code{1455@dots{}}
39894 -> @code{+}
39895 @end smallexample
39896
39897 @node File-I/O Remote Protocol Extension
39898 @section File-I/O Remote Protocol Extension
39899 @cindex File-I/O remote protocol extension
39900
39901 @menu
39902 * File-I/O Overview::
39903 * Protocol Basics::
39904 * The F Request Packet::
39905 * The F Reply Packet::
39906 * The Ctrl-C Message::
39907 * Console I/O::
39908 * List of Supported Calls::
39909 * Protocol-specific Representation of Datatypes::
39910 * Constants::
39911 * File-I/O Examples::
39912 @end menu
39913
39914 @node File-I/O Overview
39915 @subsection File-I/O Overview
39916 @cindex file-i/o overview
39917
39918 The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
39919 target to use the host's file system and console I/O to perform various
39920 system calls. System calls on the target system are translated into a
39921 remote protocol packet to the host system, which then performs the needed
39922 actions and returns a response packet to the target system.
39923 This simulates file system operations even on targets that lack file systems.
39924
39925 The protocol is defined to be independent of both the host and target systems.
39926 It uses its own internal representation of datatypes and values. Both
39927 @value{GDBN} and the target's @value{GDBN} stub are responsible for
39928 translating the system-dependent value representations into the internal
39929 protocol representations when data is transmitted.
39930
39931 The communication is synchronous. A system call is possible only when
39932 @value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
39933 or @samp{s} packets. While @value{GDBN} handles the request for a system call,
39934 the target is stopped to allow deterministic access to the target's
39935 memory. Therefore File-I/O is not interruptible by target signals. On
39936 the other hand, it is possible to interrupt File-I/O by a user interrupt
39937 (@samp{Ctrl-C}) within @value{GDBN}.
39938
39939 The target's request to perform a host system call does not finish
39940 the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
39941 after finishing the system call, the target returns to continuing the
39942 previous activity (continue, step). No additional continue or step
39943 request from @value{GDBN} is required.
39944
39945 @smallexample
39946 (@value{GDBP}) continue
39947 <- target requests 'system call X'
39948 target is stopped, @value{GDBN} executes system call
39949 -> @value{GDBN} returns result
39950 ... target continues, @value{GDBN} returns to wait for the target
39951 <- target hits breakpoint and sends a Txx packet
39952 @end smallexample
39953
39954 The protocol only supports I/O on the console and to regular files on
39955 the host file system. Character or block special devices, pipes,
39956 named pipes, sockets or any other communication method on the host
39957 system are not supported by this protocol.
39958
39959 File I/O is not supported in non-stop mode.
39960
39961 @node Protocol Basics
39962 @subsection Protocol Basics
39963 @cindex protocol basics, file-i/o
39964
39965 The File-I/O protocol uses the @code{F} packet as the request as well
39966 as reply packet. Since a File-I/O system call can only occur when
39967 @value{GDBN} is waiting for a response from the continuing or stepping target,
39968 the File-I/O request is a reply that @value{GDBN} has to expect as a result
39969 of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
39970 This @code{F} packet contains all information needed to allow @value{GDBN}
39971 to call the appropriate host system call:
39972
39973 @itemize @bullet
39974 @item
39975 A unique identifier for the requested system call.
39976
39977 @item
39978 All parameters to the system call. Pointers are given as addresses
39979 in the target memory address space. Pointers to strings are given as
39980 pointer/length pair. Numerical values are given as they are.
39981 Numerical control flags are given in a protocol-specific representation.
39982
39983 @end itemize
39984
39985 At this point, @value{GDBN} has to perform the following actions.
39986
39987 @itemize @bullet
39988 @item
39989 If the parameters include pointer values to data needed as input to a
39990 system call, @value{GDBN} requests this data from the target with a
39991 standard @code{m} packet request. This additional communication has to be
39992 expected by the target implementation and is handled as any other @code{m}
39993 packet.
39994
39995 @item
39996 @value{GDBN} translates all value from protocol representation to host
39997 representation as needed. Datatypes are coerced into the host types.
39998
39999 @item
40000 @value{GDBN} calls the system call.
40001
40002 @item
40003 It then coerces datatypes back to protocol representation.
40004
40005 @item
40006 If the system call is expected to return data in buffer space specified
40007 by pointer parameters to the call, the data is transmitted to the
40008 target using a @code{M} or @code{X} packet. This packet has to be expected
40009 by the target implementation and is handled as any other @code{M} or @code{X}
40010 packet.
40011
40012 @end itemize
40013
40014 Eventually @value{GDBN} replies with another @code{F} packet which contains all
40015 necessary information for the target to continue. This at least contains
40016
40017 @itemize @bullet
40018 @item
40019 Return value.
40020
40021 @item
40022 @code{errno}, if has been changed by the system call.
40023
40024 @item
40025 ``Ctrl-C'' flag.
40026
40027 @end itemize
40028
40029 After having done the needed type and value coercion, the target continues
40030 the latest continue or step action.
40031
40032 @node The F Request Packet
40033 @subsection The @code{F} Request Packet
40034 @cindex file-i/o request packet
40035 @cindex @code{F} request packet
40036
40037 The @code{F} request packet has the following format:
40038
40039 @table @samp
40040 @item F@var{call-id},@var{parameter@dots{}}
40041
40042 @var{call-id} is the identifier to indicate the host system call to be called.
40043 This is just the name of the function.
40044
40045 @var{parameter@dots{}} are the parameters to the system call.
40046 Parameters are hexadecimal integer values, either the actual values in case
40047 of scalar datatypes, pointers to target buffer space in case of compound
40048 datatypes and unspecified memory areas, or pointer/length pairs in case
40049 of string parameters. These are appended to the @var{call-id} as a
40050 comma-delimited list. All values are transmitted in ASCII
40051 string representation, pointer/length pairs separated by a slash.
40052
40053 @end table
40054
40055
40056
40057 @node The F Reply Packet
40058 @subsection The @code{F} Reply Packet
40059 @cindex file-i/o reply packet
40060 @cindex @code{F} reply packet
40061
40062 The @code{F} reply packet has the following format:
40063
40064 @table @samp
40065
40066 @item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
40067
40068 @var{retcode} is the return code of the system call as hexadecimal value.
40069
40070 @var{errno} is the @code{errno} set by the call, in protocol-specific
40071 representation.
40072 This parameter can be omitted if the call was successful.
40073
40074 @var{Ctrl-C flag} is only sent if the user requested a break. In this
40075 case, @var{errno} must be sent as well, even if the call was successful.
40076 The @var{Ctrl-C flag} itself consists of the character @samp{C}:
40077
40078 @smallexample
40079 F0,0,C
40080 @end smallexample
40081
40082 @noindent
40083 or, if the call was interrupted before the host call has been performed:
40084
40085 @smallexample
40086 F-1,4,C
40087 @end smallexample
40088
40089 @noindent
40090 assuming 4 is the protocol-specific representation of @code{EINTR}.
40091
40092 @end table
40093
40094
40095 @node The Ctrl-C Message
40096 @subsection The @samp{Ctrl-C} Message
40097 @cindex ctrl-c message, in file-i/o protocol
40098
40099 If the @samp{Ctrl-C} flag is set in the @value{GDBN}
40100 reply packet (@pxref{The F Reply Packet}),
40101 the target should behave as if it had
40102 gotten a break message. The meaning for the target is ``system call
40103 interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
40104 (as with a break message) and return to @value{GDBN} with a @code{T02}
40105 packet.
40106
40107 It's important for the target to know in which
40108 state the system call was interrupted. There are two possible cases:
40109
40110 @itemize @bullet
40111 @item
40112 The system call hasn't been performed on the host yet.
40113
40114 @item
40115 The system call on the host has been finished.
40116
40117 @end itemize
40118
40119 These two states can be distinguished by the target by the value of the
40120 returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
40121 call hasn't been performed. This is equivalent to the @code{EINTR} handling
40122 on POSIX systems. In any other case, the target may presume that the
40123 system call has been finished --- successfully or not --- and should behave
40124 as if the break message arrived right after the system call.
40125
40126 @value{GDBN} must behave reliably. If the system call has not been called
40127 yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
40128 @code{errno} in the packet. If the system call on the host has been finished
40129 before the user requests a break, the full action must be finished by
40130 @value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
40131 The @code{F} packet may only be sent when either nothing has happened
40132 or the full action has been completed.
40133
40134 @node Console I/O
40135 @subsection Console I/O
40136 @cindex console i/o as part of file-i/o
40137
40138 By default and if not explicitly closed by the target system, the file
40139 descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
40140 on the @value{GDBN} console is handled as any other file output operation
40141 (@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
40142 by @value{GDBN} so that after the target read request from file descriptor
40143 0 all following typing is buffered until either one of the following
40144 conditions is met:
40145
40146 @itemize @bullet
40147 @item
40148 The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
40149 @code{read}
40150 system call is treated as finished.
40151
40152 @item
40153 The user presses @key{RET}. This is treated as end of input with a trailing
40154 newline.
40155
40156 @item
40157 The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
40158 character (neither newline nor @samp{Ctrl-D}) is appended to the input.
40159
40160 @end itemize
40161
40162 If the user has typed more characters than fit in the buffer given to
40163 the @code{read} call, the trailing characters are buffered in @value{GDBN} until
40164 either another @code{read(0, @dots{})} is requested by the target, or debugging
40165 is stopped at the user's request.
40166
40167
40168 @node List of Supported Calls
40169 @subsection List of Supported Calls
40170 @cindex list of supported file-i/o calls
40171
40172 @menu
40173 * open::
40174 * close::
40175 * read::
40176 * write::
40177 * lseek::
40178 * rename::
40179 * unlink::
40180 * stat/fstat::
40181 * gettimeofday::
40182 * isatty::
40183 * system::
40184 @end menu
40185
40186 @node open
40187 @unnumberedsubsubsec open
40188 @cindex open, file-i/o system call
40189
40190 @table @asis
40191 @item Synopsis:
40192 @smallexample
40193 int open(const char *pathname, int flags);
40194 int open(const char *pathname, int flags, mode_t mode);
40195 @end smallexample
40196
40197 @item Request:
40198 @samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
40199
40200 @noindent
40201 @var{flags} is the bitwise @code{OR} of the following values:
40202
40203 @table @code
40204 @item O_CREAT
40205 If the file does not exist it will be created. The host
40206 rules apply as far as file ownership and time stamps
40207 are concerned.
40208
40209 @item O_EXCL
40210 When used with @code{O_CREAT}, if the file already exists it is
40211 an error and open() fails.
40212
40213 @item O_TRUNC
40214 If the file already exists and the open mode allows
40215 writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
40216 truncated to zero length.
40217
40218 @item O_APPEND
40219 The file is opened in append mode.
40220
40221 @item O_RDONLY
40222 The file is opened for reading only.
40223
40224 @item O_WRONLY
40225 The file is opened for writing only.
40226
40227 @item O_RDWR
40228 The file is opened for reading and writing.
40229 @end table
40230
40231 @noindent
40232 Other bits are silently ignored.
40233
40234
40235 @noindent
40236 @var{mode} is the bitwise @code{OR} of the following values:
40237
40238 @table @code
40239 @item S_IRUSR
40240 User has read permission.
40241
40242 @item S_IWUSR
40243 User has write permission.
40244
40245 @item S_IRGRP
40246 Group has read permission.
40247
40248 @item S_IWGRP
40249 Group has write permission.
40250
40251 @item S_IROTH
40252 Others have read permission.
40253
40254 @item S_IWOTH
40255 Others have write permission.
40256 @end table
40257
40258 @noindent
40259 Other bits are silently ignored.
40260
40261
40262 @item Return value:
40263 @code{open} returns the new file descriptor or -1 if an error
40264 occurred.
40265
40266 @item Errors:
40267
40268 @table @code
40269 @item EEXIST
40270 @var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
40271
40272 @item EISDIR
40273 @var{pathname} refers to a directory.
40274
40275 @item EACCES
40276 The requested access is not allowed.
40277
40278 @item ENAMETOOLONG
40279 @var{pathname} was too long.
40280
40281 @item ENOENT
40282 A directory component in @var{pathname} does not exist.
40283
40284 @item ENODEV
40285 @var{pathname} refers to a device, pipe, named pipe or socket.
40286
40287 @item EROFS
40288 @var{pathname} refers to a file on a read-only filesystem and
40289 write access was requested.
40290
40291 @item EFAULT
40292 @var{pathname} is an invalid pointer value.
40293
40294 @item ENOSPC
40295 No space on device to create the file.
40296
40297 @item EMFILE
40298 The process already has the maximum number of files open.
40299
40300 @item ENFILE
40301 The limit on the total number of files open on the system
40302 has been reached.
40303
40304 @item EINTR
40305 The call was interrupted by the user.
40306 @end table
40307
40308 @end table
40309
40310 @node close
40311 @unnumberedsubsubsec close
40312 @cindex close, file-i/o system call
40313
40314 @table @asis
40315 @item Synopsis:
40316 @smallexample
40317 int close(int fd);
40318 @end smallexample
40319
40320 @item Request:
40321 @samp{Fclose,@var{fd}}
40322
40323 @item Return value:
40324 @code{close} returns zero on success, or -1 if an error occurred.
40325
40326 @item Errors:
40327
40328 @table @code
40329 @item EBADF
40330 @var{fd} isn't a valid open file descriptor.
40331
40332 @item EINTR
40333 The call was interrupted by the user.
40334 @end table
40335
40336 @end table
40337
40338 @node read
40339 @unnumberedsubsubsec read
40340 @cindex read, file-i/o system call
40341
40342 @table @asis
40343 @item Synopsis:
40344 @smallexample
40345 int read(int fd, void *buf, unsigned int count);
40346 @end smallexample
40347
40348 @item Request:
40349 @samp{Fread,@var{fd},@var{bufptr},@var{count}}
40350
40351 @item Return value:
40352 On success, the number of bytes read is returned.
40353 Zero indicates end of file. If count is zero, read
40354 returns zero as well. On error, -1 is returned.
40355
40356 @item Errors:
40357
40358 @table @code
40359 @item EBADF
40360 @var{fd} is not a valid file descriptor or is not open for
40361 reading.
40362
40363 @item EFAULT
40364 @var{bufptr} is an invalid pointer value.
40365
40366 @item EINTR
40367 The call was interrupted by the user.
40368 @end table
40369
40370 @end table
40371
40372 @node write
40373 @unnumberedsubsubsec write
40374 @cindex write, file-i/o system call
40375
40376 @table @asis
40377 @item Synopsis:
40378 @smallexample
40379 int write(int fd, const void *buf, unsigned int count);
40380 @end smallexample
40381
40382 @item Request:
40383 @samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
40384
40385 @item Return value:
40386 On success, the number of bytes written are returned.
40387 Zero indicates nothing was written. On error, -1
40388 is returned.
40389
40390 @item Errors:
40391
40392 @table @code
40393 @item EBADF
40394 @var{fd} is not a valid file descriptor or is not open for
40395 writing.
40396
40397 @item EFAULT
40398 @var{bufptr} is an invalid pointer value.
40399
40400 @item EFBIG
40401 An attempt was made to write a file that exceeds the
40402 host-specific maximum file size allowed.
40403
40404 @item ENOSPC
40405 No space on device to write the data.
40406
40407 @item EINTR
40408 The call was interrupted by the user.
40409 @end table
40410
40411 @end table
40412
40413 @node lseek
40414 @unnumberedsubsubsec lseek
40415 @cindex lseek, file-i/o system call
40416
40417 @table @asis
40418 @item Synopsis:
40419 @smallexample
40420 long lseek (int fd, long offset, int flag);
40421 @end smallexample
40422
40423 @item Request:
40424 @samp{Flseek,@var{fd},@var{offset},@var{flag}}
40425
40426 @var{flag} is one of:
40427
40428 @table @code
40429 @item SEEK_SET
40430 The offset is set to @var{offset} bytes.
40431
40432 @item SEEK_CUR
40433 The offset is set to its current location plus @var{offset}
40434 bytes.
40435
40436 @item SEEK_END
40437 The offset is set to the size of the file plus @var{offset}
40438 bytes.
40439 @end table
40440
40441 @item Return value:
40442 On success, the resulting unsigned offset in bytes from
40443 the beginning of the file is returned. Otherwise, a
40444 value of -1 is returned.
40445
40446 @item Errors:
40447
40448 @table @code
40449 @item EBADF
40450 @var{fd} is not a valid open file descriptor.
40451
40452 @item ESPIPE
40453 @var{fd} is associated with the @value{GDBN} console.
40454
40455 @item EINVAL
40456 @var{flag} is not a proper value.
40457
40458 @item EINTR
40459 The call was interrupted by the user.
40460 @end table
40461
40462 @end table
40463
40464 @node rename
40465 @unnumberedsubsubsec rename
40466 @cindex rename, file-i/o system call
40467
40468 @table @asis
40469 @item Synopsis:
40470 @smallexample
40471 int rename(const char *oldpath, const char *newpath);
40472 @end smallexample
40473
40474 @item Request:
40475 @samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
40476
40477 @item Return value:
40478 On success, zero is returned. On error, -1 is returned.
40479
40480 @item Errors:
40481
40482 @table @code
40483 @item EISDIR
40484 @var{newpath} is an existing directory, but @var{oldpath} is not a
40485 directory.
40486
40487 @item EEXIST
40488 @var{newpath} is a non-empty directory.
40489
40490 @item EBUSY
40491 @var{oldpath} or @var{newpath} is a directory that is in use by some
40492 process.
40493
40494 @item EINVAL
40495 An attempt was made to make a directory a subdirectory
40496 of itself.
40497
40498 @item ENOTDIR
40499 A component used as a directory in @var{oldpath} or new
40500 path is not a directory. Or @var{oldpath} is a directory
40501 and @var{newpath} exists but is not a directory.
40502
40503 @item EFAULT
40504 @var{oldpathptr} or @var{newpathptr} are invalid pointer values.
40505
40506 @item EACCES
40507 No access to the file or the path of the file.
40508
40509 @item ENAMETOOLONG
40510
40511 @var{oldpath} or @var{newpath} was too long.
40512
40513 @item ENOENT
40514 A directory component in @var{oldpath} or @var{newpath} does not exist.
40515
40516 @item EROFS
40517 The file is on a read-only filesystem.
40518
40519 @item ENOSPC
40520 The device containing the file has no room for the new
40521 directory entry.
40522
40523 @item EINTR
40524 The call was interrupted by the user.
40525 @end table
40526
40527 @end table
40528
40529 @node unlink
40530 @unnumberedsubsubsec unlink
40531 @cindex unlink, file-i/o system call
40532
40533 @table @asis
40534 @item Synopsis:
40535 @smallexample
40536 int unlink(const char *pathname);
40537 @end smallexample
40538
40539 @item Request:
40540 @samp{Funlink,@var{pathnameptr}/@var{len}}
40541
40542 @item Return value:
40543 On success, zero is returned. On error, -1 is returned.
40544
40545 @item Errors:
40546
40547 @table @code
40548 @item EACCES
40549 No access to the file or the path of the file.
40550
40551 @item EPERM
40552 The system does not allow unlinking of directories.
40553
40554 @item EBUSY
40555 The file @var{pathname} cannot be unlinked because it's
40556 being used by another process.
40557
40558 @item EFAULT
40559 @var{pathnameptr} is an invalid pointer value.
40560
40561 @item ENAMETOOLONG
40562 @var{pathname} was too long.
40563
40564 @item ENOENT
40565 A directory component in @var{pathname} does not exist.
40566
40567 @item ENOTDIR
40568 A component of the path is not a directory.
40569
40570 @item EROFS
40571 The file is on a read-only filesystem.
40572
40573 @item EINTR
40574 The call was interrupted by the user.
40575 @end table
40576
40577 @end table
40578
40579 @node stat/fstat
40580 @unnumberedsubsubsec stat/fstat
40581 @cindex fstat, file-i/o system call
40582 @cindex stat, file-i/o system call
40583
40584 @table @asis
40585 @item Synopsis:
40586 @smallexample
40587 int stat(const char *pathname, struct stat *buf);
40588 int fstat(int fd, struct stat *buf);
40589 @end smallexample
40590
40591 @item Request:
40592 @samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
40593 @samp{Ffstat,@var{fd},@var{bufptr}}
40594
40595 @item Return value:
40596 On success, zero is returned. On error, -1 is returned.
40597
40598 @item Errors:
40599
40600 @table @code
40601 @item EBADF
40602 @var{fd} is not a valid open file.
40603
40604 @item ENOENT
40605 A directory component in @var{pathname} does not exist or the
40606 path is an empty string.
40607
40608 @item ENOTDIR
40609 A component of the path is not a directory.
40610
40611 @item EFAULT
40612 @var{pathnameptr} is an invalid pointer value.
40613
40614 @item EACCES
40615 No access to the file or the path of the file.
40616
40617 @item ENAMETOOLONG
40618 @var{pathname} was too long.
40619
40620 @item EINTR
40621 The call was interrupted by the user.
40622 @end table
40623
40624 @end table
40625
40626 @node gettimeofday
40627 @unnumberedsubsubsec gettimeofday
40628 @cindex gettimeofday, file-i/o system call
40629
40630 @table @asis
40631 @item Synopsis:
40632 @smallexample
40633 int gettimeofday(struct timeval *tv, void *tz);
40634 @end smallexample
40635
40636 @item Request:
40637 @samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
40638
40639 @item Return value:
40640 On success, 0 is returned, -1 otherwise.
40641
40642 @item Errors:
40643
40644 @table @code
40645 @item EINVAL
40646 @var{tz} is a non-NULL pointer.
40647
40648 @item EFAULT
40649 @var{tvptr} and/or @var{tzptr} is an invalid pointer value.
40650 @end table
40651
40652 @end table
40653
40654 @node isatty
40655 @unnumberedsubsubsec isatty
40656 @cindex isatty, file-i/o system call
40657
40658 @table @asis
40659 @item Synopsis:
40660 @smallexample
40661 int isatty(int fd);
40662 @end smallexample
40663
40664 @item Request:
40665 @samp{Fisatty,@var{fd}}
40666
40667 @item Return value:
40668 Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
40669
40670 @item Errors:
40671
40672 @table @code
40673 @item EINTR
40674 The call was interrupted by the user.
40675 @end table
40676
40677 @end table
40678
40679 Note that the @code{isatty} call is treated as a special case: it returns
40680 1 to the target if the file descriptor is attached
40681 to the @value{GDBN} console, 0 otherwise. Implementing through system calls
40682 would require implementing @code{ioctl} and would be more complex than
40683 needed.
40684
40685
40686 @node system
40687 @unnumberedsubsubsec system
40688 @cindex system, file-i/o system call
40689
40690 @table @asis
40691 @item Synopsis:
40692 @smallexample
40693 int system(const char *command);
40694 @end smallexample
40695
40696 @item Request:
40697 @samp{Fsystem,@var{commandptr}/@var{len}}
40698
40699 @item Return value:
40700 If @var{len} is zero, the return value indicates whether a shell is
40701 available. A zero return value indicates a shell is not available.
40702 For non-zero @var{len}, the value returned is -1 on error and the
40703 return status of the command otherwise. Only the exit status of the
40704 command is returned, which is extracted from the host's @code{system}
40705 return value by calling @code{WEXITSTATUS(retval)}. In case
40706 @file{/bin/sh} could not be executed, 127 is returned.
40707
40708 @item Errors:
40709
40710 @table @code
40711 @item EINTR
40712 The call was interrupted by the user.
40713 @end table
40714
40715 @end table
40716
40717 @value{GDBN} takes over the full task of calling the necessary host calls
40718 to perform the @code{system} call. The return value of @code{system} on
40719 the host is simplified before it's returned
40720 to the target. Any termination signal information from the child process
40721 is discarded, and the return value consists
40722 entirely of the exit status of the called command.
40723
40724 Due to security concerns, the @code{system} call is by default refused
40725 by @value{GDBN}. The user has to allow this call explicitly with the
40726 @code{set remote system-call-allowed 1} command.
40727
40728 @table @code
40729 @item set remote system-call-allowed
40730 @kindex set remote system-call-allowed
40731 Control whether to allow the @code{system} calls in the File I/O
40732 protocol for the remote target. The default is zero (disabled).
40733
40734 @item show remote system-call-allowed
40735 @kindex show remote system-call-allowed
40736 Show whether the @code{system} calls are allowed in the File I/O
40737 protocol.
40738 @end table
40739
40740 @node Protocol-specific Representation of Datatypes
40741 @subsection Protocol-specific Representation of Datatypes
40742 @cindex protocol-specific representation of datatypes, in file-i/o protocol
40743
40744 @menu
40745 * Integral Datatypes::
40746 * Pointer Values::
40747 * Memory Transfer::
40748 * struct stat::
40749 * struct timeval::
40750 @end menu
40751
40752 @node Integral Datatypes
40753 @unnumberedsubsubsec Integral Datatypes
40754 @cindex integral datatypes, in file-i/o protocol
40755
40756 The integral datatypes used in the system calls are @code{int},
40757 @code{unsigned int}, @code{long}, @code{unsigned long},
40758 @code{mode_t}, and @code{time_t}.
40759
40760 @code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
40761 implemented as 32 bit values in this protocol.
40762
40763 @code{long} and @code{unsigned long} are implemented as 64 bit types.
40764
40765 @xref{Limits}, for corresponding MIN and MAX values (similar to those
40766 in @file{limits.h}) to allow range checking on host and target.
40767
40768 @code{time_t} datatypes are defined as seconds since the Epoch.
40769
40770 All integral datatypes transferred as part of a memory read or write of a
40771 structured datatype e.g.@: a @code{struct stat} have to be given in big endian
40772 byte order.
40773
40774 @node Pointer Values
40775 @unnumberedsubsubsec Pointer Values
40776 @cindex pointer values, in file-i/o protocol
40777
40778 Pointers to target data are transmitted as they are. An exception
40779 is made for pointers to buffers for which the length isn't
40780 transmitted as part of the function call, namely strings. Strings
40781 are transmitted as a pointer/length pair, both as hex values, e.g.@:
40782
40783 @smallexample
40784 @code{1aaf/12}
40785 @end smallexample
40786
40787 @noindent
40788 which is a pointer to data of length 18 bytes at position 0x1aaf.
40789 The length is defined as the full string length in bytes, including
40790 the trailing null byte. For example, the string @code{"hello world"}
40791 at address 0x123456 is transmitted as
40792
40793 @smallexample
40794 @code{123456/d}
40795 @end smallexample
40796
40797 @node Memory Transfer
40798 @unnumberedsubsubsec Memory Transfer
40799 @cindex memory transfer, in file-i/o protocol
40800
40801 Structured data which is transferred using a memory read or write (for
40802 example, a @code{struct stat}) is expected to be in a protocol-specific format
40803 with all scalar multibyte datatypes being big endian. Translation to
40804 this representation needs to be done both by the target before the @code{F}
40805 packet is sent, and by @value{GDBN} before
40806 it transfers memory to the target. Transferred pointers to structured
40807 data should point to the already-coerced data at any time.
40808
40809
40810 @node struct stat
40811 @unnumberedsubsubsec struct stat
40812 @cindex struct stat, in file-i/o protocol
40813
40814 The buffer of type @code{struct stat} used by the target and @value{GDBN}
40815 is defined as follows:
40816
40817 @smallexample
40818 struct stat @{
40819 unsigned int st_dev; /* device */
40820 unsigned int st_ino; /* inode */
40821 mode_t st_mode; /* protection */
40822 unsigned int st_nlink; /* number of hard links */
40823 unsigned int st_uid; /* user ID of owner */
40824 unsigned int st_gid; /* group ID of owner */
40825 unsigned int st_rdev; /* device type (if inode device) */
40826 unsigned long st_size; /* total size, in bytes */
40827 unsigned long st_blksize; /* blocksize for filesystem I/O */
40828 unsigned long st_blocks; /* number of blocks allocated */
40829 time_t st_atime; /* time of last access */
40830 time_t st_mtime; /* time of last modification */
40831 time_t st_ctime; /* time of last change */
40832 @};
40833 @end smallexample
40834
40835 The integral datatypes conform to the definitions given in the
40836 appropriate section (see @ref{Integral Datatypes}, for details) so this
40837 structure is of size 64 bytes.
40838
40839 The values of several fields have a restricted meaning and/or
40840 range of values.
40841
40842 @table @code
40843
40844 @item st_dev
40845 A value of 0 represents a file, 1 the console.
40846
40847 @item st_ino
40848 No valid meaning for the target. Transmitted unchanged.
40849
40850 @item st_mode
40851 Valid mode bits are described in @ref{Constants}. Any other
40852 bits have currently no meaning for the target.
40853
40854 @item st_uid
40855 @itemx st_gid
40856 @itemx st_rdev
40857 No valid meaning for the target. Transmitted unchanged.
40858
40859 @item st_atime
40860 @itemx st_mtime
40861 @itemx st_ctime
40862 These values have a host and file system dependent
40863 accuracy. Especially on Windows hosts, the file system may not
40864 support exact timing values.
40865 @end table
40866
40867 The target gets a @code{struct stat} of the above representation and is
40868 responsible for coercing it to the target representation before
40869 continuing.
40870
40871 Note that due to size differences between the host, target, and protocol
40872 representations of @code{struct stat} members, these members could eventually
40873 get truncated on the target.
40874
40875 @node struct timeval
40876 @unnumberedsubsubsec struct timeval
40877 @cindex struct timeval, in file-i/o protocol
40878
40879 The buffer of type @code{struct timeval} used by the File-I/O protocol
40880 is defined as follows:
40881
40882 @smallexample
40883 struct timeval @{
40884 time_t tv_sec; /* second */
40885 long tv_usec; /* microsecond */
40886 @};
40887 @end smallexample
40888
40889 The integral datatypes conform to the definitions given in the
40890 appropriate section (see @ref{Integral Datatypes}, for details) so this
40891 structure is of size 8 bytes.
40892
40893 @node Constants
40894 @subsection Constants
40895 @cindex constants, in file-i/o protocol
40896
40897 The following values are used for the constants inside of the
40898 protocol. @value{GDBN} and target are responsible for translating these
40899 values before and after the call as needed.
40900
40901 @menu
40902 * Open Flags::
40903 * mode_t Values::
40904 * Errno Values::
40905 * Lseek Flags::
40906 * Limits::
40907 @end menu
40908
40909 @node Open Flags
40910 @unnumberedsubsubsec Open Flags
40911 @cindex open flags, in file-i/o protocol
40912
40913 All values are given in hexadecimal representation.
40914
40915 @smallexample
40916 O_RDONLY 0x0
40917 O_WRONLY 0x1
40918 O_RDWR 0x2
40919 O_APPEND 0x8
40920 O_CREAT 0x200
40921 O_TRUNC 0x400
40922 O_EXCL 0x800
40923 @end smallexample
40924
40925 @node mode_t Values
40926 @unnumberedsubsubsec mode_t Values
40927 @cindex mode_t values, in file-i/o protocol
40928
40929 All values are given in octal representation.
40930
40931 @smallexample
40932 S_IFREG 0100000
40933 S_IFDIR 040000
40934 S_IRUSR 0400
40935 S_IWUSR 0200
40936 S_IXUSR 0100
40937 S_IRGRP 040
40938 S_IWGRP 020
40939 S_IXGRP 010
40940 S_IROTH 04
40941 S_IWOTH 02
40942 S_IXOTH 01
40943 @end smallexample
40944
40945 @node Errno Values
40946 @unnumberedsubsubsec Errno Values
40947 @cindex errno values, in file-i/o protocol
40948
40949 All values are given in decimal representation.
40950
40951 @smallexample
40952 EPERM 1
40953 ENOENT 2
40954 EINTR 4
40955 EBADF 9
40956 EACCES 13
40957 EFAULT 14
40958 EBUSY 16
40959 EEXIST 17
40960 ENODEV 19
40961 ENOTDIR 20
40962 EISDIR 21
40963 EINVAL 22
40964 ENFILE 23
40965 EMFILE 24
40966 EFBIG 27
40967 ENOSPC 28
40968 ESPIPE 29
40969 EROFS 30
40970 ENAMETOOLONG 91
40971 EUNKNOWN 9999
40972 @end smallexample
40973
40974 @code{EUNKNOWN} is used as a fallback error value if a host system returns
40975 any error value not in the list of supported error numbers.
40976
40977 @node Lseek Flags
40978 @unnumberedsubsubsec Lseek Flags
40979 @cindex lseek flags, in file-i/o protocol
40980
40981 @smallexample
40982 SEEK_SET 0
40983 SEEK_CUR 1
40984 SEEK_END 2
40985 @end smallexample
40986
40987 @node Limits
40988 @unnumberedsubsubsec Limits
40989 @cindex limits, in file-i/o protocol
40990
40991 All values are given in decimal representation.
40992
40993 @smallexample
40994 INT_MIN -2147483648
40995 INT_MAX 2147483647
40996 UINT_MAX 4294967295
40997 LONG_MIN -9223372036854775808
40998 LONG_MAX 9223372036854775807
40999 ULONG_MAX 18446744073709551615
41000 @end smallexample
41001
41002 @node File-I/O Examples
41003 @subsection File-I/O Examples
41004 @cindex file-i/o examples
41005
41006 Example sequence of a write call, file descriptor 3, buffer is at target
41007 address 0x1234, 6 bytes should be written:
41008
41009 @smallexample
41010 <- @code{Fwrite,3,1234,6}
41011 @emph{request memory read from target}
41012 -> @code{m1234,6}
41013 <- XXXXXX
41014 @emph{return "6 bytes written"}
41015 -> @code{F6}
41016 @end smallexample
41017
41018 Example sequence of a read call, file descriptor 3, buffer is at target
41019 address 0x1234, 6 bytes should be read:
41020
41021 @smallexample
41022 <- @code{Fread,3,1234,6}
41023 @emph{request memory write to target}
41024 -> @code{X1234,6:XXXXXX}
41025 @emph{return "6 bytes read"}
41026 -> @code{F6}
41027 @end smallexample
41028
41029 Example sequence of a read call, call fails on the host due to invalid
41030 file descriptor (@code{EBADF}):
41031
41032 @smallexample
41033 <- @code{Fread,3,1234,6}
41034 -> @code{F-1,9}
41035 @end smallexample
41036
41037 Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
41038 host is called:
41039
41040 @smallexample
41041 <- @code{Fread,3,1234,6}
41042 -> @code{F-1,4,C}
41043 <- @code{T02}
41044 @end smallexample
41045
41046 Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
41047 host is called:
41048
41049 @smallexample
41050 <- @code{Fread,3,1234,6}
41051 -> @code{X1234,6:XXXXXX}
41052 <- @code{T02}
41053 @end smallexample
41054
41055 @node Library List Format
41056 @section Library List Format
41057 @cindex library list format, remote protocol
41058
41059 On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
41060 same process as your application to manage libraries. In this case,
41061 @value{GDBN} can use the loader's symbol table and normal memory
41062 operations to maintain a list of shared libraries. On other
41063 platforms, the operating system manages loaded libraries.
41064 @value{GDBN} can not retrieve the list of currently loaded libraries
41065 through memory operations, so it uses the @samp{qXfer:libraries:read}
41066 packet (@pxref{qXfer library list read}) instead. The remote stub
41067 queries the target's operating system and reports which libraries
41068 are loaded.
41069
41070 The @samp{qXfer:libraries:read} packet returns an XML document which
41071 lists loaded libraries and their offsets. Each library has an
41072 associated name and one or more segment or section base addresses,
41073 which report where the library was loaded in memory.
41074
41075 For the common case of libraries that are fully linked binaries, the
41076 library should have a list of segments. If the target supports
41077 dynamic linking of a relocatable object file, its library XML element
41078 should instead include a list of allocated sections. The segment or
41079 section bases are start addresses, not relocation offsets; they do not
41080 depend on the library's link-time base addresses.
41081
41082 @value{GDBN} must be linked with the Expat library to support XML
41083 library lists. @xref{Expat}.
41084
41085 A simple memory map, with one loaded library relocated by a single
41086 offset, looks like this:
41087
41088 @smallexample
41089 <library-list>
41090 <library name="/lib/libc.so.6">
41091 <segment address="0x10000000"/>
41092 </library>
41093 </library-list>
41094 @end smallexample
41095
41096 Another simple memory map, with one loaded library with three
41097 allocated sections (.text, .data, .bss), looks like this:
41098
41099 @smallexample
41100 <library-list>
41101 <library name="sharedlib.o">
41102 <section address="0x10000000"/>
41103 <section address="0x20000000"/>
41104 <section address="0x30000000"/>
41105 </library>
41106 </library-list>
41107 @end smallexample
41108
41109 The format of a library list is described by this DTD:
41110
41111 @smallexample
41112 <!-- library-list: Root element with versioning -->
41113 <!ELEMENT library-list (library)*>
41114 <!ATTLIST library-list version CDATA #FIXED "1.0">
41115 <!ELEMENT library (segment*, section*)>
41116 <!ATTLIST library name CDATA #REQUIRED>
41117 <!ELEMENT segment EMPTY>
41118 <!ATTLIST segment address CDATA #REQUIRED>
41119 <!ELEMENT section EMPTY>
41120 <!ATTLIST section address CDATA #REQUIRED>
41121 @end smallexample
41122
41123 In addition, segments and section descriptors cannot be mixed within a
41124 single library element, and you must supply at least one segment or
41125 section for each library.
41126
41127 @node Library List Format for SVR4 Targets
41128 @section Library List Format for SVR4 Targets
41129 @cindex library list format, remote protocol
41130
41131 On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader
41132 (e.g.@: @file{ld.so}) and normal memory operations to maintain a list of
41133 shared libraries. Still a special library list provided by this packet is
41134 more efficient for the @value{GDBN} remote protocol.
41135
41136 The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists
41137 loaded libraries and their SVR4 linker parameters. For each library on SVR4
41138 target, the following parameters are reported:
41139
41140 @itemize @minus
41141 @item
41142 @code{name}, the absolute file name from the @code{l_name} field of
41143 @code{struct link_map}.
41144 @item
41145 @code{lm} with address of @code{struct link_map} used for TLS
41146 (Thread Local Storage) access.
41147 @item
41148 @code{l_addr}, the displacement as read from the field @code{l_addr} of
41149 @code{struct link_map}. For prelinked libraries this is not an absolute
41150 memory address. It is a displacement of absolute memory address against
41151 address the file was prelinked to during the library load.
41152 @item
41153 @code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment
41154 @end itemize
41155
41156 Additionally the single @code{main-lm} attribute specifies address of
41157 @code{struct link_map} used for the main executable. This parameter is used
41158 for TLS access and its presence is optional.
41159
41160 @value{GDBN} must be linked with the Expat library to support XML
41161 SVR4 library lists. @xref{Expat}.
41162
41163 A simple memory map, with two loaded libraries (which do not use prelink),
41164 looks like this:
41165
41166 @smallexample
41167 <library-list-svr4 version="1.0" main-lm="0xe4f8f8">
41168 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
41169 l_ld="0xe4eefc"/>
41170 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
41171 l_ld="0x152350"/>
41172 </library-list-svr>
41173 @end smallexample
41174
41175 The format of an SVR4 library list is described by this DTD:
41176
41177 @smallexample
41178 <!-- library-list-svr4: Root element with versioning -->
41179 <!ELEMENT library-list-svr4 (library)*>
41180 <!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
41181 <!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
41182 <!ELEMENT library EMPTY>
41183 <!ATTLIST library name CDATA #REQUIRED>
41184 <!ATTLIST library lm CDATA #REQUIRED>
41185 <!ATTLIST library l_addr CDATA #REQUIRED>
41186 <!ATTLIST library l_ld CDATA #REQUIRED>
41187 @end smallexample
41188
41189 @node Memory Map Format
41190 @section Memory Map Format
41191 @cindex memory map format
41192
41193 To be able to write into flash memory, @value{GDBN} needs to obtain a
41194 memory map from the target. This section describes the format of the
41195 memory map.
41196
41197 The memory map is obtained using the @samp{qXfer:memory-map:read}
41198 (@pxref{qXfer memory map read}) packet and is an XML document that
41199 lists memory regions.
41200
41201 @value{GDBN} must be linked with the Expat library to support XML
41202 memory maps. @xref{Expat}.
41203
41204 The top-level structure of the document is shown below:
41205
41206 @smallexample
41207 <?xml version="1.0"?>
41208 <!DOCTYPE memory-map
41209 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
41210 "http://sourceware.org/gdb/gdb-memory-map.dtd">
41211 <memory-map>
41212 region...
41213 </memory-map>
41214 @end smallexample
41215
41216 Each region can be either:
41217
41218 @itemize
41219
41220 @item
41221 A region of RAM starting at @var{addr} and extending for @var{length}
41222 bytes from there:
41223
41224 @smallexample
41225 <memory type="ram" start="@var{addr}" length="@var{length}"/>
41226 @end smallexample
41227
41228
41229 @item
41230 A region of read-only memory:
41231
41232 @smallexample
41233 <memory type="rom" start="@var{addr}" length="@var{length}"/>
41234 @end smallexample
41235
41236
41237 @item
41238 A region of flash memory, with erasure blocks @var{blocksize}
41239 bytes in length:
41240
41241 @smallexample
41242 <memory type="flash" start="@var{addr}" length="@var{length}">
41243 <property name="blocksize">@var{blocksize}</property>
41244 </memory>
41245 @end smallexample
41246
41247 @end itemize
41248
41249 Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
41250 by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
41251 packets to write to addresses in such ranges.
41252
41253 The formal DTD for memory map format is given below:
41254
41255 @smallexample
41256 <!-- ................................................... -->
41257 <!-- Memory Map XML DTD ................................ -->
41258 <!-- File: memory-map.dtd .............................. -->
41259 <!-- .................................... .............. -->
41260 <!-- memory-map.dtd -->
41261 <!-- memory-map: Root element with versioning -->
41262 <!ELEMENT memory-map (memory)*>
41263 <!ATTLIST memory-map version CDATA #FIXED "1.0.0">
41264 <!ELEMENT memory (property)*>
41265 <!-- memory: Specifies a memory region,
41266 and its type, or device. -->
41267 <!ATTLIST memory type (ram|rom|flash) #REQUIRED
41268 start CDATA #REQUIRED
41269 length CDATA #REQUIRED>
41270 <!-- property: Generic attribute tag -->
41271 <!ELEMENT property (#PCDATA | property)*>
41272 <!ATTLIST property name (blocksize) #REQUIRED>
41273 @end smallexample
41274
41275 @node Thread List Format
41276 @section Thread List Format
41277 @cindex thread list format
41278
41279 To efficiently update the list of threads and their attributes,
41280 @value{GDBN} issues the @samp{qXfer:threads:read} packet
41281 (@pxref{qXfer threads read}) and obtains the XML document with
41282 the following structure:
41283
41284 @smallexample
41285 <?xml version="1.0"?>
41286 <threads>
41287 <thread id="id" core="0" name="name">
41288 ... description ...
41289 </thread>
41290 </threads>
41291 @end smallexample
41292
41293 Each @samp{thread} element must have the @samp{id} attribute that
41294 identifies the thread (@pxref{thread-id syntax}). The
41295 @samp{core} attribute, if present, specifies which processor core
41296 the thread was last executing on. The @samp{name} attribute, if
41297 present, specifies the human-readable name of the thread. The content
41298 of the of @samp{thread} element is interpreted as human-readable
41299 auxiliary information. The @samp{handle} attribute, if present,
41300 is a hex encoded representation of the thread handle.
41301
41302
41303 @node Traceframe Info Format
41304 @section Traceframe Info Format
41305 @cindex traceframe info format
41306
41307 To be able to know which objects in the inferior can be examined when
41308 inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of
41309 memory ranges, registers and trace state variables that have been
41310 collected in a traceframe.
41311
41312 This list is obtained using the @samp{qXfer:traceframe-info:read}
41313 (@pxref{qXfer traceframe info read}) packet and is an XML document.
41314
41315 @value{GDBN} must be linked with the Expat library to support XML
41316 traceframe info discovery. @xref{Expat}.
41317
41318 The top-level structure of the document is shown below:
41319
41320 @smallexample
41321 <?xml version="1.0"?>
41322 <!DOCTYPE traceframe-info
41323 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
41324 "http://sourceware.org/gdb/gdb-traceframe-info.dtd">
41325 <traceframe-info>
41326 block...
41327 </traceframe-info>
41328 @end smallexample
41329
41330 Each traceframe block can be either:
41331
41332 @itemize
41333
41334 @item
41335 A region of collected memory starting at @var{addr} and extending for
41336 @var{length} bytes from there:
41337
41338 @smallexample
41339 <memory start="@var{addr}" length="@var{length}"/>
41340 @end smallexample
41341
41342 @item
41343 A block indicating trace state variable numbered @var{number} has been
41344 collected:
41345
41346 @smallexample
41347 <tvar id="@var{number}"/>
41348 @end smallexample
41349
41350 @end itemize
41351
41352 The formal DTD for the traceframe info format is given below:
41353
41354 @smallexample
41355 <!ELEMENT traceframe-info (memory | tvar)* >
41356 <!ATTLIST traceframe-info version CDATA #FIXED "1.0">
41357
41358 <!ELEMENT memory EMPTY>
41359 <!ATTLIST memory start CDATA #REQUIRED
41360 length CDATA #REQUIRED>
41361 <!ELEMENT tvar>
41362 <!ATTLIST tvar id CDATA #REQUIRED>
41363 @end smallexample
41364
41365 @node Branch Trace Format
41366 @section Branch Trace Format
41367 @cindex branch trace format
41368
41369 In order to display the branch trace of an inferior thread,
41370 @value{GDBN} needs to obtain the list of branches. This list is
41371 represented as list of sequential code blocks that are connected via
41372 branches. The code in each block has been executed sequentially.
41373
41374 This list is obtained using the @samp{qXfer:btrace:read}
41375 (@pxref{qXfer btrace read}) packet and is an XML document.
41376
41377 @value{GDBN} must be linked with the Expat library to support XML
41378 traceframe info discovery. @xref{Expat}.
41379
41380 The top-level structure of the document is shown below:
41381
41382 @smallexample
41383 <?xml version="1.0"?>
41384 <!DOCTYPE btrace
41385 PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN"
41386 "http://sourceware.org/gdb/gdb-btrace.dtd">
41387 <btrace>
41388 block...
41389 </btrace>
41390 @end smallexample
41391
41392 @itemize
41393
41394 @item
41395 A block of sequentially executed instructions starting at @var{begin}
41396 and ending at @var{end}:
41397
41398 @smallexample
41399 <block begin="@var{begin}" end="@var{end}"/>
41400 @end smallexample
41401
41402 @end itemize
41403
41404 The formal DTD for the branch trace format is given below:
41405
41406 @smallexample
41407 <!ELEMENT btrace (block* | pt) >
41408 <!ATTLIST btrace version CDATA #FIXED "1.0">
41409
41410 <!ELEMENT block EMPTY>
41411 <!ATTLIST block begin CDATA #REQUIRED
41412 end CDATA #REQUIRED>
41413
41414 <!ELEMENT pt (pt-config?, raw?)>
41415
41416 <!ELEMENT pt-config (cpu?)>
41417
41418 <!ELEMENT cpu EMPTY>
41419 <!ATTLIST cpu vendor CDATA #REQUIRED
41420 family CDATA #REQUIRED
41421 model CDATA #REQUIRED
41422 stepping CDATA #REQUIRED>
41423
41424 <!ELEMENT raw (#PCDATA)>
41425 @end smallexample
41426
41427 @node Branch Trace Configuration Format
41428 @section Branch Trace Configuration Format
41429 @cindex branch trace configuration format
41430
41431 For each inferior thread, @value{GDBN} can obtain the branch trace
41432 configuration using the @samp{qXfer:btrace-conf:read}
41433 (@pxref{qXfer btrace-conf read}) packet.
41434
41435 The configuration describes the branch trace format and configuration
41436 settings for that format. The following information is described:
41437
41438 @table @code
41439 @item bts
41440 This thread uses the @dfn{Branch Trace Store} (@acronym{BTS}) format.
41441 @table @code
41442 @item size
41443 The size of the @acronym{BTS} ring buffer in bytes.
41444 @end table
41445 @item pt
41446 This thread uses the @dfn{Intel Processor Trace} (@acronym{Intel
41447 PT}) format.
41448 @table @code
41449 @item size
41450 The size of the @acronym{Intel PT} ring buffer in bytes.
41451 @end table
41452 @end table
41453
41454 @value{GDBN} must be linked with the Expat library to support XML
41455 branch trace configuration discovery. @xref{Expat}.
41456
41457 The formal DTD for the branch trace configuration format is given below:
41458
41459 @smallexample
41460 <!ELEMENT btrace-conf (bts?, pt?)>
41461 <!ATTLIST btrace-conf version CDATA #FIXED "1.0">
41462
41463 <!ELEMENT bts EMPTY>
41464 <!ATTLIST bts size CDATA #IMPLIED>
41465
41466 <!ELEMENT pt EMPTY>
41467 <!ATTLIST pt size CDATA #IMPLIED>
41468 @end smallexample
41469
41470 @include agentexpr.texi
41471
41472 @node Target Descriptions
41473 @appendix Target Descriptions
41474 @cindex target descriptions
41475
41476 One of the challenges of using @value{GDBN} to debug embedded systems
41477 is that there are so many minor variants of each processor
41478 architecture in use. It is common practice for vendors to start with
41479 a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example ---
41480 and then make changes to adapt it to a particular market niche. Some
41481 architectures have hundreds of variants, available from dozens of
41482 vendors. This leads to a number of problems:
41483
41484 @itemize @bullet
41485 @item
41486 With so many different customized processors, it is difficult for
41487 the @value{GDBN} maintainers to keep up with the changes.
41488 @item
41489 Since individual variants may have short lifetimes or limited
41490 audiences, it may not be worthwhile to carry information about every
41491 variant in the @value{GDBN} source tree.
41492 @item
41493 When @value{GDBN} does support the architecture of the embedded system
41494 at hand, the task of finding the correct architecture name to give the
41495 @command{set architecture} command can be error-prone.
41496 @end itemize
41497
41498 To address these problems, the @value{GDBN} remote protocol allows a
41499 target system to not only identify itself to @value{GDBN}, but to
41500 actually describe its own features. This lets @value{GDBN} support
41501 processor variants it has never seen before --- to the extent that the
41502 descriptions are accurate, and that @value{GDBN} understands them.
41503
41504 @value{GDBN} must be linked with the Expat library to support XML
41505 target descriptions. @xref{Expat}.
41506
41507 @menu
41508 * Retrieving Descriptions:: How descriptions are fetched from a target.
41509 * Target Description Format:: The contents of a target description.
41510 * Predefined Target Types:: Standard types available for target
41511 descriptions.
41512 * Enum Target Types:: How to define enum target types.
41513 * Standard Target Features:: Features @value{GDBN} knows about.
41514 @end menu
41515
41516 @node Retrieving Descriptions
41517 @section Retrieving Descriptions
41518
41519 Target descriptions can be read from the target automatically, or
41520 specified by the user manually. The default behavior is to read the
41521 description from the target. @value{GDBN} retrieves it via the remote
41522 protocol using @samp{qXfer} requests (@pxref{General Query Packets,
41523 qXfer}). The @var{annex} in the @samp{qXfer} packet will be
41524 @samp{target.xml}. The contents of the @samp{target.xml} annex are an
41525 XML document, of the form described in @ref{Target Description
41526 Format}.
41527
41528 Alternatively, you can specify a file to read for the target description.
41529 If a file is set, the target will not be queried. The commands to
41530 specify a file are:
41531
41532 @table @code
41533 @cindex set tdesc filename
41534 @item set tdesc filename @var{path}
41535 Read the target description from @var{path}.
41536
41537 @cindex unset tdesc filename
41538 @item unset tdesc filename
41539 Do not read the XML target description from a file. @value{GDBN}
41540 will use the description supplied by the current target.
41541
41542 @cindex show tdesc filename
41543 @item show tdesc filename
41544 Show the filename to read for a target description, if any.
41545 @end table
41546
41547
41548 @node Target Description Format
41549 @section Target Description Format
41550 @cindex target descriptions, XML format
41551
41552 A target description annex is an @uref{http://www.w3.org/XML/, XML}
41553 document which complies with the Document Type Definition provided in
41554 the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
41555 means you can use generally available tools like @command{xmllint} to
41556 check that your feature descriptions are well-formed and valid.
41557 However, to help people unfamiliar with XML write descriptions for
41558 their targets, we also describe the grammar here.
41559
41560 Target descriptions can identify the architecture of the remote target
41561 and (for some architectures) provide information about custom register
41562 sets. They can also identify the OS ABI of the remote target.
41563 @value{GDBN} can use this information to autoconfigure for your
41564 target, or to warn you if you connect to an unsupported target.
41565
41566 Here is a simple target description:
41567
41568 @smallexample
41569 <target version="1.0">
41570 <architecture>i386:x86-64</architecture>
41571 </target>
41572 @end smallexample
41573
41574 @noindent
41575 This minimal description only says that the target uses
41576 the x86-64 architecture.
41577
41578 A target description has the following overall form, with [ ] marking
41579 optional elements and @dots{} marking repeatable elements. The elements
41580 are explained further below.
41581
41582 @smallexample
41583 <?xml version="1.0"?>
41584 <!DOCTYPE target SYSTEM "gdb-target.dtd">
41585 <target version="1.0">
41586 @r{[}@var{architecture}@r{]}
41587 @r{[}@var{osabi}@r{]}
41588 @r{[}@var{compatible}@r{]}
41589 @r{[}@var{feature}@dots{}@r{]}
41590 </target>
41591 @end smallexample
41592
41593 @noindent
41594 The description is generally insensitive to whitespace and line
41595 breaks, under the usual common-sense rules. The XML version
41596 declaration and document type declaration can generally be omitted
41597 (@value{GDBN} does not require them), but specifying them may be
41598 useful for XML validation tools. The @samp{version} attribute for
41599 @samp{<target>} may also be omitted, but we recommend
41600 including it; if future versions of @value{GDBN} use an incompatible
41601 revision of @file{gdb-target.dtd}, they will detect and report
41602 the version mismatch.
41603
41604 @subsection Inclusion
41605 @cindex target descriptions, inclusion
41606 @cindex XInclude
41607 @ifnotinfo
41608 @cindex <xi:include>
41609 @end ifnotinfo
41610
41611 It can sometimes be valuable to split a target description up into
41612 several different annexes, either for organizational purposes, or to
41613 share files between different possible target descriptions. You can
41614 divide a description into multiple files by replacing any element of
41615 the target description with an inclusion directive of the form:
41616
41617 @smallexample
41618 <xi:include href="@var{document}"/>
41619 @end smallexample
41620
41621 @noindent
41622 When @value{GDBN} encounters an element of this form, it will retrieve
41623 the named XML @var{document}, and replace the inclusion directive with
41624 the contents of that document. If the current description was read
41625 using @samp{qXfer}, then so will be the included document;
41626 @var{document} will be interpreted as the name of an annex. If the
41627 current description was read from a file, @value{GDBN} will look for
41628 @var{document} as a file in the same directory where it found the
41629 original description.
41630
41631 @subsection Architecture
41632 @cindex <architecture>
41633
41634 An @samp{<architecture>} element has this form:
41635
41636 @smallexample
41637 <architecture>@var{arch}</architecture>
41638 @end smallexample
41639
41640 @var{arch} is one of the architectures from the set accepted by
41641 @code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
41642
41643 @subsection OS ABI
41644 @cindex @code{<osabi>}
41645
41646 This optional field was introduced in @value{GDBN} version 7.0.
41647 Previous versions of @value{GDBN} ignore it.
41648
41649 An @samp{<osabi>} element has this form:
41650
41651 @smallexample
41652 <osabi>@var{abi-name}</osabi>
41653 @end smallexample
41654
41655 @var{abi-name} is an OS ABI name from the same selection accepted by
41656 @w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
41657
41658 @subsection Compatible Architecture
41659 @cindex @code{<compatible>}
41660
41661 This optional field was introduced in @value{GDBN} version 7.0.
41662 Previous versions of @value{GDBN} ignore it.
41663
41664 A @samp{<compatible>} element has this form:
41665
41666 @smallexample
41667 <compatible>@var{arch}</compatible>
41668 @end smallexample
41669
41670 @var{arch} is one of the architectures from the set accepted by
41671 @code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
41672
41673 A @samp{<compatible>} element is used to specify that the target
41674 is able to run binaries in some other than the main target architecture
41675 given by the @samp{<architecture>} element. For example, on the
41676 Cell Broadband Engine, the main architecture is @code{powerpc:common}
41677 or @code{powerpc:common64}, but the system is able to run binaries
41678 in the @code{spu} architecture as well. The way to describe this
41679 capability with @samp{<compatible>} is as follows:
41680
41681 @smallexample
41682 <architecture>powerpc:common</architecture>
41683 <compatible>spu</compatible>
41684 @end smallexample
41685
41686 @subsection Features
41687 @cindex <feature>
41688
41689 Each @samp{<feature>} describes some logical portion of the target
41690 system. Features are currently used to describe available CPU
41691 registers and the types of their contents. A @samp{<feature>} element
41692 has this form:
41693
41694 @smallexample
41695 <feature name="@var{name}">
41696 @r{[}@var{type}@dots{}@r{]}
41697 @var{reg}@dots{}
41698 </feature>
41699 @end smallexample
41700
41701 @noindent
41702 Each feature's name should be unique within the description. The name
41703 of a feature does not matter unless @value{GDBN} has some special
41704 knowledge of the contents of that feature; if it does, the feature
41705 should have its standard name. @xref{Standard Target Features}.
41706
41707 @subsection Types
41708
41709 Any register's value is a collection of bits which @value{GDBN} must
41710 interpret. The default interpretation is a two's complement integer,
41711 but other types can be requested by name in the register description.
41712 Some predefined types are provided by @value{GDBN} (@pxref{Predefined
41713 Target Types}), and the description can define additional composite
41714 and enum types.
41715
41716 Each type element must have an @samp{id} attribute, which gives
41717 a unique (within the containing @samp{<feature>}) name to the type.
41718 Types must be defined before they are used.
41719
41720 @cindex <vector>
41721 Some targets offer vector registers, which can be treated as arrays
41722 of scalar elements. These types are written as @samp{<vector>} elements,
41723 specifying the array element type, @var{type}, and the number of elements,
41724 @var{count}:
41725
41726 @smallexample
41727 <vector id="@var{id}" type="@var{type}" count="@var{count}"/>
41728 @end smallexample
41729
41730 @cindex <union>
41731 If a register's value is usefully viewed in multiple ways, define it
41732 with a union type containing the useful representations. The
41733 @samp{<union>} element contains one or more @samp{<field>} elements,
41734 each of which has a @var{name} and a @var{type}:
41735
41736 @smallexample
41737 <union id="@var{id}">
41738 <field name="@var{name}" type="@var{type}"/>
41739 @dots{}
41740 </union>
41741 @end smallexample
41742
41743 @cindex <struct>
41744 @cindex <flags>
41745 If a register's value is composed from several separate values, define
41746 it with either a structure type or a flags type.
41747 A flags type may only contain bitfields.
41748 A structure type may either contain only bitfields or contain no bitfields.
41749 If the value contains only bitfields, its total size in bytes must be
41750 specified.
41751
41752 Non-bitfield values have a @var{name} and @var{type}.
41753
41754 @smallexample
41755 <struct id="@var{id}">
41756 <field name="@var{name}" type="@var{type}"/>
41757 @dots{}
41758 </struct>
41759 @end smallexample
41760
41761 Both @var{name} and @var{type} values are required.
41762 No implicit padding is added.
41763
41764 Bitfield values have a @var{name}, @var{start}, @var{end} and @var{type}.
41765
41766 @smallexample
41767 <struct id="@var{id}" size="@var{size}">
41768 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/>
41769 @dots{}
41770 </struct>
41771 @end smallexample
41772
41773 @smallexample
41774 <flags id="@var{id}" size="@var{size}">
41775 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/>
41776 @dots{}
41777 </flags>
41778 @end smallexample
41779
41780 The @var{name} value is required.
41781 Bitfield values may be named with the empty string, @samp{""},
41782 in which case the field is ``filler'' and its value is not printed.
41783 Not all bits need to be specified, so ``filler'' fields are optional.
41784
41785 The @var{start} and @var{end} values are required, and @var{type}
41786 is optional.
41787 The field's @var{start} must be less than or equal to its @var{end},
41788 and zero represents the least significant bit.
41789
41790 The default value of @var{type} is @code{bool} for single bit fields,
41791 and an unsigned integer otherwise.
41792
41793 Which to choose? Structures or flags?
41794
41795 Registers defined with @samp{flags} have these advantages over
41796 defining them with @samp{struct}:
41797
41798 @itemize @bullet
41799 @item
41800 Arithmetic may be performed on them as if they were integers.
41801 @item
41802 They are printed in a more readable fashion.
41803 @end itemize
41804
41805 Registers defined with @samp{struct} have one advantage over
41806 defining them with @samp{flags}:
41807
41808 @itemize @bullet
41809 @item
41810 One can fetch individual fields like in @samp{C}.
41811
41812 @smallexample
41813 (gdb) print $my_struct_reg.field3
41814 $1 = 42
41815 @end smallexample
41816
41817 @end itemize
41818
41819 @subsection Registers
41820 @cindex <reg>
41821
41822 Each register is represented as an element with this form:
41823
41824 @smallexample
41825 <reg name="@var{name}"
41826 bitsize="@var{size}"
41827 @r{[}regnum="@var{num}"@r{]}
41828 @r{[}save-restore="@var{save-restore}"@r{]}
41829 @r{[}type="@var{type}"@r{]}
41830 @r{[}group="@var{group}"@r{]}/>
41831 @end smallexample
41832
41833 @noindent
41834 The components are as follows:
41835
41836 @table @var
41837
41838 @item name
41839 The register's name; it must be unique within the target description.
41840
41841 @item bitsize
41842 The register's size, in bits.
41843
41844 @item regnum
41845 The register's number. If omitted, a register's number is one greater
41846 than that of the previous register (either in the current feature or in
41847 a preceding feature); the first register in the target description
41848 defaults to zero. This register number is used to read or write
41849 the register; e.g.@: it is used in the remote @code{p} and @code{P}
41850 packets, and registers appear in the @code{g} and @code{G} packets
41851 in order of increasing register number.
41852
41853 @item save-restore
41854 Whether the register should be preserved across inferior function
41855 calls; this must be either @code{yes} or @code{no}. The default is
41856 @code{yes}, which is appropriate for most registers except for
41857 some system control registers; this is not related to the target's
41858 ABI.
41859
41860 @item type
41861 The type of the register. It may be a predefined type, a type
41862 defined in the current feature, or one of the special types @code{int}
41863 and @code{float}. @code{int} is an integer type of the correct size
41864 for @var{bitsize}, and @code{float} is a floating point type (in the
41865 architecture's normal floating point format) of the correct size for
41866 @var{bitsize}. The default is @code{int}.
41867
41868 @item group
41869 The register group to which this register belongs. It can be one of the
41870 standard register groups @code{general}, @code{float}, @code{vector} or an
41871 arbitrary string. Group names should be limited to alphanumeric characters.
41872 If a group name is made up of multiple words the words may be separated by
41873 hyphens; e.g.@: @code{special-group} or @code{ultra-special-group}. If no
41874 @var{group} is specified, @value{GDBN} will not display the register in
41875 @code{info registers}.
41876
41877 @end table
41878
41879 @node Predefined Target Types
41880 @section Predefined Target Types
41881 @cindex target descriptions, predefined types
41882
41883 Type definitions in the self-description can build up composite types
41884 from basic building blocks, but can not define fundamental types. Instead,
41885 standard identifiers are provided by @value{GDBN} for the fundamental
41886 types. The currently supported types are:
41887
41888 @table @code
41889
41890 @item bool
41891 Boolean type, occupying a single bit.
41892
41893 @item int8
41894 @itemx int16
41895 @itemx int32
41896 @itemx int64
41897 @itemx int128
41898 Signed integer types holding the specified number of bits.
41899
41900 @item uint8
41901 @itemx uint16
41902 @itemx uint32
41903 @itemx uint64
41904 @itemx uint128
41905 Unsigned integer types holding the specified number of bits.
41906
41907 @item code_ptr
41908 @itemx data_ptr
41909 Pointers to unspecified code and data. The program counter and
41910 any dedicated return address register may be marked as code
41911 pointers; printing a code pointer converts it into a symbolic
41912 address. The stack pointer and any dedicated address registers
41913 may be marked as data pointers.
41914
41915 @item ieee_single
41916 Single precision IEEE floating point.
41917
41918 @item ieee_double
41919 Double precision IEEE floating point.
41920
41921 @item arm_fpa_ext
41922 The 12-byte extended precision format used by ARM FPA registers.
41923
41924 @item i387_ext
41925 The 10-byte extended precision format used by x87 registers.
41926
41927 @item i386_eflags
41928 32bit @sc{eflags} register used by x86.
41929
41930 @item i386_mxcsr
41931 32bit @sc{mxcsr} register used by x86.
41932
41933 @end table
41934
41935 @node Enum Target Types
41936 @section Enum Target Types
41937 @cindex target descriptions, enum types
41938
41939 Enum target types are useful in @samp{struct} and @samp{flags}
41940 register descriptions. @xref{Target Description Format}.
41941
41942 Enum types have a name, size and a list of name/value pairs.
41943
41944 @smallexample
41945 <enum id="@var{id}" size="@var{size}">
41946 <evalue name="@var{name}" value="@var{value}"/>
41947 @dots{}
41948 </enum>
41949 @end smallexample
41950
41951 Enums must be defined before they are used.
41952
41953 @smallexample
41954 <enum id="levels_type" size="4">
41955 <evalue name="low" value="0"/>
41956 <evalue name="high" value="1"/>
41957 </enum>
41958 <flags id="flags_type" size="4">
41959 <field name="X" start="0"/>
41960 <field name="LEVEL" start="1" end="1" type="levels_type"/>
41961 </flags>
41962 <reg name="flags" bitsize="32" type="flags_type"/>
41963 @end smallexample
41964
41965 Given that description, a value of 3 for the @samp{flags} register
41966 would be printed as:
41967
41968 @smallexample
41969 (gdb) info register flags
41970 flags 0x3 [ X LEVEL=high ]
41971 @end smallexample
41972
41973 @node Standard Target Features
41974 @section Standard Target Features
41975 @cindex target descriptions, standard features
41976
41977 A target description must contain either no registers or all the
41978 target's registers. If the description contains no registers, then
41979 @value{GDBN} will assume a default register layout, selected based on
41980 the architecture. If the description contains any registers, the
41981 default layout will not be used; the standard registers must be
41982 described in the target description, in such a way that @value{GDBN}
41983 can recognize them.
41984
41985 This is accomplished by giving specific names to feature elements
41986 which contain standard registers. @value{GDBN} will look for features
41987 with those names and verify that they contain the expected registers;
41988 if any known feature is missing required registers, or if any required
41989 feature is missing, @value{GDBN} will reject the target
41990 description. You can add additional registers to any of the
41991 standard features --- @value{GDBN} will display them just as if
41992 they were added to an unrecognized feature.
41993
41994 This section lists the known features and their expected contents.
41995 Sample XML documents for these features are included in the
41996 @value{GDBN} source tree, in the directory @file{gdb/features}.
41997
41998 Names recognized by @value{GDBN} should include the name of the
41999 company or organization which selected the name, and the overall
42000 architecture to which the feature applies; so e.g.@: the feature
42001 containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
42002
42003 The names of registers are not case sensitive for the purpose
42004 of recognizing standard features, but @value{GDBN} will only display
42005 registers using the capitalization used in the description.
42006
42007 @menu
42008 * AArch64 Features::
42009 * ARC Features::
42010 * ARM Features::
42011 * i386 Features::
42012 * MicroBlaze Features::
42013 * MIPS Features::
42014 * M68K Features::
42015 * NDS32 Features::
42016 * Nios II Features::
42017 * OpenRISC 1000 Features::
42018 * PowerPC Features::
42019 * S/390 and System z Features::
42020 * Sparc Features::
42021 * TIC6x Features::
42022 @end menu
42023
42024
42025 @node AArch64 Features
42026 @subsection AArch64 Features
42027 @cindex target descriptions, AArch64 features
42028
42029 The @samp{org.gnu.gdb.aarch64.core} feature is required for AArch64
42030 targets. It should contain registers @samp{x0} through @samp{x30},
42031 @samp{sp}, @samp{pc}, and @samp{cpsr}.
42032
42033 The @samp{org.gnu.gdb.aarch64.fpu} feature is optional. If present,
42034 it should contain registers @samp{v0} through @samp{v31}, @samp{fpsr},
42035 and @samp{fpcr}.
42036
42037 @node ARC Features
42038 @subsection ARC Features
42039 @cindex target descriptions, ARC Features
42040
42041 ARC processors are highly configurable, so even core registers and their number
42042 are not completely predetermined. In addition flags and PC registers which are
42043 important to @value{GDBN} are not ``core'' registers in ARC. It is required
42044 that one of the core registers features is present.
42045 @samp{org.gnu.gdb.arc.aux-minimal} feature is mandatory.
42046
42047 The @samp{org.gnu.gdb.arc.core.v2} feature is required for ARC EM and ARC HS
42048 targets with a normal register file. It should contain registers @samp{r0}
42049 through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink},
42050 @samp{lp_count} and @samp{pcl}. This feature may contain register @samp{ilink}
42051 and any of extension core registers @samp{r32} through @samp{r59/acch}.
42052 @samp{ilink} and extension core registers are not available to read/write, when
42053 debugging GNU/Linux applications, thus @samp{ilink} is made optional.
42054
42055 The @samp{org.gnu.gdb.arc.core-reduced.v2} feature is required for ARC EM and
42056 ARC HS targets with a reduced register file. It should contain registers
42057 @samp{r0} through @samp{r3}, @samp{r10} through @samp{r15}, @samp{gp},
42058 @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink}, @samp{lp_count} and @samp{pcl}.
42059 This feature may contain register @samp{ilink} and any of extension core
42060 registers @samp{r32} through @samp{r59/acch}.
42061
42062 The @samp{org.gnu.gdb.arc.core.arcompact} feature is required for ARCompact
42063 targets with a normal register file. It should contain registers @samp{r0}
42064 through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink},
42065 @samp{lp_count} and @samp{pcl}. This feature may contain registers
42066 @samp{ilink1}, @samp{ilink2} and any of extension core registers @samp{r32}
42067 through @samp{r59/acch}. @samp{ilink1} and @samp{ilink2} and extension core
42068 registers are not available when debugging GNU/Linux applications. The only
42069 difference with @samp{org.gnu.gdb.arc.core.v2} feature is in the names of
42070 @samp{ilink1} and @samp{ilink2} registers and that @samp{r30} is mandatory in
42071 ARC v2, but @samp{ilink2} is optional on ARCompact.
42072
42073 The @samp{org.gnu.gdb.arc.aux-minimal} feature is required for all ARC
42074 targets. It should contain registers @samp{pc} and @samp{status32}.
42075
42076 @node ARM Features
42077 @subsection ARM Features
42078 @cindex target descriptions, ARM features
42079
42080 The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile
42081 ARM targets.
42082 It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
42083 @samp{lr}, @samp{pc}, and @samp{cpsr}.
42084
42085 For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core}
42086 feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain
42087 registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc},
42088 and @samp{xpsr}.
42089
42090 The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
42091 should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
42092
42093 The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
42094 it should contain at least registers @samp{wR0} through @samp{wR15} and
42095 @samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
42096 @samp{wCSSF}, and @samp{wCASF} registers are optional.
42097
42098 The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
42099 should contain at least registers @samp{d0} through @samp{d15}. If
42100 they are present, @samp{d16} through @samp{d31} should also be included.
42101 @value{GDBN} will synthesize the single-precision registers from
42102 halves of the double-precision registers.
42103
42104 The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
42105 need to contain registers; it instructs @value{GDBN} to display the
42106 VFP double-precision registers as vectors and to synthesize the
42107 quad-precision registers from pairs of double-precision registers.
42108 If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
42109 be present and include 32 double-precision registers.
42110
42111 @node i386 Features
42112 @subsection i386 Features
42113 @cindex target descriptions, i386 features
42114
42115 The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
42116 targets. It should describe the following registers:
42117
42118 @itemize @minus
42119 @item
42120 @samp{eax} through @samp{edi} plus @samp{eip} for i386
42121 @item
42122 @samp{rax} through @samp{r15} plus @samp{rip} for amd64
42123 @item
42124 @samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
42125 @samp{fs}, @samp{gs}
42126 @item
42127 @samp{st0} through @samp{st7}
42128 @item
42129 @samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
42130 @samp{foseg}, @samp{fooff} and @samp{fop}
42131 @end itemize
42132
42133 The register sets may be different, depending on the target.
42134
42135 The @samp{org.gnu.gdb.i386.sse} feature is optional. It should
42136 describe registers:
42137
42138 @itemize @minus
42139 @item
42140 @samp{xmm0} through @samp{xmm7} for i386
42141 @item
42142 @samp{xmm0} through @samp{xmm15} for amd64
42143 @item
42144 @samp{mxcsr}
42145 @end itemize
42146
42147 The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the
42148 @samp{org.gnu.gdb.i386.sse} feature. It should
42149 describe the upper 128 bits of @sc{ymm} registers:
42150
42151 @itemize @minus
42152 @item
42153 @samp{ymm0h} through @samp{ymm7h} for i386
42154 @item
42155 @samp{ymm0h} through @samp{ymm15h} for amd64
42156 @end itemize
42157
42158 The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel
42159 Memory Protection Extension (MPX). It should describe the following registers:
42160
42161 @itemize @minus
42162 @item
42163 @samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64.
42164 @item
42165 @samp{bndcfgu} and @samp{bndstatus} for i386 and amd64.
42166 @end itemize
42167
42168 The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
42169 describe a single register, @samp{orig_eax}.
42170
42171 The @samp{org.gnu.gdb.i386.segments} feature is optional. It should
42172 describe two system registers: @samp{fs_base} and @samp{gs_base}.
42173
42174 The @samp{org.gnu.gdb.i386.avx512} feature is optional and requires the
42175 @samp{org.gnu.gdb.i386.avx} feature. It should
42176 describe additional @sc{xmm} registers:
42177
42178 @itemize @minus
42179 @item
42180 @samp{xmm16h} through @samp{xmm31h}, only valid for amd64.
42181 @end itemize
42182
42183 It should describe the upper 128 bits of additional @sc{ymm} registers:
42184
42185 @itemize @minus
42186 @item
42187 @samp{ymm16h} through @samp{ymm31h}, only valid for amd64.
42188 @end itemize
42189
42190 It should
42191 describe the upper 256 bits of @sc{zmm} registers:
42192
42193 @itemize @minus
42194 @item
42195 @samp{zmm0h} through @samp{zmm7h} for i386.
42196 @item
42197 @samp{zmm0h} through @samp{zmm15h} for amd64.
42198 @end itemize
42199
42200 It should
42201 describe the additional @sc{zmm} registers:
42202
42203 @itemize @minus
42204 @item
42205 @samp{zmm16h} through @samp{zmm31h}, only valid for amd64.
42206 @end itemize
42207
42208 The @samp{org.gnu.gdb.i386.pkeys} feature is optional. It should
42209 describe a single register, @samp{pkru}. It is a 32-bit register
42210 valid for i386 and amd64.
42211
42212 @node MicroBlaze Features
42213 @subsection MicroBlaze Features
42214 @cindex target descriptions, MicroBlaze features
42215
42216 The @samp{org.gnu.gdb.microblaze.core} feature is required for MicroBlaze
42217 targets. It should contain registers @samp{r0} through @samp{r31},
42218 @samp{rpc}, @samp{rmsr}, @samp{rear}, @samp{resr}, @samp{rfsr}, @samp{rbtr},
42219 @samp{rpvr}, @samp{rpvr1} through @samp{rpvr11}, @samp{redr}, @samp{rpid},
42220 @samp{rzpr}, @samp{rtlbx}, @samp{rtlbsx}, @samp{rtlblo}, and @samp{rtlbhi}.
42221
42222 The @samp{org.gnu.gdb.microblaze.stack-protect} feature is optional.
42223 If present, it should contain registers @samp{rshr} and @samp{rslr}
42224
42225 @node MIPS Features
42226 @subsection @acronym{MIPS} Features
42227 @cindex target descriptions, @acronym{MIPS} features
42228
42229 The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets.
42230 It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
42231 @samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
42232 on the target.
42233
42234 The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
42235 contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
42236 registers. They may be 32-bit or 64-bit depending on the target.
42237
42238 The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
42239 it may be optional in a future version of @value{GDBN}. It should
42240 contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
42241 @samp{fir}. They may be 32-bit or 64-bit depending on the target.
42242
42243 The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should
42244 contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through
42245 @samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should
42246 be 32-bit and the rest may be 32-bit or 64-bit depending on the target.
42247
42248 The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
42249 contain a single register, @samp{restart}, which is used by the
42250 Linux kernel to control restartable syscalls.
42251
42252 @node M68K Features
42253 @subsection M68K Features
42254 @cindex target descriptions, M68K features
42255
42256 @table @code
42257 @item @samp{org.gnu.gdb.m68k.core}
42258 @itemx @samp{org.gnu.gdb.coldfire.core}
42259 @itemx @samp{org.gnu.gdb.fido.core}
42260 One of those features must be always present.
42261 The feature that is present determines which flavor of m68k is
42262 used. The feature that is present should contain registers
42263 @samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
42264 @samp{sp}, @samp{ps} and @samp{pc}.
42265
42266 @item @samp{org.gnu.gdb.coldfire.fp}
42267 This feature is optional. If present, it should contain registers
42268 @samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
42269 @samp{fpiaddr}.
42270 @end table
42271
42272 @node NDS32 Features
42273 @subsection NDS32 Features
42274 @cindex target descriptions, NDS32 features
42275
42276 The @samp{org.gnu.gdb.nds32.core} feature is required for NDS32
42277 targets. It should contain at least registers @samp{r0} through
42278 @samp{r10}, @samp{r15}, @samp{fp}, @samp{gp}, @samp{lp}, @samp{sp},
42279 and @samp{pc}.
42280
42281 The @samp{org.gnu.gdb.nds32.fpu} feature is optional. If present,
42282 it should contain 64-bit double-precision floating-point registers
42283 @samp{fd0} through @emph{fdN}, which should be @samp{fd3}, @samp{fd7},
42284 @samp{fd15}, or @samp{fd31} based on the FPU configuration implemented.
42285
42286 @emph{Note:} The first sixteen 64-bit double-precision floating-point
42287 registers are overlapped with the thirty-two 32-bit single-precision
42288 floating-point registers. The 32-bit single-precision registers, if
42289 not being listed explicitly, will be synthesized from halves of the
42290 overlapping 64-bit double-precision registers. Listing 32-bit
42291 single-precision registers explicitly is deprecated, and the
42292 support to it could be totally removed some day.
42293
42294 @node Nios II Features
42295 @subsection Nios II Features
42296 @cindex target descriptions, Nios II features
42297
42298 The @samp{org.gnu.gdb.nios2.cpu} feature is required for Nios II
42299 targets. It should contain the 32 core registers (@samp{zero},
42300 @samp{at}, @samp{r2} through @samp{r23}, @samp{et} through @samp{ra}),
42301 @samp{pc}, and the 16 control registers (@samp{status} through
42302 @samp{mpuacc}).
42303
42304 @node OpenRISC 1000 Features
42305 @subsection Openrisc 1000 Features
42306 @cindex target descriptions, OpenRISC 1000 features
42307
42308 The @samp{org.gnu.gdb.or1k.group0} feature is required for OpenRISC 1000
42309 targets. It should contain the 32 general purpose registers (@samp{r0}
42310 through @samp{r31}), @samp{ppc}, @samp{npc} and @samp{sr}.
42311
42312 @node PowerPC Features
42313 @subsection PowerPC Features
42314 @cindex target descriptions, PowerPC features
42315
42316 The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
42317 targets. It should contain registers @samp{r0} through @samp{r31},
42318 @samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
42319 @samp{xer}. They may be 32-bit or 64-bit depending on the target.
42320
42321 The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
42322 contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
42323
42324 The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
42325 contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
42326 and @samp{vrsave}.
42327
42328 The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
42329 contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
42330 will combine these registers with the floating point registers
42331 (@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
42332 through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
42333 through @samp{vs63}, the set of vector registers for POWER7.
42334
42335 The @samp{org.gnu.gdb.power.spe} feature is optional. It should
42336 contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
42337 @samp{spefscr}. SPE targets should provide 32-bit registers in
42338 @samp{org.gnu.gdb.power.core} and provide the upper halves in
42339 @samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
42340 these to present registers @samp{ev0} through @samp{ev31} to the
42341 user.
42342
42343 @node S/390 and System z Features
42344 @subsection S/390 and System z Features
42345 @cindex target descriptions, S/390 features
42346 @cindex target descriptions, System z features
42347
42348 The @samp{org.gnu.gdb.s390.core} feature is required for S/390 and
42349 System z targets. It should contain the PSW and the 16 general
42350 registers. In particular, System z targets should provide the 64-bit
42351 registers @samp{pswm}, @samp{pswa}, and @samp{r0} through @samp{r15}.
42352 S/390 targets should provide the 32-bit versions of these registers.
42353 A System z target that runs in 31-bit addressing mode should provide
42354 32-bit versions of @samp{pswm} and @samp{pswa}, as well as the general
42355 register's upper halves @samp{r0h} through @samp{r15h}, and their
42356 lower halves @samp{r0l} through @samp{r15l}.
42357
42358 The @samp{org.gnu.gdb.s390.fpr} feature is required. It should
42359 contain the 64-bit registers @samp{f0} through @samp{f15}, and
42360 @samp{fpc}.
42361
42362 The @samp{org.gnu.gdb.s390.acr} feature is required. It should
42363 contain the 32-bit registers @samp{acr0} through @samp{acr15}.
42364
42365 The @samp{org.gnu.gdb.s390.linux} feature is optional. It should
42366 contain the register @samp{orig_r2}, which is 64-bit wide on System z
42367 targets and 32-bit otherwise. In addition, the feature may contain
42368 the @samp{last_break} register, whose width depends on the addressing
42369 mode, as well as the @samp{system_call} register, which is always
42370 32-bit wide.
42371
42372 The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should
42373 contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct},
42374 @samp{atia}, and @samp{tr0} through @samp{tr15}.
42375
42376 The @samp{org.gnu.gdb.s390.vx} feature is optional. It should contain
42377 64-bit wide registers @samp{v0l} through @samp{v15l}, which will be
42378 combined by @value{GDBN} with the floating point registers @samp{f0}
42379 through @samp{f15} to present the 128-bit wide vector registers
42380 @samp{v0} through @samp{v15}. In addition, this feature should
42381 contain the 128-bit wide vector registers @samp{v16} through
42382 @samp{v31}.
42383
42384 The @samp{org.gnu.gdb.s390.gs} feature is optional. It should contain
42385 the 64-bit wide guarded-storage-control registers @samp{gsd},
42386 @samp{gssm}, and @samp{gsepla}.
42387
42388 The @samp{org.gnu.gdb.s390.gsbc} feature is optional. It should contain
42389 the 64-bit wide guarded-storage broadcast control registers
42390 @samp{bc_gsd}, @samp{bc_gssm}, and @samp{bc_gsepla}.
42391
42392 @node Sparc Features
42393 @subsection Sparc Features
42394 @cindex target descriptions, sparc32 features
42395 @cindex target descriptions, sparc64 features
42396 The @samp{org.gnu.gdb.sparc.cpu} feature is required for sparc32/sparc64
42397 targets. It should describe the following registers:
42398
42399 @itemize @minus
42400 @item
42401 @samp{g0} through @samp{g7}
42402 @item
42403 @samp{o0} through @samp{o7}
42404 @item
42405 @samp{l0} through @samp{l7}
42406 @item
42407 @samp{i0} through @samp{i7}
42408 @end itemize
42409
42410 They may be 32-bit or 64-bit depending on the target.
42411
42412 Also the @samp{org.gnu.gdb.sparc.fpu} feature is required for sparc32/sparc64
42413 targets. It should describe the following registers:
42414
42415 @itemize @minus
42416 @item
42417 @samp{f0} through @samp{f31}
42418 @item
42419 @samp{f32} through @samp{f62} for sparc64
42420 @end itemize
42421
42422 The @samp{org.gnu.gdb.sparc.cp0} feature is required for sparc32/sparc64
42423 targets. It should describe the following registers:
42424
42425 @itemize @minus
42426 @item
42427 @samp{y}, @samp{psr}, @samp{wim}, @samp{tbr}, @samp{pc}, @samp{npc},
42428 @samp{fsr}, and @samp{csr} for sparc32
42429 @item
42430 @samp{pc}, @samp{npc}, @samp{state}, @samp{fsr}, @samp{fprs}, and @samp{y}
42431 for sparc64
42432 @end itemize
42433
42434 @node TIC6x Features
42435 @subsection TMS320C6x Features
42436 @cindex target descriptions, TIC6x features
42437 @cindex target descriptions, TMS320C6x features
42438 The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x
42439 targets. It should contain registers @samp{A0} through @samp{A15},
42440 registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}.
42441
42442 The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should
42443 contain registers @samp{A16} through @samp{A31} and @samp{B16}
42444 through @samp{B31}.
42445
42446 The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should
42447 contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}.
42448
42449 @node Operating System Information
42450 @appendix Operating System Information
42451 @cindex operating system information
42452
42453 @menu
42454 * Process list::
42455 @end menu
42456
42457 Users of @value{GDBN} often wish to obtain information about the state of
42458 the operating system running on the target---for example the list of
42459 processes, or the list of open files. This section describes the
42460 mechanism that makes it possible. This mechanism is similar to the
42461 target features mechanism (@pxref{Target Descriptions}), but focuses
42462 on a different aspect of target.
42463
42464 Operating system information is retrived from the target via the
42465 remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
42466 read}). The object name in the request should be @samp{osdata}, and
42467 the @var{annex} identifies the data to be fetched.
42468
42469 @node Process list
42470 @appendixsection Process list
42471 @cindex operating system information, process list
42472
42473 When requesting the process list, the @var{annex} field in the
42474 @samp{qXfer} request should be @samp{processes}. The returned data is
42475 an XML document. The formal syntax of this document is defined in
42476 @file{gdb/features/osdata.dtd}.
42477
42478 An example document is:
42479
42480 @smallexample
42481 <?xml version="1.0"?>
42482 <!DOCTYPE target SYSTEM "osdata.dtd">
42483 <osdata type="processes">
42484 <item>
42485 <column name="pid">1</column>
42486 <column name="user">root</column>
42487 <column name="command">/sbin/init</column>
42488 <column name="cores">1,2,3</column>
42489 </item>
42490 </osdata>
42491 @end smallexample
42492
42493 Each item should include a column whose name is @samp{pid}. The value
42494 of that column should identify the process on the target. The
42495 @samp{user} and @samp{command} columns are optional, and will be
42496 displayed by @value{GDBN}. The @samp{cores} column, if present,
42497 should contain a comma-separated list of cores that this process
42498 is running on. Target may provide additional columns,
42499 which @value{GDBN} currently ignores.
42500
42501 @node Trace File Format
42502 @appendix Trace File Format
42503 @cindex trace file format
42504
42505 The trace file comes in three parts: a header, a textual description
42506 section, and a trace frame section with binary data.
42507
42508 The header has the form @code{\x7fTRACE0\n}. The first byte is
42509 @code{0x7f} so as to indicate that the file contains binary data,
42510 while the @code{0} is a version number that may have different values
42511 in the future.
42512
42513 The description section consists of multiple lines of @sc{ascii} text
42514 separated by newline characters (@code{0xa}). The lines may include a
42515 variety of optional descriptive or context-setting information, such
42516 as tracepoint definitions or register set size. @value{GDBN} will
42517 ignore any line that it does not recognize. An empty line marks the end
42518 of this section.
42519
42520 @table @code
42521 @item R @var{size}
42522 Specifies the size of a register block in bytes. This is equal to the
42523 size of a @code{g} packet payload in the remote protocol. @var{size}
42524 is an ascii decimal number. There should be only one such line in
42525 a single trace file.
42526
42527 @item status @var{status}
42528 Trace status. @var{status} has the same format as a @code{qTStatus}
42529 remote packet reply. There should be only one such line in a single trace
42530 file.
42531
42532 @item tp @var{payload}
42533 Tracepoint definition. The @var{payload} has the same format as
42534 @code{qTfP}/@code{qTsP} remote packet reply payload. A single tracepoint
42535 may take multiple lines of definition, corresponding to the multiple
42536 reply packets.
42537
42538 @item tsv @var{payload}
42539 Trace state variable definition. The @var{payload} has the same format as
42540 @code{qTfV}/@code{qTsV} remote packet reply payload. A single variable
42541 may take multiple lines of definition, corresponding to the multiple
42542 reply packets.
42543
42544 @item tdesc @var{payload}
42545 Target description in XML format. The @var{payload} is a single line of
42546 the XML file. All such lines should be concatenated together to get
42547 the original XML file. This file is in the same format as @code{qXfer}
42548 @code{features} payload, and corresponds to the main @code{target.xml}
42549 file. Includes are not allowed.
42550
42551 @end table
42552
42553 The trace frame section consists of a number of consecutive frames.
42554 Each frame begins with a two-byte tracepoint number, followed by a
42555 four-byte size giving the amount of data in the frame. The data in
42556 the frame consists of a number of blocks, each introduced by a
42557 character indicating its type (at least register, memory, and trace
42558 state variable). The data in this section is raw binary, not a
42559 hexadecimal or other encoding; its endianness matches the target's
42560 endianness.
42561
42562 @c FIXME bi-arch may require endianness/arch info in description section
42563
42564 @table @code
42565 @item R @var{bytes}
42566 Register block. The number and ordering of bytes matches that of a
42567 @code{g} packet in the remote protocol. Note that these are the
42568 actual bytes, in target order, not a hexadecimal encoding.
42569
42570 @item M @var{address} @var{length} @var{bytes}...
42571 Memory block. This is a contiguous block of memory, at the 8-byte
42572 address @var{address}, with a 2-byte length @var{length}, followed by
42573 @var{length} bytes.
42574
42575 @item V @var{number} @var{value}
42576 Trace state variable block. This records the 8-byte signed value
42577 @var{value} of trace state variable numbered @var{number}.
42578
42579 @end table
42580
42581 Future enhancements of the trace file format may include additional types
42582 of blocks.
42583
42584 @node Index Section Format
42585 @appendix @code{.gdb_index} section format
42586 @cindex .gdb_index section format
42587 @cindex index section format
42588
42589 This section documents the index section that is created by @code{save
42590 gdb-index} (@pxref{Index Files}). The index section is
42591 DWARF-specific; some knowledge of DWARF is assumed in this
42592 description.
42593
42594 The mapped index file format is designed to be directly
42595 @code{mmap}able on any architecture. In most cases, a datum is
42596 represented using a little-endian 32-bit integer value, called an
42597 @code{offset_type}. Big endian machines must byte-swap the values
42598 before using them. Exceptions to this rule are noted. The data is
42599 laid out such that alignment is always respected.
42600
42601 A mapped index consists of several areas, laid out in order.
42602
42603 @enumerate
42604 @item
42605 The file header. This is a sequence of values, of @code{offset_type}
42606 unless otherwise noted:
42607
42608 @enumerate
42609 @item
42610 The version number, currently 8. Versions 1, 2 and 3 are obsolete.
42611 Version 4 uses a different hashing function from versions 5 and 6.
42612 Version 6 includes symbols for inlined functions, whereas versions 4
42613 and 5 do not. Version 7 adds attributes to the CU indices in the
42614 symbol table. Version 8 specifies that symbols from DWARF type units
42615 (@samp{DW_TAG_type_unit}) refer to the type unit's symbol table and not the
42616 compilation unit (@samp{DW_TAG_comp_unit}) using the type.
42617
42618 @value{GDBN} will only read version 4, 5, or 6 indices
42619 by specifying @code{set use-deprecated-index-sections on}.
42620 GDB has a workaround for potentially broken version 7 indices so it is
42621 currently not flagged as deprecated.
42622
42623 @item
42624 The offset, from the start of the file, of the CU list.
42625
42626 @item
42627 The offset, from the start of the file, of the types CU list. Note
42628 that this area can be empty, in which case this offset will be equal
42629 to the next offset.
42630
42631 @item
42632 The offset, from the start of the file, of the address area.
42633
42634 @item
42635 The offset, from the start of the file, of the symbol table.
42636
42637 @item
42638 The offset, from the start of the file, of the constant pool.
42639 @end enumerate
42640
42641 @item
42642 The CU list. This is a sequence of pairs of 64-bit little-endian
42643 values, sorted by the CU offset. The first element in each pair is
42644 the offset of a CU in the @code{.debug_info} section. The second
42645 element in each pair is the length of that CU. References to a CU
42646 elsewhere in the map are done using a CU index, which is just the
42647 0-based index into this table. Note that if there are type CUs, then
42648 conceptually CUs and type CUs form a single list for the purposes of
42649 CU indices.
42650
42651 @item
42652 The types CU list. This is a sequence of triplets of 64-bit
42653 little-endian values. In a triplet, the first value is the CU offset,
42654 the second value is the type offset in the CU, and the third value is
42655 the type signature. The types CU list is not sorted.
42656
42657 @item
42658 The address area. The address area consists of a sequence of address
42659 entries. Each address entry has three elements:
42660
42661 @enumerate
42662 @item
42663 The low address. This is a 64-bit little-endian value.
42664
42665 @item
42666 The high address. This is a 64-bit little-endian value. Like
42667 @code{DW_AT_high_pc}, the value is one byte beyond the end.
42668
42669 @item
42670 The CU index. This is an @code{offset_type} value.
42671 @end enumerate
42672
42673 @item
42674 The symbol table. This is an open-addressed hash table. The size of
42675 the hash table is always a power of 2.
42676
42677 Each slot in the hash table consists of a pair of @code{offset_type}
42678 values. The first value is the offset of the symbol's name in the
42679 constant pool. The second value is the offset of the CU vector in the
42680 constant pool.
42681
42682 If both values are 0, then this slot in the hash table is empty. This
42683 is ok because while 0 is a valid constant pool index, it cannot be a
42684 valid index for both a string and a CU vector.
42685
42686 The hash value for a table entry is computed by applying an
42687 iterative hash function to the symbol's name. Starting with an
42688 initial value of @code{r = 0}, each (unsigned) character @samp{c} in
42689 the string is incorporated into the hash using the formula depending on the
42690 index version:
42691
42692 @table @asis
42693 @item Version 4
42694 The formula is @code{r = r * 67 + c - 113}.
42695
42696 @item Versions 5 to 7
42697 The formula is @code{r = r * 67 + tolower (c) - 113}.
42698 @end table
42699
42700 The terminating @samp{\0} is not incorporated into the hash.
42701
42702 The step size used in the hash table is computed via
42703 @code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash
42704 value, and @samp{size} is the size of the hash table. The step size
42705 is used to find the next candidate slot when handling a hash
42706 collision.
42707
42708 The names of C@t{++} symbols in the hash table are canonicalized. We
42709 don't currently have a simple description of the canonicalization
42710 algorithm; if you intend to create new index sections, you must read
42711 the code.
42712
42713 @item
42714 The constant pool. This is simply a bunch of bytes. It is organized
42715 so that alignment is correct: CU vectors are stored first, followed by
42716 strings.
42717
42718 A CU vector in the constant pool is a sequence of @code{offset_type}
42719 values. The first value is the number of CU indices in the vector.
42720 Each subsequent value is the index and symbol attributes of a CU in
42721 the CU list. This element in the hash table is used to indicate which
42722 CUs define the symbol and how the symbol is used.
42723 See below for the format of each CU index+attributes entry.
42724
42725 A string in the constant pool is zero-terminated.
42726 @end enumerate
42727
42728 Attributes were added to CU index values in @code{.gdb_index} version 7.
42729 If a symbol has multiple uses within a CU then there is one
42730 CU index+attributes value for each use.
42731
42732 The format of each CU index+attributes entry is as follows
42733 (bit 0 = LSB):
42734
42735 @table @asis
42736
42737 @item Bits 0-23
42738 This is the index of the CU in the CU list.
42739 @item Bits 24-27
42740 These bits are reserved for future purposes and must be zero.
42741 @item Bits 28-30
42742 The kind of the symbol in the CU.
42743
42744 @table @asis
42745 @item 0
42746 This value is reserved and should not be used.
42747 By reserving zero the full @code{offset_type} value is backwards compatible
42748 with previous versions of the index.
42749 @item 1
42750 The symbol is a type.
42751 @item 2
42752 The symbol is a variable or an enum value.
42753 @item 3
42754 The symbol is a function.
42755 @item 4
42756 Any other kind of symbol.
42757 @item 5,6,7
42758 These values are reserved.
42759 @end table
42760
42761 @item Bit 31
42762 This bit is zero if the value is global and one if it is static.
42763
42764 The determination of whether a symbol is global or static is complicated.
42765 The authorative reference is the file @file{dwarf2read.c} in
42766 @value{GDBN} sources.
42767
42768 @end table
42769
42770 This pseudo-code describes the computation of a symbol's kind and
42771 global/static attributes in the index.
42772
42773 @smallexample
42774 is_external = get_attribute (die, DW_AT_external);
42775 language = get_attribute (cu_die, DW_AT_language);
42776 switch (die->tag)
42777 @{
42778 case DW_TAG_typedef:
42779 case DW_TAG_base_type:
42780 case DW_TAG_subrange_type:
42781 kind = TYPE;
42782 is_static = 1;
42783 break;
42784 case DW_TAG_enumerator:
42785 kind = VARIABLE;
42786 is_static = language != CPLUS;
42787 break;
42788 case DW_TAG_subprogram:
42789 kind = FUNCTION;
42790 is_static = ! (is_external || language == ADA);
42791 break;
42792 case DW_TAG_constant:
42793 kind = VARIABLE;
42794 is_static = ! is_external;
42795 break;
42796 case DW_TAG_variable:
42797 kind = VARIABLE;
42798 is_static = ! is_external;
42799 break;
42800 case DW_TAG_namespace:
42801 kind = TYPE;
42802 is_static = 0;
42803 break;
42804 case DW_TAG_class_type:
42805 case DW_TAG_interface_type:
42806 case DW_TAG_structure_type:
42807 case DW_TAG_union_type:
42808 case DW_TAG_enumeration_type:
42809 kind = TYPE;
42810 is_static = language != CPLUS;
42811 break;
42812 default:
42813 assert (0);
42814 @}
42815 @end smallexample
42816
42817 @node Man Pages
42818 @appendix Manual pages
42819 @cindex Man pages
42820
42821 @menu
42822 * gdb man:: The GNU Debugger man page
42823 * gdbserver man:: Remote Server for the GNU Debugger man page
42824 * gcore man:: Generate a core file of a running program
42825 * gdbinit man:: gdbinit scripts
42826 * gdb-add-index man:: Add index files to speed up GDB
42827 @end menu
42828
42829 @node gdb man
42830 @heading gdb man
42831
42832 @c man title gdb The GNU Debugger
42833
42834 @c man begin SYNOPSIS gdb
42835 gdb [@option{-help}] [@option{-nh}] [@option{-nx}] [@option{-q}]
42836 [@option{-batch}] [@option{-cd=}@var{dir}] [@option{-f}]
42837 [@option{-b}@w{ }@var{bps}]
42838 [@option{-tty=}@var{dev}] [@option{-s} @var{symfile}]
42839 [@option{-e}@w{ }@var{prog}] [@option{-se}@w{ }@var{prog}]
42840 [@option{-c}@w{ }@var{core}] [@option{-p}@w{ }@var{procID}]
42841 [@option{-x}@w{ }@var{cmds}] [@option{-d}@w{ }@var{dir}]
42842 [@var{prog}|@var{prog} @var{procID}|@var{prog} @var{core}]
42843 @c man end
42844
42845 @c man begin DESCRIPTION gdb
42846 The purpose of a debugger such as @value{GDBN} is to allow you to see what is
42847 going on ``inside'' another program while it executes -- or what another
42848 program was doing at the moment it crashed.
42849
42850 @value{GDBN} can do four main kinds of things (plus other things in support of
42851 these) to help you catch bugs in the act:
42852
42853 @itemize @bullet
42854 @item
42855 Start your program, specifying anything that might affect its behavior.
42856
42857 @item
42858 Make your program stop on specified conditions.
42859
42860 @item
42861 Examine what has happened, when your program has stopped.
42862
42863 @item
42864 Change things in your program, so you can experiment with correcting the
42865 effects of one bug and go on to learn about another.
42866 @end itemize
42867
42868 You can use @value{GDBN} to debug programs written in C, C@t{++}, Fortran and
42869 Modula-2.
42870
42871 @value{GDBN} is invoked with the shell command @code{gdb}. Once started, it reads
42872 commands from the terminal until you tell it to exit with the @value{GDBN}
42873 command @code{quit}. You can get online help from @value{GDBN} itself
42874 by using the command @code{help}.
42875
42876 You can run @code{gdb} with no arguments or options; but the most
42877 usual way to start @value{GDBN} is with one argument or two, specifying an
42878 executable program as the argument:
42879
42880 @smallexample
42881 gdb program
42882 @end smallexample
42883
42884 You can also start with both an executable program and a core file specified:
42885
42886 @smallexample
42887 gdb program core
42888 @end smallexample
42889
42890 You can, instead, specify a process ID as a second argument, if you want
42891 to debug a running process:
42892
42893 @smallexample
42894 gdb program 1234
42895 gdb -p 1234
42896 @end smallexample
42897
42898 @noindent
42899 would attach @value{GDBN} to process @code{1234} (unless you also have a file
42900 named @file{1234}; @value{GDBN} does check for a core file first).
42901 With option @option{-p} you can omit the @var{program} filename.
42902
42903 Here are some of the most frequently needed @value{GDBN} commands:
42904
42905 @c pod2man highlights the right hand side of the @item lines.
42906 @table @env
42907 @item break [@var{file}:]@var{function}
42908 Set a breakpoint at @var{function} (in @var{file}).
42909
42910 @item run [@var{arglist}]
42911 Start your program (with @var{arglist}, if specified).
42912
42913 @item bt
42914 Backtrace: display the program stack.
42915
42916 @item print @var{expr}
42917 Display the value of an expression.
42918
42919 @item c
42920 Continue running your program (after stopping, e.g. at a breakpoint).
42921
42922 @item next
42923 Execute next program line (after stopping); step @emph{over} any
42924 function calls in the line.
42925
42926 @item edit [@var{file}:]@var{function}
42927 look at the program line where it is presently stopped.
42928
42929 @item list [@var{file}:]@var{function}
42930 type the text of the program in the vicinity of where it is presently stopped.
42931
42932 @item step
42933 Execute next program line (after stopping); step @emph{into} any
42934 function calls in the line.
42935
42936 @item help [@var{name}]
42937 Show information about @value{GDBN} command @var{name}, or general information
42938 about using @value{GDBN}.
42939
42940 @item quit
42941 Exit from @value{GDBN}.
42942 @end table
42943
42944 @ifset man
42945 For full details on @value{GDBN},
42946 see @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
42947 by Richard M. Stallman and Roland H. Pesch. The same text is available online
42948 as the @code{gdb} entry in the @code{info} program.
42949 @end ifset
42950 @c man end
42951
42952 @c man begin OPTIONS gdb
42953 Any arguments other than options specify an executable
42954 file and core file (or process ID); that is, the first argument
42955 encountered with no
42956 associated option flag is equivalent to a @option{-se} option, and the second,
42957 if any, is equivalent to a @option{-c} option if it's the name of a file.
42958 Many options have
42959 both long and short forms; both are shown here. The long forms are also
42960 recognized if you truncate them, so long as enough of the option is
42961 present to be unambiguous. (If you prefer, you can flag option
42962 arguments with @option{+} rather than @option{-}, though we illustrate the
42963 more usual convention.)
42964
42965 All the options and command line arguments you give are processed
42966 in sequential order. The order makes a difference when the @option{-x}
42967 option is used.
42968
42969 @table @env
42970 @item -help
42971 @itemx -h
42972 List all options, with brief explanations.
42973
42974 @item -symbols=@var{file}
42975 @itemx -s @var{file}
42976 Read symbol table from file @var{file}.
42977
42978 @item -write
42979 Enable writing into executable and core files.
42980
42981 @item -exec=@var{file}
42982 @itemx -e @var{file}
42983 Use file @var{file} as the executable file to execute when
42984 appropriate, and for examining pure data in conjunction with a core
42985 dump.
42986
42987 @item -se=@var{file}
42988 Read symbol table from file @var{file} and use it as the executable
42989 file.
42990
42991 @item -core=@var{file}
42992 @itemx -c @var{file}
42993 Use file @var{file} as a core dump to examine.
42994
42995 @item -command=@var{file}
42996 @itemx -x @var{file}
42997 Execute @value{GDBN} commands from file @var{file}.
42998
42999 @item -ex @var{command}
43000 Execute given @value{GDBN} @var{command}.
43001
43002 @item -directory=@var{directory}
43003 @itemx -d @var{directory}
43004 Add @var{directory} to the path to search for source files.
43005
43006 @item -nh
43007 Do not execute commands from @file{~/.gdbinit}.
43008
43009 @item -nx
43010 @itemx -n
43011 Do not execute commands from any @file{.gdbinit} initialization files.
43012
43013 @item -quiet
43014 @itemx -q
43015 ``Quiet''. Do not print the introductory and copyright messages. These
43016 messages are also suppressed in batch mode.
43017
43018 @item -batch
43019 Run in batch mode. Exit with status @code{0} after processing all the command
43020 files specified with @option{-x} (and @file{.gdbinit}, if not inhibited).
43021 Exit with nonzero status if an error occurs in executing the @value{GDBN}
43022 commands in the command files.
43023
43024 Batch mode may be useful for running @value{GDBN} as a filter, for example to
43025 download and run a program on another computer; in order to make this
43026 more useful, the message
43027
43028 @smallexample
43029 Program exited normally.
43030 @end smallexample
43031
43032 @noindent
43033 (which is ordinarily issued whenever a program running under @value{GDBN} control
43034 terminates) is not issued when running in batch mode.
43035
43036 @item -cd=@var{directory}
43037 Run @value{GDBN} using @var{directory} as its working directory,
43038 instead of the current directory.
43039
43040 @item -fullname
43041 @itemx -f
43042 Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells
43043 @value{GDBN} to output the full file name and line number in a standard,
43044 recognizable fashion each time a stack frame is displayed (which
43045 includes each time the program stops). This recognizable format looks
43046 like two @samp{\032} characters, followed by the file name, line number
43047 and character position separated by colons, and a newline. The
43048 Emacs-to-@value{GDBN} interface program uses the two @samp{\032}
43049 characters as a signal to display the source code for the frame.
43050
43051 @item -b @var{bps}
43052 Set the line speed (baud rate or bits per second) of any serial
43053 interface used by @value{GDBN} for remote debugging.
43054
43055 @item -tty=@var{device}
43056 Run using @var{device} for your program's standard input and output.
43057 @end table
43058 @c man end
43059
43060 @c man begin SEEALSO gdb
43061 @ifset man
43062 The full documentation for @value{GDBN} is maintained as a Texinfo manual.
43063 If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
43064 documentation are properly installed at your site, the command
43065
43066 @smallexample
43067 info gdb
43068 @end smallexample
43069
43070 @noindent
43071 should give you access to the complete manual.
43072
43073 @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
43074 Richard M. Stallman and Roland H. Pesch, July 1991.
43075 @end ifset
43076 @c man end
43077
43078 @node gdbserver man
43079 @heading gdbserver man
43080
43081 @c man title gdbserver Remote Server for the GNU Debugger
43082 @format
43083 @c man begin SYNOPSIS gdbserver
43084 gdbserver @var{comm} @var{prog} [@var{args}@dots{}]
43085
43086 gdbserver --attach @var{comm} @var{pid}
43087
43088 gdbserver --multi @var{comm}
43089 @c man end
43090 @end format
43091
43092 @c man begin DESCRIPTION gdbserver
43093 @command{gdbserver} is a program that allows you to run @value{GDBN} on a different machine
43094 than the one which is running the program being debugged.
43095
43096 @ifclear man
43097 @subheading Usage (server (target) side)
43098 @end ifclear
43099 @ifset man
43100 Usage (server (target) side):
43101 @end ifset
43102
43103 First, you need to have a copy of the program you want to debug put onto
43104 the target system. The program can be stripped to save space if needed, as
43105 @command{gdbserver} doesn't care about symbols. All symbol handling is taken care of by
43106 the @value{GDBN} running on the host system.
43107
43108 To use the server, you log on to the target system, and run the @command{gdbserver}
43109 program. You must tell it (a) how to communicate with @value{GDBN}, (b) the name of
43110 your program, and (c) its arguments. The general syntax is:
43111
43112 @smallexample
43113 target> gdbserver @var{comm} @var{program} [@var{args} ...]
43114 @end smallexample
43115
43116 For example, using a serial port, you might say:
43117
43118 @smallexample
43119 @ifset man
43120 @c @file would wrap it as F</dev/com1>.
43121 target> gdbserver /dev/com1 emacs foo.txt
43122 @end ifset
43123 @ifclear man
43124 target> gdbserver @file{/dev/com1} emacs foo.txt
43125 @end ifclear
43126 @end smallexample
43127
43128 This tells @command{gdbserver} to debug emacs with an argument of foo.txt, and
43129 to communicate with @value{GDBN} via @file{/dev/com1}. @command{gdbserver} now
43130 waits patiently for the host @value{GDBN} to communicate with it.
43131
43132 To use a TCP connection, you could say:
43133
43134 @smallexample
43135 target> gdbserver host:2345 emacs foo.txt
43136 @end smallexample
43137
43138 This says pretty much the same thing as the last example, except that we are
43139 going to communicate with the @code{host} @value{GDBN} via TCP. The @code{host:2345} argument means
43140 that we are expecting to see a TCP connection from @code{host} to local TCP port
43141 2345. (Currently, the @code{host} part is ignored.) You can choose any number you
43142 want for the port number as long as it does not conflict with any existing TCP
43143 ports on the target system. This same port number must be used in the host
43144 @value{GDBN}s @code{target remote} command, which will be described shortly. Note that if
43145 you chose a port number that conflicts with another service, @command{gdbserver} will
43146 print an error message and exit.
43147
43148 @command{gdbserver} can also attach to running programs.
43149 This is accomplished via the @option{--attach} argument. The syntax is:
43150
43151 @smallexample
43152 target> gdbserver --attach @var{comm} @var{pid}
43153 @end smallexample
43154
43155 @var{pid} is the process ID of a currently running process. It isn't
43156 necessary to point @command{gdbserver} at a binary for the running process.
43157
43158 To start @code{gdbserver} without supplying an initial command to run
43159 or process ID to attach, use the @option{--multi} command line option.
43160 In such case you should connect using @kbd{target extended-remote} to start
43161 the program you want to debug.
43162
43163 @smallexample
43164 target> gdbserver --multi @var{comm}
43165 @end smallexample
43166
43167 @ifclear man
43168 @subheading Usage (host side)
43169 @end ifclear
43170 @ifset man
43171 Usage (host side):
43172 @end ifset
43173
43174 You need an unstripped copy of the target program on your host system, since
43175 @value{GDBN} needs to examine it's symbol tables and such. Start up @value{GDBN} as you normally
43176 would, with the target program as the first argument. (You may need to use the
43177 @option{--baud} option if the serial line is running at anything except 9600 baud.)
43178 That is @code{gdb TARGET-PROG}, or @code{gdb --baud BAUD TARGET-PROG}. After that, the only
43179 new command you need to know about is @code{target remote}
43180 (or @code{target extended-remote}). Its argument is either
43181 a device name (usually a serial device, like @file{/dev/ttyb}), or a @code{HOST:PORT}
43182 descriptor. For example:
43183
43184 @smallexample
43185 @ifset man
43186 @c @file would wrap it as F</dev/ttyb>.
43187 (gdb) target remote /dev/ttyb
43188 @end ifset
43189 @ifclear man
43190 (gdb) target remote @file{/dev/ttyb}
43191 @end ifclear
43192 @end smallexample
43193
43194 @noindent
43195 communicates with the server via serial line @file{/dev/ttyb}, and:
43196
43197 @smallexample
43198 (gdb) target remote the-target:2345
43199 @end smallexample
43200
43201 @noindent
43202 communicates via a TCP connection to port 2345 on host `the-target', where
43203 you previously started up @command{gdbserver} with the same port number. Note that for
43204 TCP connections, you must start up @command{gdbserver} prior to using the `target remote'
43205 command, otherwise you may get an error that looks something like
43206 `Connection refused'.
43207
43208 @command{gdbserver} can also debug multiple inferiors at once,
43209 described in
43210 @ifset man
43211 the @value{GDBN} manual in node @code{Inferiors and Programs}
43212 -- shell command @code{info -f gdb -n 'Inferiors and Programs'}.
43213 @end ifset
43214 @ifclear man
43215 @ref{Inferiors and Programs}.
43216 @end ifclear
43217 In such case use the @code{extended-remote} @value{GDBN} command variant:
43218
43219 @smallexample
43220 (gdb) target extended-remote the-target:2345
43221 @end smallexample
43222
43223 The @command{gdbserver} option @option{--multi} may or may not be used in such
43224 case.
43225 @c man end
43226
43227 @c man begin OPTIONS gdbserver
43228 There are three different modes for invoking @command{gdbserver}:
43229
43230 @itemize @bullet
43231
43232 @item
43233 Debug a specific program specified by its program name:
43234
43235 @smallexample
43236 gdbserver @var{comm} @var{prog} [@var{args}@dots{}]
43237 @end smallexample
43238
43239 The @var{comm} parameter specifies how should the server communicate
43240 with @value{GDBN}; it is either a device name (to use a serial line),
43241 a TCP port number (@code{:1234}), or @code{-} or @code{stdio} to use
43242 stdin/stdout of @code{gdbserver}. Specify the name of the program to
43243 debug in @var{prog}. Any remaining arguments will be passed to the
43244 program verbatim. When the program exits, @value{GDBN} will close the
43245 connection, and @code{gdbserver} will exit.
43246
43247 @item
43248 Debug a specific program by specifying the process ID of a running
43249 program:
43250
43251 @smallexample
43252 gdbserver --attach @var{comm} @var{pid}
43253 @end smallexample
43254
43255 The @var{comm} parameter is as described above. Supply the process ID
43256 of a running program in @var{pid}; @value{GDBN} will do everything
43257 else. Like with the previous mode, when the process @var{pid} exits,
43258 @value{GDBN} will close the connection, and @code{gdbserver} will exit.
43259
43260 @item
43261 Multi-process mode -- debug more than one program/process:
43262
43263 @smallexample
43264 gdbserver --multi @var{comm}
43265 @end smallexample
43266
43267 In this mode, @value{GDBN} can instruct @command{gdbserver} which
43268 command(s) to run. Unlike the other 2 modes, @value{GDBN} will not
43269 close the connection when a process being debugged exits, so you can
43270 debug several processes in the same session.
43271 @end itemize
43272
43273 In each of the modes you may specify these options:
43274
43275 @table @env
43276
43277 @item --help
43278 List all options, with brief explanations.
43279
43280 @item --version
43281 This option causes @command{gdbserver} to print its version number and exit.
43282
43283 @item --attach
43284 @command{gdbserver} will attach to a running program. The syntax is:
43285
43286 @smallexample
43287 target> gdbserver --attach @var{comm} @var{pid}
43288 @end smallexample
43289
43290 @var{pid} is the process ID of a currently running process. It isn't
43291 necessary to point @command{gdbserver} at a binary for the running process.
43292
43293 @item --multi
43294 To start @code{gdbserver} without supplying an initial command to run
43295 or process ID to attach, use this command line option.
43296 Then you can connect using @kbd{target extended-remote} and start
43297 the program you want to debug. The syntax is:
43298
43299 @smallexample
43300 target> gdbserver --multi @var{comm}
43301 @end smallexample
43302
43303 @item --debug
43304 Instruct @code{gdbserver} to display extra status information about the debugging
43305 process.
43306 This option is intended for @code{gdbserver} development and for bug reports to
43307 the developers.
43308
43309 @item --remote-debug
43310 Instruct @code{gdbserver} to display remote protocol debug output.
43311 This option is intended for @code{gdbserver} development and for bug reports to
43312 the developers.
43313
43314 @item --debug-format=option1@r{[},option2,...@r{]}
43315 Instruct @code{gdbserver} to include extra information in each line
43316 of debugging output.
43317 @xref{Other Command-Line Arguments for gdbserver}.
43318
43319 @item --wrapper
43320 Specify a wrapper to launch programs
43321 for debugging. The option should be followed by the name of the
43322 wrapper, then any command-line arguments to pass to the wrapper, then
43323 @kbd{--} indicating the end of the wrapper arguments.
43324
43325 @item --once
43326 By default, @command{gdbserver} keeps the listening TCP port open, so that
43327 additional connections are possible. However, if you start @code{gdbserver}
43328 with the @option{--once} option, it will stop listening for any further
43329 connection attempts after connecting to the first @value{GDBN} session.
43330
43331 @c --disable-packet is not documented for users.
43332
43333 @c --disable-randomization and --no-disable-randomization are superseded by
43334 @c QDisableRandomization.
43335
43336 @end table
43337 @c man end
43338
43339 @c man begin SEEALSO gdbserver
43340 @ifset man
43341 The full documentation for @value{GDBN} is maintained as a Texinfo manual.
43342 If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
43343 documentation are properly installed at your site, the command
43344
43345 @smallexample
43346 info gdb
43347 @end smallexample
43348
43349 should give you access to the complete manual.
43350
43351 @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
43352 Richard M. Stallman and Roland H. Pesch, July 1991.
43353 @end ifset
43354 @c man end
43355
43356 @node gcore man
43357 @heading gcore
43358
43359 @c man title gcore Generate a core file of a running program
43360
43361 @format
43362 @c man begin SYNOPSIS gcore
43363 gcore [-a] [-o @var{filename}] @var{pid}
43364 @c man end
43365 @end format
43366
43367 @c man begin DESCRIPTION gcore
43368 Generate a core dump of a running program with process ID @var{pid}.
43369 Produced file is equivalent to a kernel produced core file as if the process
43370 crashed (and if @kbd{ulimit -c} were used to set up an appropriate core dump
43371 limit). Unlike after a crash, after @command{gcore} the program remains
43372 running without any change.
43373 @c man end
43374
43375 @c man begin OPTIONS gcore
43376 @table @env
43377 @item -a
43378 Dump all memory mappings. The actual effect of this option depends on
43379 the Operating System. On @sc{gnu}/Linux, it will disable
43380 @code{use-coredump-filter} (@pxref{set use-coredump-filter}) and
43381 enable @code{dump-excluded-mappings} (@pxref{set
43382 dump-excluded-mappings}).
43383
43384 @item -o @var{filename}
43385 The optional argument
43386 @var{filename} specifies the file name where to put the core dump.
43387 If not specified, the file name defaults to @file{core.@var{pid}},
43388 where @var{pid} is the running program process ID.
43389 @end table
43390 @c man end
43391
43392 @c man begin SEEALSO gcore
43393 @ifset man
43394 The full documentation for @value{GDBN} is maintained as a Texinfo manual.
43395 If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
43396 documentation are properly installed at your site, the command
43397
43398 @smallexample
43399 info gdb
43400 @end smallexample
43401
43402 @noindent
43403 should give you access to the complete manual.
43404
43405 @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
43406 Richard M. Stallman and Roland H. Pesch, July 1991.
43407 @end ifset
43408 @c man end
43409
43410 @node gdbinit man
43411 @heading gdbinit
43412
43413 @c man title gdbinit GDB initialization scripts
43414
43415 @format
43416 @c man begin SYNOPSIS gdbinit
43417 @ifset SYSTEM_GDBINIT
43418 @value{SYSTEM_GDBINIT}
43419 @end ifset
43420
43421 ~/.gdbinit
43422
43423 ./.gdbinit
43424 @c man end
43425 @end format
43426
43427 @c man begin DESCRIPTION gdbinit
43428 These files contain @value{GDBN} commands to automatically execute during
43429 @value{GDBN} startup. The lines of contents are canned sequences of commands,
43430 described in
43431 @ifset man
43432 the @value{GDBN} manual in node @code{Sequences}
43433 -- shell command @code{info -f gdb -n Sequences}.
43434 @end ifset
43435 @ifclear man
43436 @ref{Sequences}.
43437 @end ifclear
43438
43439 Please read more in
43440 @ifset man
43441 the @value{GDBN} manual in node @code{Startup}
43442 -- shell command @code{info -f gdb -n Startup}.
43443 @end ifset
43444 @ifclear man
43445 @ref{Startup}.
43446 @end ifclear
43447
43448 @table @env
43449 @ifset SYSTEM_GDBINIT
43450 @item @value{SYSTEM_GDBINIT}
43451 @end ifset
43452 @ifclear SYSTEM_GDBINIT
43453 @item (not enabled with @code{--with-system-gdbinit} during compilation)
43454 @end ifclear
43455 System-wide initialization file. It is executed unless user specified
43456 @value{GDBN} option @code{-nx} or @code{-n}.
43457 See more in
43458 @ifset man
43459 the @value{GDBN} manual in node @code{System-wide configuration}
43460 -- shell command @code{info -f gdb -n 'System-wide configuration'}.
43461 @end ifset
43462 @ifclear man
43463 @ref{System-wide configuration}.
43464 @end ifclear
43465
43466 @item ~/.gdbinit
43467 User initialization file. It is executed unless user specified
43468 @value{GDBN} options @code{-nx}, @code{-n} or @code{-nh}.
43469
43470 @item ./.gdbinit
43471 Initialization file for current directory. It may need to be enabled with
43472 @value{GDBN} security command @code{set auto-load local-gdbinit}.
43473 See more in
43474 @ifset man
43475 the @value{GDBN} manual in node @code{Init File in the Current Directory}
43476 -- shell command @code{info -f gdb -n 'Init File in the Current Directory'}.
43477 @end ifset
43478 @ifclear man
43479 @ref{Init File in the Current Directory}.
43480 @end ifclear
43481 @end table
43482 @c man end
43483
43484 @c man begin SEEALSO gdbinit
43485 @ifset man
43486 gdb(1), @code{info -f gdb -n Startup}
43487
43488 The full documentation for @value{GDBN} is maintained as a Texinfo manual.
43489 If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
43490 documentation are properly installed at your site, the command
43491
43492 @smallexample
43493 info gdb
43494 @end smallexample
43495
43496 should give you access to the complete manual.
43497
43498 @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
43499 Richard M. Stallman and Roland H. Pesch, July 1991.
43500 @end ifset
43501 @c man end
43502
43503 @node gdb-add-index man
43504 @heading gdb-add-index
43505 @pindex gdb-add-index
43506 @anchor{gdb-add-index}
43507
43508 @c man title gdb-add-index Add index files to speed up GDB
43509
43510 @c man begin SYNOPSIS gdb-add-index
43511 gdb-add-index @var{filename}
43512 @c man end
43513
43514 @c man begin DESCRIPTION gdb-add-index
43515 When @value{GDBN} finds a symbol file, it scans the symbols in the
43516 file in order to construct an internal symbol table. This lets most
43517 @value{GDBN} operations work quickly--at the cost of a delay early on.
43518 For large programs, this delay can be quite lengthy, so @value{GDBN}
43519 provides a way to build an index, which speeds up startup.
43520
43521 To determine whether a file contains such an index, use the command
43522 @kbd{readelf -S filename}: the index is stored in a section named
43523 @code{.gdb_index}. The index file can only be produced on systems
43524 which use ELF binaries and DWARF debug information (i.e., sections
43525 named @code{.debug_*}).
43526
43527 @command{gdb-add-index} uses @value{GDBN} and @command{objdump} found
43528 in the @env{PATH} environment variable. If you want to use different
43529 versions of these programs, you can specify them through the
43530 @env{GDB} and @env{OBJDUMP} environment variables.
43531
43532 See more in
43533 @ifset man
43534 the @value{GDBN} manual in node @code{Index Files}
43535 -- shell command @kbd{info -f gdb -n "Index Files"}.
43536 @end ifset
43537 @ifclear man
43538 @ref{Index Files}.
43539 @end ifclear
43540 @c man end
43541
43542 @c man begin SEEALSO gdb-add-index
43543 @ifset man
43544 The full documentation for @value{GDBN} is maintained as a Texinfo manual.
43545 If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
43546 documentation are properly installed at your site, the command
43547
43548 @smallexample
43549 info gdb
43550 @end smallexample
43551
43552 should give you access to the complete manual.
43553
43554 @cite{Using GDB: A Guide to the GNU Source-Level Debugger},
43555 Richard M. Stallman and Roland H. Pesch, July 1991.
43556 @end ifset
43557 @c man end
43558
43559 @include gpl.texi
43560
43561 @node GNU Free Documentation License
43562 @appendix GNU Free Documentation License
43563 @include fdl.texi
43564
43565 @node Concept Index
43566 @unnumbered Concept Index
43567
43568 @printindex cp
43569
43570 @node Command and Variable Index
43571 @unnumbered Command, Variable, and Function Index
43572
43573 @printindex fn
43574
43575 @tex
43576 % I think something like @@colophon should be in texinfo. In the
43577 % meantime:
43578 \long\def\colophon{\hbox to0pt{}\vfill
43579 \centerline{The body of this manual is set in}
43580 \centerline{\fontname\tenrm,}
43581 \centerline{with headings in {\bf\fontname\tenbf}}
43582 \centerline{and examples in {\tt\fontname\tentt}.}
43583 \centerline{{\it\fontname\tenit\/},}
43584 \centerline{{\bf\fontname\tenbf}, and}
43585 \centerline{{\sl\fontname\tensl\/}}
43586 \centerline{are used for emphasis.}\vfill}
43587 \page\colophon
43588 % Blame: doc@@cygnus.com, 1991.
43589 @end tex
43590
43591 @bye
This page took 0.983821 seconds and 4 git commands to generate.