37ffbb1dc4750380e3bd4e29efd42f7e9e0e132c
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
1 \input texinfo @c -*-texinfo-*-
2 @c Copyright (C) 1988-1996, 1998-2012 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 @include gdb-cfg.texi
10 @c
11 @settitle Debugging with @value{GDBN}
12 @setchapternewpage odd
13 @c %**end of header
14
15 @iftex
16 @c @smallbook
17 @c @cropmarks
18 @end iftex
19
20 @finalout
21 @syncodeindex ky cp
22 @syncodeindex tp cp
23
24 @c readline appendices use @vindex, @findex and @ftable,
25 @c annotate.texi and gdbmi use @findex.
26 @syncodeindex vr cp
27 @syncodeindex fn cp
28
29 @c !!set GDB manual's edition---not the same as GDB version!
30 @c This is updated by GNU Press.
31 @set EDITION Tenth
32
33 @c !!set GDB edit command default editor
34 @set EDITOR /bin/ex
35
36 @c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
37
38 @c This is a dir.info fragment to support semi-automated addition of
39 @c manuals to an info tree.
40 @dircategory Software development
41 @direntry
42 * Gdb: (gdb). The GNU debugger.
43 @end direntry
44
45 @copying
46 Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
47 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
48 Free Software Foundation, Inc.
49
50 Permission is granted to copy, distribute and/or modify this document
51 under the terms of the GNU Free Documentation License, Version 1.3 or
52 any later version published by the Free Software Foundation; with the
53 Invariant Sections being ``Free Software'' and ``Free Software Needs
54 Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
55 and with the Back-Cover Texts as in (a) below.
56
57 (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
58 this GNU Manual. Buying copies from GNU Press supports the FSF in
59 developing GNU and promoting software freedom.''
60 @end copying
61
62 @ifnottex
63 This file documents the @sc{gnu} debugger @value{GDBN}.
64
65 This is the @value{EDITION} Edition, of @cite{Debugging with
66 @value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN}
67 @ifset VERSION_PACKAGE
68 @value{VERSION_PACKAGE}
69 @end ifset
70 Version @value{GDBVN}.
71
72 @insertcopying
73 @end ifnottex
74
75 @titlepage
76 @title Debugging with @value{GDBN}
77 @subtitle The @sc{gnu} Source-Level Debugger
78 @sp 1
79 @subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
80 @ifset VERSION_PACKAGE
81 @sp 1
82 @subtitle @value{VERSION_PACKAGE}
83 @end ifset
84 @author Richard Stallman, Roland Pesch, Stan Shebs, et al.
85 @page
86 @tex
87 {\parskip=0pt
88 \hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par
89 \hfill {\it Debugging with @value{GDBN}}\par
90 \hfill \TeX{}info \texinfoversion\par
91 }
92 @end tex
93
94 @vskip 0pt plus 1filll
95 Published by the Free Software Foundation @*
96 51 Franklin Street, Fifth Floor,
97 Boston, MA 02110-1301, USA@*
98 ISBN 978-0-9831592-3-0 @*
99
100 @insertcopying
101 @end titlepage
102 @page
103
104 @ifnottex
105 @node Top, Summary, (dir), (dir)
106
107 @top Debugging with @value{GDBN}
108
109 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
110
111 This is the @value{EDITION} Edition, for @value{GDBN}
112 @ifset VERSION_PACKAGE
113 @value{VERSION_PACKAGE}
114 @end ifset
115 Version @value{GDBVN}.
116
117 Copyright (C) 1988-2010 Free Software Foundation, Inc.
118
119 This edition of the GDB manual is dedicated to the memory of Fred
120 Fish. Fred was a long-standing contributor to GDB and to Free
121 software in general. We will miss him.
122
123 @menu
124 * Summary:: Summary of @value{GDBN}
125 * Sample Session:: A sample @value{GDBN} session
126
127 * Invocation:: Getting in and out of @value{GDBN}
128 * Commands:: @value{GDBN} commands
129 * Running:: Running programs under @value{GDBN}
130 * Stopping:: Stopping and continuing
131 * Reverse Execution:: Running programs backward
132 * Process Record and Replay:: Recording inferior's execution and replaying it
133 * Stack:: Examining the stack
134 * Source:: Examining source files
135 * Data:: Examining data
136 * Optimized Code:: Debugging optimized code
137 * Macros:: Preprocessor Macros
138 * Tracepoints:: Debugging remote targets non-intrusively
139 * Overlays:: Debugging programs that use overlays
140
141 * Languages:: Using @value{GDBN} with different languages
142
143 * Symbols:: Examining the symbol table
144 * Altering:: Altering execution
145 * GDB Files:: @value{GDBN} files
146 * Targets:: Specifying a debugging target
147 * Remote Debugging:: Debugging remote programs
148 * Configurations:: Configuration-specific information
149 * Controlling GDB:: Controlling @value{GDBN}
150 * Extending GDB:: Extending @value{GDBN}
151 * Interpreters:: Command Interpreters
152 * TUI:: @value{GDBN} Text User Interface
153 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
154 * GDB/MI:: @value{GDBN}'s Machine Interface.
155 * Annotations:: @value{GDBN}'s annotation interface.
156 * JIT Interface:: Using the JIT debugging interface.
157 * In-Process Agent:: In-Process Agent
158
159 * GDB Bugs:: Reporting bugs in @value{GDBN}
160
161 @ifset SYSTEM_READLINE
162 * Command Line Editing: (rluserman). Command Line Editing
163 * Using History Interactively: (history). Using History Interactively
164 @end ifset
165 @ifclear SYSTEM_READLINE
166 * Command Line Editing:: Command Line Editing
167 * Using History Interactively:: Using History Interactively
168 @end ifclear
169 * In Memoriam:: In Memoriam
170 * Formatting Documentation:: How to format and print @value{GDBN} documentation
171 * Installing GDB:: Installing GDB
172 * Maintenance Commands:: Maintenance Commands
173 * Remote Protocol:: GDB Remote Serial Protocol
174 * Agent Expressions:: The GDB Agent Expression Mechanism
175 * Target Descriptions:: How targets can describe themselves to
176 @value{GDBN}
177 * Operating System Information:: Getting additional information from
178 the operating system
179 * Trace File Format:: GDB trace file format
180 * Index Section Format:: .gdb_index section format
181 * Copying:: GNU General Public License says
182 how you can copy and share GDB
183 * GNU Free Documentation License:: The license for this documentation
184 * Index:: Index
185 @end menu
186
187 @end ifnottex
188
189 @contents
190
191 @node Summary
192 @unnumbered Summary of @value{GDBN}
193
194 The purpose of a debugger such as @value{GDBN} is to allow you to see what is
195 going on ``inside'' another program while it executes---or what another
196 program was doing at the moment it crashed.
197
198 @value{GDBN} can do four main kinds of things (plus other things in support of
199 these) to help you catch bugs in the act:
200
201 @itemize @bullet
202 @item
203 Start your program, specifying anything that might affect its behavior.
204
205 @item
206 Make your program stop on specified conditions.
207
208 @item
209 Examine what has happened, when your program has stopped.
210
211 @item
212 Change things in your program, so you can experiment with correcting the
213 effects of one bug and go on to learn about another.
214 @end itemize
215
216 You can use @value{GDBN} to debug programs written in C and C@t{++}.
217 For more information, see @ref{Supported Languages,,Supported Languages}.
218 For more information, see @ref{C,,C and C++}.
219
220 Support for D is partial. For information on D, see
221 @ref{D,,D}.
222
223 @cindex Modula-2
224 Support for Modula-2 is partial. For information on Modula-2, see
225 @ref{Modula-2,,Modula-2}.
226
227 Support for OpenCL C is partial. For information on OpenCL C, see
228 @ref{OpenCL C,,OpenCL C}.
229
230 @cindex Pascal
231 Debugging Pascal programs which use sets, subranges, file variables, or
232 nested functions does not currently work. @value{GDBN} does not support
233 entering expressions, printing values, or similar features using Pascal
234 syntax.
235
236 @cindex Fortran
237 @value{GDBN} can be used to debug programs written in Fortran, although
238 it may be necessary to refer to some variables with a trailing
239 underscore.
240
241 @value{GDBN} can be used to debug programs written in Objective-C,
242 using either the Apple/NeXT or the GNU Objective-C runtime.
243
244 @menu
245 * Free Software:: Freely redistributable software
246 * Contributors:: Contributors to GDB
247 @end menu
248
249 @node Free Software
250 @unnumberedsec Free Software
251
252 @value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
253 General Public License
254 (GPL). The GPL gives you the freedom to copy or adapt a licensed
255 program---but every person getting a copy also gets with it the
256 freedom to modify that copy (which means that they must get access to
257 the source code), and the freedom to distribute further copies.
258 Typical software companies use copyrights to limit your freedoms; the
259 Free Software Foundation uses the GPL to preserve these freedoms.
260
261 Fundamentally, the General Public License is a license which says that
262 you have these freedoms and that you cannot take these freedoms away
263 from anyone else.
264
265 @unnumberedsec Free Software Needs Free Documentation
266
267 The biggest deficiency in the free software community today is not in
268 the software---it is the lack of good free documentation that we can
269 include with the free software. Many of our most important
270 programs do not come with free reference manuals and free introductory
271 texts. Documentation is an essential part of any software package;
272 when an important free software package does not come with a free
273 manual and a free tutorial, that is a major gap. We have many such
274 gaps today.
275
276 Consider Perl, for instance. The tutorial manuals that people
277 normally use are non-free. How did this come about? Because the
278 authors of those manuals published them with restrictive terms---no
279 copying, no modification, source files not available---which exclude
280 them from the free software world.
281
282 That wasn't the first time this sort of thing happened, and it was far
283 from the last. Many times we have heard a GNU user eagerly describe a
284 manual that he is writing, his intended contribution to the community,
285 only to learn that he had ruined everything by signing a publication
286 contract to make it non-free.
287
288 Free documentation, like free software, is a matter of freedom, not
289 price. The problem with the non-free manual is not that publishers
290 charge a price for printed copies---that in itself is fine. (The Free
291 Software Foundation sells printed copies of manuals, too.) The
292 problem is the restrictions on the use of the manual. Free manuals
293 are available in source code form, and give you permission to copy and
294 modify. Non-free manuals do not allow this.
295
296 The criteria of freedom for a free manual are roughly the same as for
297 free software. Redistribution (including the normal kinds of
298 commercial redistribution) must be permitted, so that the manual can
299 accompany every copy of the program, both on-line and on paper.
300
301 Permission for modification of the technical content is crucial too.
302 When people modify the software, adding or changing features, if they
303 are conscientious they will change the manual too---so they can
304 provide accurate and clear documentation for the modified program. A
305 manual that leaves you no choice but to write a new manual to document
306 a changed version of the program is not really available to our
307 community.
308
309 Some kinds of limits on the way modification is handled are
310 acceptable. For example, requirements to preserve the original
311 author's copyright notice, the distribution terms, or the list of
312 authors, are ok. It is also no problem to require modified versions
313 to include notice that they were modified. Even entire sections that
314 may not be deleted or changed are acceptable, as long as they deal
315 with nontechnical topics (like this one). These kinds of restrictions
316 are acceptable because they don't obstruct the community's normal use
317 of the manual.
318
319 However, it must be possible to modify all the @emph{technical}
320 content of the manual, and then distribute the result in all the usual
321 media, through all the usual channels. Otherwise, the restrictions
322 obstruct the use of the manual, it is not free, and we need another
323 manual to replace it.
324
325 Please spread the word about this issue. Our community continues to
326 lose manuals to proprietary publishing. If we spread the word that
327 free software needs free reference manuals and free tutorials, perhaps
328 the next person who wants to contribute by writing documentation will
329 realize, before it is too late, that only free manuals contribute to
330 the free software community.
331
332 If you are writing documentation, please insist on publishing it under
333 the GNU Free Documentation License or another free documentation
334 license. Remember that this decision requires your approval---you
335 don't have to let the publisher decide. Some commercial publishers
336 will use a free license if you insist, but they will not propose the
337 option; it is up to you to raise the issue and say firmly that this is
338 what you want. If the publisher you are dealing with refuses, please
339 try other publishers. If you're not sure whether a proposed license
340 is free, write to @email{licensing@@gnu.org}.
341
342 You can encourage commercial publishers to sell more free, copylefted
343 manuals and tutorials by buying them, and particularly by buying
344 copies from the publishers that paid for their writing or for major
345 improvements. Meanwhile, try to avoid buying non-free documentation
346 at all. Check the distribution terms of a manual before you buy it,
347 and insist that whoever seeks your business must respect your freedom.
348 Check the history of the book, and try to reward the publishers that
349 have paid or pay the authors to work on it.
350
351 The Free Software Foundation maintains a list of free documentation
352 published by other publishers, at
353 @url{http://www.fsf.org/doc/other-free-books.html}.
354
355 @node Contributors
356 @unnumberedsec Contributors to @value{GDBN}
357
358 Richard Stallman was the original author of @value{GDBN}, and of many
359 other @sc{gnu} programs. Many others have contributed to its
360 development. This section attempts to credit major contributors. One
361 of the virtues of free software is that everyone is free to contribute
362 to it; with regret, we cannot actually acknowledge everyone here. The
363 file @file{ChangeLog} in the @value{GDBN} distribution approximates a
364 blow-by-blow account.
365
366 Changes much prior to version 2.0 are lost in the mists of time.
367
368 @quotation
369 @emph{Plea:} Additions to this section are particularly welcome. If you
370 or your friends (or enemies, to be evenhanded) have been unfairly
371 omitted from this list, we would like to add your names!
372 @end quotation
373
374 So that they may not regard their many labors as thankless, we
375 particularly thank those who shepherded @value{GDBN} through major
376 releases:
377 Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
378 Jim Blandy (release 4.18);
379 Jason Molenda (release 4.17);
380 Stan Shebs (release 4.14);
381 Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
382 Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
383 John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
384 Jim Kingdon (releases 3.5, 3.4, and 3.3);
385 and Randy Smith (releases 3.2, 3.1, and 3.0).
386
387 Richard Stallman, assisted at various times by Peter TerMaat, Chris
388 Hanson, and Richard Mlynarik, handled releases through 2.8.
389
390 Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
391 in @value{GDBN}, with significant additional contributions from Per
392 Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
393 demangler. Early work on C@t{++} was by Peter TerMaat (who also did
394 much general update work leading to release 3.0).
395
396 @value{GDBN} uses the BFD subroutine library to examine multiple
397 object-file formats; BFD was a joint project of David V.
398 Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
399
400 David Johnson wrote the original COFF support; Pace Willison did
401 the original support for encapsulated COFF.
402
403 Brent Benson of Harris Computer Systems contributed DWARF 2 support.
404
405 Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
406 Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
407 support.
408 Jean-Daniel Fekete contributed Sun 386i support.
409 Chris Hanson improved the HP9000 support.
410 Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
411 David Johnson contributed Encore Umax support.
412 Jyrki Kuoppala contributed Altos 3068 support.
413 Jeff Law contributed HP PA and SOM support.
414 Keith Packard contributed NS32K support.
415 Doug Rabson contributed Acorn Risc Machine support.
416 Bob Rusk contributed Harris Nighthawk CX-UX support.
417 Chris Smith contributed Convex support (and Fortran debugging).
418 Jonathan Stone contributed Pyramid support.
419 Michael Tiemann contributed SPARC support.
420 Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
421 Pace Willison contributed Intel 386 support.
422 Jay Vosburgh contributed Symmetry support.
423 Marko Mlinar contributed OpenRISC 1000 support.
424
425 Andreas Schwab contributed M68K @sc{gnu}/Linux support.
426
427 Rich Schaefer and Peter Schauer helped with support of SunOS shared
428 libraries.
429
430 Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
431 about several machine instruction sets.
432
433 Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
434 remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
435 contributed remote debugging modules for the i960, VxWorks, A29K UDI,
436 and RDI targets, respectively.
437
438 Brian Fox is the author of the readline libraries providing
439 command-line editing and command history.
440
441 Andrew Beers of SUNY Buffalo wrote the language-switching code, the
442 Modula-2 support, and contributed the Languages chapter of this manual.
443
444 Fred Fish wrote most of the support for Unix System Vr4.
445 He also enhanced the command-completion support to cover C@t{++} overloaded
446 symbols.
447
448 Hitachi America (now Renesas America), Ltd. sponsored the support for
449 H8/300, H8/500, and Super-H processors.
450
451 NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
452
453 Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
454 processors.
455
456 Toshiba sponsored the support for the TX39 Mips processor.
457
458 Matsushita sponsored the support for the MN10200 and MN10300 processors.
459
460 Fujitsu sponsored the support for SPARClite and FR30 processors.
461
462 Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
463 watchpoints.
464
465 Michael Snyder added support for tracepoints.
466
467 Stu Grossman wrote gdbserver.
468
469 Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
470 nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
471
472 The following people at the Hewlett-Packard Company contributed
473 support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
474 (narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
475 compiler, and the Text User Interface (nee Terminal User Interface):
476 Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
477 Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
478 provided HP-specific information in this manual.
479
480 DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
481 Robert Hoehne made significant contributions to the DJGPP port.
482
483 Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
484 development since 1991. Cygnus engineers who have worked on @value{GDBN}
485 fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
486 Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
487 Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
488 Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
489 Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
490 addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
491 JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
492 Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
493 Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
494 Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
495 Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
496 Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
497 Zuhn have made contributions both large and small.
498
499 Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
500 Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
501
502 Jim Blandy added support for preprocessor macros, while working for Red
503 Hat.
504
505 Andrew Cagney designed @value{GDBN}'s architecture vector. Many
506 people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
507 Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
508 Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
509 Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
510 with the migration of old architectures to this new framework.
511
512 Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
513 unwinder framework, this consisting of a fresh new design featuring
514 frame IDs, independent frame sniffers, and the sentinel frame. Mark
515 Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
516 libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
517 trad unwinders. The architecture-specific changes, each involving a
518 complete rewrite of the architecture's frame code, were carried out by
519 Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
520 Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
521 Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
522 Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
523 Weigand.
524
525 Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
526 Tensilica, Inc.@: contributed support for Xtensa processors. Others
527 who have worked on the Xtensa port of @value{GDBN} in the past include
528 Steve Tjiang, John Newlin, and Scott Foehner.
529
530 Michael Eager and staff of Xilinx, Inc., contributed support for the
531 Xilinx MicroBlaze architecture.
532
533 @node Sample Session
534 @chapter A Sample @value{GDBN} Session
535
536 You can use this manual at your leisure to read all about @value{GDBN}.
537 However, a handful of commands are enough to get started using the
538 debugger. This chapter illustrates those commands.
539
540 @iftex
541 In this sample session, we emphasize user input like this: @b{input},
542 to make it easier to pick out from the surrounding output.
543 @end iftex
544
545 @c FIXME: this example may not be appropriate for some configs, where
546 @c FIXME...primary interest is in remote use.
547
548 One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
549 processor) exhibits the following bug: sometimes, when we change its
550 quote strings from the default, the commands used to capture one macro
551 definition within another stop working. In the following short @code{m4}
552 session, we define a macro @code{foo} which expands to @code{0000}; we
553 then use the @code{m4} built-in @code{defn} to define @code{bar} as the
554 same thing. However, when we change the open quote string to
555 @code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
556 procedure fails to define a new synonym @code{baz}:
557
558 @smallexample
559 $ @b{cd gnu/m4}
560 $ @b{./m4}
561 @b{define(foo,0000)}
562
563 @b{foo}
564 0000
565 @b{define(bar,defn(`foo'))}
566
567 @b{bar}
568 0000
569 @b{changequote(<QUOTE>,<UNQUOTE>)}
570
571 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
572 @b{baz}
573 @b{Ctrl-d}
574 m4: End of input: 0: fatal error: EOF in string
575 @end smallexample
576
577 @noindent
578 Let us use @value{GDBN} to try to see what is going on.
579
580 @smallexample
581 $ @b{@value{GDBP} m4}
582 @c FIXME: this falsifies the exact text played out, to permit smallbook
583 @c FIXME... format to come out better.
584 @value{GDBN} is free software and you are welcome to distribute copies
585 of it under certain conditions; type "show copying" to see
586 the conditions.
587 There is absolutely no warranty for @value{GDBN}; type "show warranty"
588 for details.
589
590 @value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
591 (@value{GDBP})
592 @end smallexample
593
594 @noindent
595 @value{GDBN} reads only enough symbol data to know where to find the
596 rest when needed; as a result, the first prompt comes up very quickly.
597 We now tell @value{GDBN} to use a narrower display width than usual, so
598 that examples fit in this manual.
599
600 @smallexample
601 (@value{GDBP}) @b{set width 70}
602 @end smallexample
603
604 @noindent
605 We need to see how the @code{m4} built-in @code{changequote} works.
606 Having looked at the source, we know the relevant subroutine is
607 @code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
608 @code{break} command.
609
610 @smallexample
611 (@value{GDBP}) @b{break m4_changequote}
612 Breakpoint 1 at 0x62f4: file builtin.c, line 879.
613 @end smallexample
614
615 @noindent
616 Using the @code{run} command, we start @code{m4} running under @value{GDBN}
617 control; as long as control does not reach the @code{m4_changequote}
618 subroutine, the program runs as usual:
619
620 @smallexample
621 (@value{GDBP}) @b{run}
622 Starting program: /work/Editorial/gdb/gnu/m4/m4
623 @b{define(foo,0000)}
624
625 @b{foo}
626 0000
627 @end smallexample
628
629 @noindent
630 To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
631 suspends execution of @code{m4}, displaying information about the
632 context where it stops.
633
634 @smallexample
635 @b{changequote(<QUOTE>,<UNQUOTE>)}
636
637 Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
638 at builtin.c:879
639 879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
640 @end smallexample
641
642 @noindent
643 Now we use the command @code{n} (@code{next}) to advance execution to
644 the next line of the current function.
645
646 @smallexample
647 (@value{GDBP}) @b{n}
648 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
649 : nil,
650 @end smallexample
651
652 @noindent
653 @code{set_quotes} looks like a promising subroutine. We can go into it
654 by using the command @code{s} (@code{step}) instead of @code{next}.
655 @code{step} goes to the next line to be executed in @emph{any}
656 subroutine, so it steps into @code{set_quotes}.
657
658 @smallexample
659 (@value{GDBP}) @b{s}
660 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
661 at input.c:530
662 530 if (lquote != def_lquote)
663 @end smallexample
664
665 @noindent
666 The display that shows the subroutine where @code{m4} is now
667 suspended (and its arguments) is called a stack frame display. It
668 shows a summary of the stack. We can use the @code{backtrace}
669 command (which can also be spelled @code{bt}), to see where we are
670 in the stack as a whole: the @code{backtrace} command displays a
671 stack frame for each active subroutine.
672
673 @smallexample
674 (@value{GDBP}) @b{bt}
675 #0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
676 at input.c:530
677 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
678 at builtin.c:882
679 #2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
680 #3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
681 at macro.c:71
682 #4 0x79dc in expand_input () at macro.c:40
683 #5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
684 @end smallexample
685
686 @noindent
687 We step through a few more lines to see what happens. The first two
688 times, we can use @samp{s}; the next two times we use @code{n} to avoid
689 falling into the @code{xstrdup} subroutine.
690
691 @smallexample
692 (@value{GDBP}) @b{s}
693 0x3b5c 532 if (rquote != def_rquote)
694 (@value{GDBP}) @b{s}
695 0x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
696 def_lquote : xstrdup(lq);
697 (@value{GDBP}) @b{n}
698 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
699 : xstrdup(rq);
700 (@value{GDBP}) @b{n}
701 538 len_lquote = strlen(rquote);
702 @end smallexample
703
704 @noindent
705 The last line displayed looks a little odd; we can examine the variables
706 @code{lquote} and @code{rquote} to see if they are in fact the new left
707 and right quotes we specified. We use the command @code{p}
708 (@code{print}) to see their values.
709
710 @smallexample
711 (@value{GDBP}) @b{p lquote}
712 $1 = 0x35d40 "<QUOTE>"
713 (@value{GDBP}) @b{p rquote}
714 $2 = 0x35d50 "<UNQUOTE>"
715 @end smallexample
716
717 @noindent
718 @code{lquote} and @code{rquote} are indeed the new left and right quotes.
719 To look at some context, we can display ten lines of source
720 surrounding the current line with the @code{l} (@code{list}) command.
721
722 @smallexample
723 (@value{GDBP}) @b{l}
724 533 xfree(rquote);
725 534
726 535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
727 : xstrdup (lq);
728 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
729 : xstrdup (rq);
730 537
731 538 len_lquote = strlen(rquote);
732 539 len_rquote = strlen(lquote);
733 540 @}
734 541
735 542 void
736 @end smallexample
737
738 @noindent
739 Let us step past the two lines that set @code{len_lquote} and
740 @code{len_rquote}, and then examine the values of those variables.
741
742 @smallexample
743 (@value{GDBP}) @b{n}
744 539 len_rquote = strlen(lquote);
745 (@value{GDBP}) @b{n}
746 540 @}
747 (@value{GDBP}) @b{p len_lquote}
748 $3 = 9
749 (@value{GDBP}) @b{p len_rquote}
750 $4 = 7
751 @end smallexample
752
753 @noindent
754 That certainly looks wrong, assuming @code{len_lquote} and
755 @code{len_rquote} are meant to be the lengths of @code{lquote} and
756 @code{rquote} respectively. We can set them to better values using
757 the @code{p} command, since it can print the value of
758 any expression---and that expression can include subroutine calls and
759 assignments.
760
761 @smallexample
762 (@value{GDBP}) @b{p len_lquote=strlen(lquote)}
763 $5 = 7
764 (@value{GDBP}) @b{p len_rquote=strlen(rquote)}
765 $6 = 9
766 @end smallexample
767
768 @noindent
769 Is that enough to fix the problem of using the new quotes with the
770 @code{m4} built-in @code{defn}? We can allow @code{m4} to continue
771 executing with the @code{c} (@code{continue}) command, and then try the
772 example that caused trouble initially:
773
774 @smallexample
775 (@value{GDBP}) @b{c}
776 Continuing.
777
778 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
779
780 baz
781 0000
782 @end smallexample
783
784 @noindent
785 Success! The new quotes now work just as well as the default ones. The
786 problem seems to have been just the two typos defining the wrong
787 lengths. We allow @code{m4} exit by giving it an EOF as input:
788
789 @smallexample
790 @b{Ctrl-d}
791 Program exited normally.
792 @end smallexample
793
794 @noindent
795 The message @samp{Program exited normally.} is from @value{GDBN}; it
796 indicates @code{m4} has finished executing. We can end our @value{GDBN}
797 session with the @value{GDBN} @code{quit} command.
798
799 @smallexample
800 (@value{GDBP}) @b{quit}
801 @end smallexample
802
803 @node Invocation
804 @chapter Getting In and Out of @value{GDBN}
805
806 This chapter discusses how to start @value{GDBN}, and how to get out of it.
807 The essentials are:
808 @itemize @bullet
809 @item
810 type @samp{@value{GDBP}} to start @value{GDBN}.
811 @item
812 type @kbd{quit} or @kbd{Ctrl-d} to exit.
813 @end itemize
814
815 @menu
816 * Invoking GDB:: How to start @value{GDBN}
817 * Quitting GDB:: How to quit @value{GDBN}
818 * Shell Commands:: How to use shell commands inside @value{GDBN}
819 * Logging Output:: How to log @value{GDBN}'s output to a file
820 @end menu
821
822 @node Invoking GDB
823 @section Invoking @value{GDBN}
824
825 Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
826 @value{GDBN} reads commands from the terminal until you tell it to exit.
827
828 You can also run @code{@value{GDBP}} with a variety of arguments and options,
829 to specify more of your debugging environment at the outset.
830
831 The command-line options described here are designed
832 to cover a variety of situations; in some environments, some of these
833 options may effectively be unavailable.
834
835 The most usual way to start @value{GDBN} is with one argument,
836 specifying an executable program:
837
838 @smallexample
839 @value{GDBP} @var{program}
840 @end smallexample
841
842 @noindent
843 You can also start with both an executable program and a core file
844 specified:
845
846 @smallexample
847 @value{GDBP} @var{program} @var{core}
848 @end smallexample
849
850 You can, instead, specify a process ID as a second argument, if you want
851 to debug a running process:
852
853 @smallexample
854 @value{GDBP} @var{program} 1234
855 @end smallexample
856
857 @noindent
858 would attach @value{GDBN} to process @code{1234} (unless you also have a file
859 named @file{1234}; @value{GDBN} does check for a core file first).
860
861 Taking advantage of the second command-line argument requires a fairly
862 complete operating system; when you use @value{GDBN} as a remote
863 debugger attached to a bare board, there may not be any notion of
864 ``process'', and there is often no way to get a core dump. @value{GDBN}
865 will warn you if it is unable to attach or to read core dumps.
866
867 You can optionally have @code{@value{GDBP}} pass any arguments after the
868 executable file to the inferior using @code{--args}. This option stops
869 option processing.
870 @smallexample
871 @value{GDBP} --args gcc -O2 -c foo.c
872 @end smallexample
873 This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
874 @code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
875
876 You can run @code{@value{GDBP}} without printing the front material, which describes
877 @value{GDBN}'s non-warranty, by specifying @code{-silent}:
878
879 @smallexample
880 @value{GDBP} -silent
881 @end smallexample
882
883 @noindent
884 You can further control how @value{GDBN} starts up by using command-line
885 options. @value{GDBN} itself can remind you of the options available.
886
887 @noindent
888 Type
889
890 @smallexample
891 @value{GDBP} -help
892 @end smallexample
893
894 @noindent
895 to display all available options and briefly describe their use
896 (@samp{@value{GDBP} -h} is a shorter equivalent).
897
898 All options and command line arguments you give are processed
899 in sequential order. The order makes a difference when the
900 @samp{-x} option is used.
901
902
903 @menu
904 * File Options:: Choosing files
905 * Mode Options:: Choosing modes
906 * Startup:: What @value{GDBN} does during startup
907 @end menu
908
909 @node File Options
910 @subsection Choosing Files
911
912 When @value{GDBN} starts, it reads any arguments other than options as
913 specifying an executable file and core file (or process ID). This is
914 the same as if the arguments were specified by the @samp{-se} and
915 @samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
916 first argument that does not have an associated option flag as
917 equivalent to the @samp{-se} option followed by that argument; and the
918 second argument that does not have an associated option flag, if any, as
919 equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
920 If the second argument begins with a decimal digit, @value{GDBN} will
921 first attempt to attach to it as a process, and if that fails, attempt
922 to open it as a corefile. If you have a corefile whose name begins with
923 a digit, you can prevent @value{GDBN} from treating it as a pid by
924 prefixing it with @file{./}, e.g.@: @file{./12345}.
925
926 If @value{GDBN} has not been configured to included core file support,
927 such as for most embedded targets, then it will complain about a second
928 argument and ignore it.
929
930 Many options have both long and short forms; both are shown in the
931 following list. @value{GDBN} also recognizes the long forms if you truncate
932 them, so long as enough of the option is present to be unambiguous.
933 (If you prefer, you can flag option arguments with @samp{--} rather
934 than @samp{-}, though we illustrate the more usual convention.)
935
936 @c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
937 @c way, both those who look for -foo and --foo in the index, will find
938 @c it.
939
940 @table @code
941 @item -symbols @var{file}
942 @itemx -s @var{file}
943 @cindex @code{--symbols}
944 @cindex @code{-s}
945 Read symbol table from file @var{file}.
946
947 @item -exec @var{file}
948 @itemx -e @var{file}
949 @cindex @code{--exec}
950 @cindex @code{-e}
951 Use file @var{file} as the executable file to execute when appropriate,
952 and for examining pure data in conjunction with a core dump.
953
954 @item -se @var{file}
955 @cindex @code{--se}
956 Read symbol table from file @var{file} and use it as the executable
957 file.
958
959 @item -core @var{file}
960 @itemx -c @var{file}
961 @cindex @code{--core}
962 @cindex @code{-c}
963 Use file @var{file} as a core dump to examine.
964
965 @item -pid @var{number}
966 @itemx -p @var{number}
967 @cindex @code{--pid}
968 @cindex @code{-p}
969 Connect to process ID @var{number}, as with the @code{attach} command.
970
971 @item -command @var{file}
972 @itemx -x @var{file}
973 @cindex @code{--command}
974 @cindex @code{-x}
975 Execute commands from file @var{file}. The contents of this file is
976 evaluated exactly as the @code{source} command would.
977 @xref{Command Files,, Command files}.
978
979 @item -eval-command @var{command}
980 @itemx -ex @var{command}
981 @cindex @code{--eval-command}
982 @cindex @code{-ex}
983 Execute a single @value{GDBN} command.
984
985 This option may be used multiple times to call multiple commands. It may
986 also be interleaved with @samp{-command} as required.
987
988 @smallexample
989 @value{GDBP} -ex 'target sim' -ex 'load' \
990 -x setbreakpoints -ex 'run' a.out
991 @end smallexample
992
993 @item -init-command @var{file}
994 @itemx -ix @var{file}
995 @cindex @code{--init-command}
996 @cindex @code{-ix}
997 Execute commands from file @var{file} before loading gdbinit files or the
998 inferior.
999 @xref{Startup}.
1000
1001 @item -init-eval-command @var{command}
1002 @itemx -iex @var{command}
1003 @cindex @code{--init-eval-command}
1004 @cindex @code{-iex}
1005 Execute a single @value{GDBN} command before loading gdbinit files or the
1006 inferior.
1007 @xref{Startup}.
1008
1009 @item -directory @var{directory}
1010 @itemx -d @var{directory}
1011 @cindex @code{--directory}
1012 @cindex @code{-d}
1013 Add @var{directory} to the path to search for source and script files.
1014
1015 @item -r
1016 @itemx -readnow
1017 @cindex @code{--readnow}
1018 @cindex @code{-r}
1019 Read each symbol file's entire symbol table immediately, rather than
1020 the default, which is to read it incrementally as it is needed.
1021 This makes startup slower, but makes future operations faster.
1022
1023 @end table
1024
1025 @node Mode Options
1026 @subsection Choosing Modes
1027
1028 You can run @value{GDBN} in various alternative modes---for example, in
1029 batch mode or quiet mode.
1030
1031 @table @code
1032 @item -nx
1033 @itemx -n
1034 @cindex @code{--nx}
1035 @cindex @code{-n}
1036 Do not execute commands found in any initialization files. Normally,
1037 @value{GDBN} executes the commands in these files after all the command
1038 options and arguments have been processed. @xref{Command Files,,Command
1039 Files}.
1040
1041 @item -quiet
1042 @itemx -silent
1043 @itemx -q
1044 @cindex @code{--quiet}
1045 @cindex @code{--silent}
1046 @cindex @code{-q}
1047 ``Quiet''. Do not print the introductory and copyright messages. These
1048 messages are also suppressed in batch mode.
1049
1050 @item -batch
1051 @cindex @code{--batch}
1052 Run in batch mode. Exit with status @code{0} after processing all the
1053 command files specified with @samp{-x} (and all commands from
1054 initialization files, if not inhibited with @samp{-n}). Exit with
1055 nonzero status if an error occurs in executing the @value{GDBN} commands
1056 in the command files. Batch mode also disables pagination, sets unlimited
1057 terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
1058 off} were in effect (@pxref{Messages/Warnings}).
1059
1060 Batch mode may be useful for running @value{GDBN} as a filter, for
1061 example to download and run a program on another computer; in order to
1062 make this more useful, the message
1063
1064 @smallexample
1065 Program exited normally.
1066 @end smallexample
1067
1068 @noindent
1069 (which is ordinarily issued whenever a program running under
1070 @value{GDBN} control terminates) is not issued when running in batch
1071 mode.
1072
1073 @item -batch-silent
1074 @cindex @code{--batch-silent}
1075 Run in batch mode exactly like @samp{-batch}, but totally silently. All
1076 @value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1077 unaffected). This is much quieter than @samp{-silent} and would be useless
1078 for an interactive session.
1079
1080 This is particularly useful when using targets that give @samp{Loading section}
1081 messages, for example.
1082
1083 Note that targets that give their output via @value{GDBN}, as opposed to
1084 writing directly to @code{stdout}, will also be made silent.
1085
1086 @item -return-child-result
1087 @cindex @code{--return-child-result}
1088 The return code from @value{GDBN} will be the return code from the child
1089 process (the process being debugged), with the following exceptions:
1090
1091 @itemize @bullet
1092 @item
1093 @value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1094 internal error. In this case the exit code is the same as it would have been
1095 without @samp{-return-child-result}.
1096 @item
1097 The user quits with an explicit value. E.g., @samp{quit 1}.
1098 @item
1099 The child process never runs, or is not allowed to terminate, in which case
1100 the exit code will be -1.
1101 @end itemize
1102
1103 This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1104 when @value{GDBN} is being used as a remote program loader or simulator
1105 interface.
1106
1107 @item -nowindows
1108 @itemx -nw
1109 @cindex @code{--nowindows}
1110 @cindex @code{-nw}
1111 ``No windows''. If @value{GDBN} comes with a graphical user interface
1112 (GUI) built in, then this option tells @value{GDBN} to only use the command-line
1113 interface. If no GUI is available, this option has no effect.
1114
1115 @item -windows
1116 @itemx -w
1117 @cindex @code{--windows}
1118 @cindex @code{-w}
1119 If @value{GDBN} includes a GUI, then this option requires it to be
1120 used if possible.
1121
1122 @item -cd @var{directory}
1123 @cindex @code{--cd}
1124 Run @value{GDBN} using @var{directory} as its working directory,
1125 instead of the current directory.
1126
1127 @item -data-directory @var{directory}
1128 @cindex @code{--data-directory}
1129 Run @value{GDBN} using @var{directory} as its data directory.
1130 The data directory is where @value{GDBN} searches for its
1131 auxiliary files. @xref{Data Files}.
1132
1133 @item -fullname
1134 @itemx -f
1135 @cindex @code{--fullname}
1136 @cindex @code{-f}
1137 @sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1138 subprocess. It tells @value{GDBN} to output the full file name and line
1139 number in a standard, recognizable fashion each time a stack frame is
1140 displayed (which includes each time your program stops). This
1141 recognizable format looks like two @samp{\032} characters, followed by
1142 the file name, line number and character position separated by colons,
1143 and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1144 @samp{\032} characters as a signal to display the source code for the
1145 frame.
1146
1147 @item -epoch
1148 @cindex @code{--epoch}
1149 The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1150 @value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1151 routines so as to allow Epoch to display values of expressions in a
1152 separate window.
1153
1154 @item -annotate @var{level}
1155 @cindex @code{--annotate}
1156 This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1157 effect is identical to using @samp{set annotate @var{level}}
1158 (@pxref{Annotations}). The annotation @var{level} controls how much
1159 information @value{GDBN} prints together with its prompt, values of
1160 expressions, source lines, and other types of output. Level 0 is the
1161 normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1162 @sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1163 that control @value{GDBN}, and level 2 has been deprecated.
1164
1165 The annotation mechanism has largely been superseded by @sc{gdb/mi}
1166 (@pxref{GDB/MI}).
1167
1168 @item --args
1169 @cindex @code{--args}
1170 Change interpretation of command line so that arguments following the
1171 executable file are passed as command line arguments to the inferior.
1172 This option stops option processing.
1173
1174 @item -baud @var{bps}
1175 @itemx -b @var{bps}
1176 @cindex @code{--baud}
1177 @cindex @code{-b}
1178 Set the line speed (baud rate or bits per second) of any serial
1179 interface used by @value{GDBN} for remote debugging.
1180
1181 @item -l @var{timeout}
1182 @cindex @code{-l}
1183 Set the timeout (in seconds) of any communication used by @value{GDBN}
1184 for remote debugging.
1185
1186 @item -tty @var{device}
1187 @itemx -t @var{device}
1188 @cindex @code{--tty}
1189 @cindex @code{-t}
1190 Run using @var{device} for your program's standard input and output.
1191 @c FIXME: kingdon thinks there is more to -tty. Investigate.
1192
1193 @c resolve the situation of these eventually
1194 @item -tui
1195 @cindex @code{--tui}
1196 Activate the @dfn{Text User Interface} when starting. The Text User
1197 Interface manages several text windows on the terminal, showing
1198 source, assembly, registers and @value{GDBN} command outputs
1199 (@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this
1200 option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
1201 Using @value{GDBN} under @sc{gnu} Emacs}).
1202
1203 @c @item -xdb
1204 @c @cindex @code{--xdb}
1205 @c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1206 @c For information, see the file @file{xdb_trans.html}, which is usually
1207 @c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1208 @c systems.
1209
1210 @item -interpreter @var{interp}
1211 @cindex @code{--interpreter}
1212 Use the interpreter @var{interp} for interface with the controlling
1213 program or device. This option is meant to be set by programs which
1214 communicate with @value{GDBN} using it as a back end.
1215 @xref{Interpreters, , Command Interpreters}.
1216
1217 @samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
1218 @value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
1219 The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
1220 previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1221 selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1222 @sc{gdb/mi} interfaces are no longer supported.
1223
1224 @item -write
1225 @cindex @code{--write}
1226 Open the executable and core files for both reading and writing. This
1227 is equivalent to the @samp{set write on} command inside @value{GDBN}
1228 (@pxref{Patching}).
1229
1230 @item -statistics
1231 @cindex @code{--statistics}
1232 This option causes @value{GDBN} to print statistics about time and
1233 memory usage after it completes each command and returns to the prompt.
1234
1235 @item -version
1236 @cindex @code{--version}
1237 This option causes @value{GDBN} to print its version number and
1238 no-warranty blurb, and exit.
1239
1240 @item -use-deprecated-index-sections
1241 @cindex @code{--use-deprecated-index-sections}
1242 This option causes @value{GDBN} to read and use deprecated
1243 @samp{.gdb_index} sections from symbol files. This can speed up
1244 startup, but may result in some functionality being lost.
1245 @xref{Index Section Format}.
1246
1247 @end table
1248
1249 @node Startup
1250 @subsection What @value{GDBN} Does During Startup
1251 @cindex @value{GDBN} startup
1252
1253 Here's the description of what @value{GDBN} does during session startup:
1254
1255 @enumerate
1256 @item
1257 Sets up the command interpreter as specified by the command line
1258 (@pxref{Mode Options, interpreter}).
1259
1260 @item
1261 Executes commands and command files specified by the @samp{-iex} and
1262 @samp{-ix} options in their specified order. Usually you should use the
1263 @samp{-ex} and @samp{-x} options instead, but this way you can apply
1264 settings before @value{GDBN} init files get executed and before inferior
1265 gets loaded.
1266
1267 @item
1268 @cindex init file
1269 Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1270 used when building @value{GDBN}; @pxref{System-wide configuration,
1271 ,System-wide configuration and settings}) and executes all the commands in
1272 that file.
1273
1274 @item
1275 Reads the init file (if any) in your home directory@footnote{On
1276 DOS/Windows systems, the home directory is the one pointed to by the
1277 @code{HOME} environment variable.} and executes all the commands in
1278 that file.
1279
1280 @item
1281 Processes command line options and operands.
1282
1283 @item
1284 Reads and executes the commands from init file (if any) in the current
1285 working directory. This is only done if the current directory is
1286 different from your home directory. Thus, you can have more than one
1287 init file, one generic in your home directory, and another, specific
1288 to the program you are debugging, in the directory where you invoke
1289 @value{GDBN}.
1290
1291 @item
1292 If the command line specified a program to debug, or a process to
1293 attach to, or a core file, @value{GDBN} loads any auto-loaded
1294 scripts provided for the program or for its loaded shared libraries.
1295 @xref{Auto-loading}.
1296
1297 If you wish to disable the auto-loading during startup,
1298 you must do something like the following:
1299
1300 @smallexample
1301 $ gdb -iex "set auto-load-scripts off" myprogram
1302 @end smallexample
1303
1304 Option @samp{-ex} does not work because the auto-loading is then turned
1305 off too late.
1306
1307 @item
1308 Executes commands and command files specified by the @samp{-ex} and
1309 @samp{-x} options in their specified order. @xref{Command Files}, for
1310 more details about @value{GDBN} command files.
1311
1312 @item
1313 Reads the command history recorded in the @dfn{history file}.
1314 @xref{Command History}, for more details about the command history and the
1315 files where @value{GDBN} records it.
1316 @end enumerate
1317
1318 Init files use the same syntax as @dfn{command files} (@pxref{Command
1319 Files}) and are processed by @value{GDBN} in the same way. The init
1320 file in your home directory can set options (such as @samp{set
1321 complaints}) that affect subsequent processing of command line options
1322 and operands. Init files are not executed if you use the @samp{-nx}
1323 option (@pxref{Mode Options, ,Choosing Modes}).
1324
1325 To display the list of init files loaded by gdb at startup, you
1326 can use @kbd{gdb --help}.
1327
1328 @cindex init file name
1329 @cindex @file{.gdbinit}
1330 @cindex @file{gdb.ini}
1331 The @value{GDBN} init files are normally called @file{.gdbinit}.
1332 The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1333 the limitations of file names imposed by DOS filesystems. The Windows
1334 ports of @value{GDBN} use the standard name, but if they find a
1335 @file{gdb.ini} file, they warn you about that and suggest to rename
1336 the file to the standard name.
1337
1338
1339 @node Quitting GDB
1340 @section Quitting @value{GDBN}
1341 @cindex exiting @value{GDBN}
1342 @cindex leaving @value{GDBN}
1343
1344 @table @code
1345 @kindex quit @r{[}@var{expression}@r{]}
1346 @kindex q @r{(@code{quit})}
1347 @item quit @r{[}@var{expression}@r{]}
1348 @itemx q
1349 To exit @value{GDBN}, use the @code{quit} command (abbreviated
1350 @code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
1351 do not supply @var{expression}, @value{GDBN} will terminate normally;
1352 otherwise it will terminate using the result of @var{expression} as the
1353 error code.
1354 @end table
1355
1356 @cindex interrupt
1357 An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
1358 terminates the action of any @value{GDBN} command that is in progress and
1359 returns to @value{GDBN} command level. It is safe to type the interrupt
1360 character at any time because @value{GDBN} does not allow it to take effect
1361 until a time when it is safe.
1362
1363 If you have been using @value{GDBN} to control an attached process or
1364 device, you can release it with the @code{detach} command
1365 (@pxref{Attach, ,Debugging an Already-running Process}).
1366
1367 @node Shell Commands
1368 @section Shell Commands
1369
1370 If you need to execute occasional shell commands during your
1371 debugging session, there is no need to leave or suspend @value{GDBN}; you can
1372 just use the @code{shell} command.
1373
1374 @table @code
1375 @kindex shell
1376 @kindex !
1377 @cindex shell escape
1378 @item shell @var{command-string}
1379 @itemx !@var{command-string}
1380 Invoke a standard shell to execute @var{command-string}.
1381 Note that no space is needed between @code{!} and @var{command-string}.
1382 If it exists, the environment variable @code{SHELL} determines which
1383 shell to run. Otherwise @value{GDBN} uses the default shell
1384 (@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
1385 @end table
1386
1387 The utility @code{make} is often needed in development environments.
1388 You do not have to use the @code{shell} command for this purpose in
1389 @value{GDBN}:
1390
1391 @table @code
1392 @kindex make
1393 @cindex calling make
1394 @item make @var{make-args}
1395 Execute the @code{make} program with the specified
1396 arguments. This is equivalent to @samp{shell make @var{make-args}}.
1397 @end table
1398
1399 @node Logging Output
1400 @section Logging Output
1401 @cindex logging @value{GDBN} output
1402 @cindex save @value{GDBN} output to a file
1403
1404 You may want to save the output of @value{GDBN} commands to a file.
1405 There are several commands to control @value{GDBN}'s logging.
1406
1407 @table @code
1408 @kindex set logging
1409 @item set logging on
1410 Enable logging.
1411 @item set logging off
1412 Disable logging.
1413 @cindex logging file name
1414 @item set logging file @var{file}
1415 Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1416 @item set logging overwrite [on|off]
1417 By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1418 you want @code{set logging on} to overwrite the logfile instead.
1419 @item set logging redirect [on|off]
1420 By default, @value{GDBN} output will go to both the terminal and the logfile.
1421 Set @code{redirect} if you want output to go only to the log file.
1422 @kindex show logging
1423 @item show logging
1424 Show the current values of the logging settings.
1425 @end table
1426
1427 @node Commands
1428 @chapter @value{GDBN} Commands
1429
1430 You can abbreviate a @value{GDBN} command to the first few letters of the command
1431 name, if that abbreviation is unambiguous; and you can repeat certain
1432 @value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1433 key to get @value{GDBN} to fill out the rest of a word in a command (or to
1434 show you the alternatives available, if there is more than one possibility).
1435
1436 @menu
1437 * Command Syntax:: How to give commands to @value{GDBN}
1438 * Completion:: Command completion
1439 * Help:: How to ask @value{GDBN} for help
1440 @end menu
1441
1442 @node Command Syntax
1443 @section Command Syntax
1444
1445 A @value{GDBN} command is a single line of input. There is no limit on
1446 how long it can be. It starts with a command name, which is followed by
1447 arguments whose meaning depends on the command name. For example, the
1448 command @code{step} accepts an argument which is the number of times to
1449 step, as in @samp{step 5}. You can also use the @code{step} command
1450 with no arguments. Some commands do not allow any arguments.
1451
1452 @cindex abbreviation
1453 @value{GDBN} command names may always be truncated if that abbreviation is
1454 unambiguous. Other possible command abbreviations are listed in the
1455 documentation for individual commands. In some cases, even ambiguous
1456 abbreviations are allowed; for example, @code{s} is specially defined as
1457 equivalent to @code{step} even though there are other commands whose
1458 names start with @code{s}. You can test abbreviations by using them as
1459 arguments to the @code{help} command.
1460
1461 @cindex repeating commands
1462 @kindex RET @r{(repeat last command)}
1463 A blank line as input to @value{GDBN} (typing just @key{RET}) means to
1464 repeat the previous command. Certain commands (for example, @code{run})
1465 will not repeat this way; these are commands whose unintentional
1466 repetition might cause trouble and which you are unlikely to want to
1467 repeat. User-defined commands can disable this feature; see
1468 @ref{Define, dont-repeat}.
1469
1470 The @code{list} and @code{x} commands, when you repeat them with
1471 @key{RET}, construct new arguments rather than repeating
1472 exactly as typed. This permits easy scanning of source or memory.
1473
1474 @value{GDBN} can also use @key{RET} in another way: to partition lengthy
1475 output, in a way similar to the common utility @code{more}
1476 (@pxref{Screen Size,,Screen Size}). Since it is easy to press one
1477 @key{RET} too many in this situation, @value{GDBN} disables command
1478 repetition after any command that generates this sort of display.
1479
1480 @kindex # @r{(a comment)}
1481 @cindex comment
1482 Any text from a @kbd{#} to the end of the line is a comment; it does
1483 nothing. This is useful mainly in command files (@pxref{Command
1484 Files,,Command Files}).
1485
1486 @cindex repeating command sequences
1487 @kindex Ctrl-o @r{(operate-and-get-next)}
1488 The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
1489 commands. This command accepts the current line, like @key{RET}, and
1490 then fetches the next line relative to the current line from the history
1491 for editing.
1492
1493 @node Completion
1494 @section Command Completion
1495
1496 @cindex completion
1497 @cindex word completion
1498 @value{GDBN} can fill in the rest of a word in a command for you, if there is
1499 only one possibility; it can also show you what the valid possibilities
1500 are for the next word in a command, at any time. This works for @value{GDBN}
1501 commands, @value{GDBN} subcommands, and the names of symbols in your program.
1502
1503 Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1504 of a word. If there is only one possibility, @value{GDBN} fills in the
1505 word, and waits for you to finish the command (or press @key{RET} to
1506 enter it). For example, if you type
1507
1508 @c FIXME "@key" does not distinguish its argument sufficiently to permit
1509 @c complete accuracy in these examples; space introduced for clarity.
1510 @c If texinfo enhancements make it unnecessary, it would be nice to
1511 @c replace " @key" by "@key" in the following...
1512 @smallexample
1513 (@value{GDBP}) info bre @key{TAB}
1514 @end smallexample
1515
1516 @noindent
1517 @value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1518 the only @code{info} subcommand beginning with @samp{bre}:
1519
1520 @smallexample
1521 (@value{GDBP}) info breakpoints
1522 @end smallexample
1523
1524 @noindent
1525 You can either press @key{RET} at this point, to run the @code{info
1526 breakpoints} command, or backspace and enter something else, if
1527 @samp{breakpoints} does not look like the command you expected. (If you
1528 were sure you wanted @code{info breakpoints} in the first place, you
1529 might as well just type @key{RET} immediately after @samp{info bre},
1530 to exploit command abbreviations rather than command completion).
1531
1532 If there is more than one possibility for the next word when you press
1533 @key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1534 characters and try again, or just press @key{TAB} a second time;
1535 @value{GDBN} displays all the possible completions for that word. For
1536 example, you might want to set a breakpoint on a subroutine whose name
1537 begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1538 just sounds the bell. Typing @key{TAB} again displays all the
1539 function names in your program that begin with those characters, for
1540 example:
1541
1542 @smallexample
1543 (@value{GDBP}) b make_ @key{TAB}
1544 @exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
1545 make_a_section_from_file make_environ
1546 make_abs_section make_function_type
1547 make_blockvector make_pointer_type
1548 make_cleanup make_reference_type
1549 make_command make_symbol_completion_list
1550 (@value{GDBP}) b make_
1551 @end smallexample
1552
1553 @noindent
1554 After displaying the available possibilities, @value{GDBN} copies your
1555 partial input (@samp{b make_} in the example) so you can finish the
1556 command.
1557
1558 If you just want to see the list of alternatives in the first place, you
1559 can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
1560 means @kbd{@key{META} ?}. You can type this either by holding down a
1561 key designated as the @key{META} shift on your keyboard (if there is
1562 one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
1563
1564 @cindex quotes in commands
1565 @cindex completion of quoted strings
1566 Sometimes the string you need, while logically a ``word'', may contain
1567 parentheses or other characters that @value{GDBN} normally excludes from
1568 its notion of a word. To permit word completion to work in this
1569 situation, you may enclose words in @code{'} (single quote marks) in
1570 @value{GDBN} commands.
1571
1572 The most likely situation where you might need this is in typing the
1573 name of a C@t{++} function. This is because C@t{++} allows function
1574 overloading (multiple definitions of the same function, distinguished
1575 by argument type). For example, when you want to set a breakpoint you
1576 may need to distinguish whether you mean the version of @code{name}
1577 that takes an @code{int} parameter, @code{name(int)}, or the version
1578 that takes a @code{float} parameter, @code{name(float)}. To use the
1579 word-completion facilities in this situation, type a single quote
1580 @code{'} at the beginning of the function name. This alerts
1581 @value{GDBN} that it may need to consider more information than usual
1582 when you press @key{TAB} or @kbd{M-?} to request word completion:
1583
1584 @smallexample
1585 (@value{GDBP}) b 'bubble( @kbd{M-?}
1586 bubble(double,double) bubble(int,int)
1587 (@value{GDBP}) b 'bubble(
1588 @end smallexample
1589
1590 In some cases, @value{GDBN} can tell that completing a name requires using
1591 quotes. When this happens, @value{GDBN} inserts the quote for you (while
1592 completing as much as it can) if you do not type the quote in the first
1593 place:
1594
1595 @smallexample
1596 (@value{GDBP}) b bub @key{TAB}
1597 @exdent @value{GDBN} alters your input line to the following, and rings a bell:
1598 (@value{GDBP}) b 'bubble(
1599 @end smallexample
1600
1601 @noindent
1602 In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1603 you have not yet started typing the argument list when you ask for
1604 completion on an overloaded symbol.
1605
1606 For more information about overloaded functions, see @ref{C Plus Plus
1607 Expressions, ,C@t{++} Expressions}. You can use the command @code{set
1608 overload-resolution off} to disable overload resolution;
1609 see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
1610
1611 @cindex completion of structure field names
1612 @cindex structure field name completion
1613 @cindex completion of union field names
1614 @cindex union field name completion
1615 When completing in an expression which looks up a field in a
1616 structure, @value{GDBN} also tries@footnote{The completer can be
1617 confused by certain kinds of invalid expressions. Also, it only
1618 examines the static type of the expression, not the dynamic type.} to
1619 limit completions to the field names available in the type of the
1620 left-hand-side:
1621
1622 @smallexample
1623 (@value{GDBP}) p gdb_stdout.@kbd{M-?}
1624 magic to_fputs to_rewind
1625 to_data to_isatty to_write
1626 to_delete to_put to_write_async_safe
1627 to_flush to_read
1628 @end smallexample
1629
1630 @noindent
1631 This is because the @code{gdb_stdout} is a variable of the type
1632 @code{struct ui_file} that is defined in @value{GDBN} sources as
1633 follows:
1634
1635 @smallexample
1636 struct ui_file
1637 @{
1638 int *magic;
1639 ui_file_flush_ftype *to_flush;
1640 ui_file_write_ftype *to_write;
1641 ui_file_write_async_safe_ftype *to_write_async_safe;
1642 ui_file_fputs_ftype *to_fputs;
1643 ui_file_read_ftype *to_read;
1644 ui_file_delete_ftype *to_delete;
1645 ui_file_isatty_ftype *to_isatty;
1646 ui_file_rewind_ftype *to_rewind;
1647 ui_file_put_ftype *to_put;
1648 void *to_data;
1649 @}
1650 @end smallexample
1651
1652
1653 @node Help
1654 @section Getting Help
1655 @cindex online documentation
1656 @kindex help
1657
1658 You can always ask @value{GDBN} itself for information on its commands,
1659 using the command @code{help}.
1660
1661 @table @code
1662 @kindex h @r{(@code{help})}
1663 @item help
1664 @itemx h
1665 You can use @code{help} (abbreviated @code{h}) with no arguments to
1666 display a short list of named classes of commands:
1667
1668 @smallexample
1669 (@value{GDBP}) help
1670 List of classes of commands:
1671
1672 aliases -- Aliases of other commands
1673 breakpoints -- Making program stop at certain points
1674 data -- Examining data
1675 files -- Specifying and examining files
1676 internals -- Maintenance commands
1677 obscure -- Obscure features
1678 running -- Running the program
1679 stack -- Examining the stack
1680 status -- Status inquiries
1681 support -- Support facilities
1682 tracepoints -- Tracing of program execution without
1683 stopping the program
1684 user-defined -- User-defined commands
1685
1686 Type "help" followed by a class name for a list of
1687 commands in that class.
1688 Type "help" followed by command name for full
1689 documentation.
1690 Command name abbreviations are allowed if unambiguous.
1691 (@value{GDBP})
1692 @end smallexample
1693 @c the above line break eliminates huge line overfull...
1694
1695 @item help @var{class}
1696 Using one of the general help classes as an argument, you can get a
1697 list of the individual commands in that class. For example, here is the
1698 help display for the class @code{status}:
1699
1700 @smallexample
1701 (@value{GDBP}) help status
1702 Status inquiries.
1703
1704 List of commands:
1705
1706 @c Line break in "show" line falsifies real output, but needed
1707 @c to fit in smallbook page size.
1708 info -- Generic command for showing things
1709 about the program being debugged
1710 show -- Generic command for showing things
1711 about the debugger
1712
1713 Type "help" followed by command name for full
1714 documentation.
1715 Command name abbreviations are allowed if unambiguous.
1716 (@value{GDBP})
1717 @end smallexample
1718
1719 @item help @var{command}
1720 With a command name as @code{help} argument, @value{GDBN} displays a
1721 short paragraph on how to use that command.
1722
1723 @kindex apropos
1724 @item apropos @var{args}
1725 The @code{apropos} command searches through all of the @value{GDBN}
1726 commands, and their documentation, for the regular expression specified in
1727 @var{args}. It prints out all matches found. For example:
1728
1729 @smallexample
1730 apropos alias
1731 @end smallexample
1732
1733 @noindent
1734 results in:
1735
1736 @smallexample
1737 @c @group
1738 alias -- Define a new command that is an alias of an existing command
1739 aliases -- Aliases of other commands
1740 d -- Delete some breakpoints or auto-display expressions
1741 del -- Delete some breakpoints or auto-display expressions
1742 delete -- Delete some breakpoints or auto-display expressions
1743 @c @end group
1744 @end smallexample
1745
1746 @kindex complete
1747 @item complete @var{args}
1748 The @code{complete @var{args}} command lists all the possible completions
1749 for the beginning of a command. Use @var{args} to specify the beginning of the
1750 command you want completed. For example:
1751
1752 @smallexample
1753 complete i
1754 @end smallexample
1755
1756 @noindent results in:
1757
1758 @smallexample
1759 @group
1760 if
1761 ignore
1762 info
1763 inspect
1764 @end group
1765 @end smallexample
1766
1767 @noindent This is intended for use by @sc{gnu} Emacs.
1768 @end table
1769
1770 In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1771 and @code{show} to inquire about the state of your program, or the state
1772 of @value{GDBN} itself. Each command supports many topics of inquiry; this
1773 manual introduces each of them in the appropriate context. The listings
1774 under @code{info} and under @code{show} in the Index point to
1775 all the sub-commands. @xref{Index}.
1776
1777 @c @group
1778 @table @code
1779 @kindex info
1780 @kindex i @r{(@code{info})}
1781 @item info
1782 This command (abbreviated @code{i}) is for describing the state of your
1783 program. For example, you can show the arguments passed to a function
1784 with @code{info args}, list the registers currently in use with @code{info
1785 registers}, or list the breakpoints you have set with @code{info breakpoints}.
1786 You can get a complete list of the @code{info} sub-commands with
1787 @w{@code{help info}}.
1788
1789 @kindex set
1790 @item set
1791 You can assign the result of an expression to an environment variable with
1792 @code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1793 @code{set prompt $}.
1794
1795 @kindex show
1796 @item show
1797 In contrast to @code{info}, @code{show} is for describing the state of
1798 @value{GDBN} itself.
1799 You can change most of the things you can @code{show}, by using the
1800 related command @code{set}; for example, you can control what number
1801 system is used for displays with @code{set radix}, or simply inquire
1802 which is currently in use with @code{show radix}.
1803
1804 @kindex info set
1805 To display all the settable parameters and their current
1806 values, you can use @code{show} with no arguments; you may also use
1807 @code{info set}. Both commands produce the same display.
1808 @c FIXME: "info set" violates the rule that "info" is for state of
1809 @c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1810 @c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1811 @end table
1812 @c @end group
1813
1814 Here are three miscellaneous @code{show} subcommands, all of which are
1815 exceptional in lacking corresponding @code{set} commands:
1816
1817 @table @code
1818 @kindex show version
1819 @cindex @value{GDBN} version number
1820 @item show version
1821 Show what version of @value{GDBN} is running. You should include this
1822 information in @value{GDBN} bug-reports. If multiple versions of
1823 @value{GDBN} are in use at your site, you may need to determine which
1824 version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1825 commands are introduced, and old ones may wither away. Also, many
1826 system vendors ship variant versions of @value{GDBN}, and there are
1827 variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
1828 The version number is the same as the one announced when you start
1829 @value{GDBN}.
1830
1831 @kindex show copying
1832 @kindex info copying
1833 @cindex display @value{GDBN} copyright
1834 @item show copying
1835 @itemx info copying
1836 Display information about permission for copying @value{GDBN}.
1837
1838 @kindex show warranty
1839 @kindex info warranty
1840 @item show warranty
1841 @itemx info warranty
1842 Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
1843 if your version of @value{GDBN} comes with one.
1844
1845 @end table
1846
1847 @node Running
1848 @chapter Running Programs Under @value{GDBN}
1849
1850 When you run a program under @value{GDBN}, you must first generate
1851 debugging information when you compile it.
1852
1853 You may start @value{GDBN} with its arguments, if any, in an environment
1854 of your choice. If you are doing native debugging, you may redirect
1855 your program's input and output, debug an already running process, or
1856 kill a child process.
1857
1858 @menu
1859 * Compilation:: Compiling for debugging
1860 * Starting:: Starting your program
1861 * Arguments:: Your program's arguments
1862 * Environment:: Your program's environment
1863
1864 * Working Directory:: Your program's working directory
1865 * Input/Output:: Your program's input and output
1866 * Attach:: Debugging an already-running process
1867 * Kill Process:: Killing the child process
1868
1869 * Inferiors and Programs:: Debugging multiple inferiors and programs
1870 * Threads:: Debugging programs with multiple threads
1871 * Forks:: Debugging forks
1872 * Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
1873 @end menu
1874
1875 @node Compilation
1876 @section Compiling for Debugging
1877
1878 In order to debug a program effectively, you need to generate
1879 debugging information when you compile it. This debugging information
1880 is stored in the object file; it describes the data type of each
1881 variable or function and the correspondence between source line numbers
1882 and addresses in the executable code.
1883
1884 To request debugging information, specify the @samp{-g} option when you run
1885 the compiler.
1886
1887 Programs that are to be shipped to your customers are compiled with
1888 optimizations, using the @samp{-O} compiler option. However, some
1889 compilers are unable to handle the @samp{-g} and @samp{-O} options
1890 together. Using those compilers, you cannot generate optimized
1891 executables containing debugging information.
1892
1893 @value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
1894 without @samp{-O}, making it possible to debug optimized code. We
1895 recommend that you @emph{always} use @samp{-g} whenever you compile a
1896 program. You may think your program is correct, but there is no sense
1897 in pushing your luck. For more information, see @ref{Optimized Code}.
1898
1899 Older versions of the @sc{gnu} C compiler permitted a variant option
1900 @w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1901 format; if your @sc{gnu} C compiler has this option, do not use it.
1902
1903 @value{GDBN} knows about preprocessor macros and can show you their
1904 expansion (@pxref{Macros}). Most compilers do not include information
1905 about preprocessor macros in the debugging information if you specify
1906 the @option{-g} flag alone. Version 3.1 and later of @value{NGCC},
1907 the @sc{gnu} C compiler, provides macro information if you are using
1908 the DWARF debugging format, and specify the option @option{-g3}.
1909
1910 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
1911 gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more
1912 information on @value{NGCC} options affecting debug information.
1913
1914 You will have the best debugging experience if you use the latest
1915 version of the DWARF debugging format that your compiler supports.
1916 DWARF is currently the most expressive and best supported debugging
1917 format in @value{GDBN}.
1918
1919 @need 2000
1920 @node Starting
1921 @section Starting your Program
1922 @cindex starting
1923 @cindex running
1924
1925 @table @code
1926 @kindex run
1927 @kindex r @r{(@code{run})}
1928 @item run
1929 @itemx r
1930 Use the @code{run} command to start your program under @value{GDBN}.
1931 You must first specify the program name (except on VxWorks) with an
1932 argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1933 @value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1934 (@pxref{Files, ,Commands to Specify Files}).
1935
1936 @end table
1937
1938 If you are running your program in an execution environment that
1939 supports processes, @code{run} creates an inferior process and makes
1940 that process run your program. In some environments without processes,
1941 @code{run} jumps to the start of your program. Other targets,
1942 like @samp{remote}, are always running. If you get an error
1943 message like this one:
1944
1945 @smallexample
1946 The "remote" target does not support "run".
1947 Try "help target" or "continue".
1948 @end smallexample
1949
1950 @noindent
1951 then use @code{continue} to run your program. You may need @code{load}
1952 first (@pxref{load}).
1953
1954 The execution of a program is affected by certain information it
1955 receives from its superior. @value{GDBN} provides ways to specify this
1956 information, which you must do @emph{before} starting your program. (You
1957 can change it after starting your program, but such changes only affect
1958 your program the next time you start it.) This information may be
1959 divided into four categories:
1960
1961 @table @asis
1962 @item The @emph{arguments.}
1963 Specify the arguments to give your program as the arguments of the
1964 @code{run} command. If a shell is available on your target, the shell
1965 is used to pass the arguments, so that you may use normal conventions
1966 (such as wildcard expansion or variable substitution) in describing
1967 the arguments.
1968 In Unix systems, you can control which shell is used with the
1969 @code{SHELL} environment variable.
1970 @xref{Arguments, ,Your Program's Arguments}.
1971
1972 @item The @emph{environment.}
1973 Your program normally inherits its environment from @value{GDBN}, but you can
1974 use the @value{GDBN} commands @code{set environment} and @code{unset
1975 environment} to change parts of the environment that affect
1976 your program. @xref{Environment, ,Your Program's Environment}.
1977
1978 @item The @emph{working directory.}
1979 Your program inherits its working directory from @value{GDBN}. You can set
1980 the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1981 @xref{Working Directory, ,Your Program's Working Directory}.
1982
1983 @item The @emph{standard input and output.}
1984 Your program normally uses the same device for standard input and
1985 standard output as @value{GDBN} is using. You can redirect input and output
1986 in the @code{run} command line, or you can use the @code{tty} command to
1987 set a different device for your program.
1988 @xref{Input/Output, ,Your Program's Input and Output}.
1989
1990 @cindex pipes
1991 @emph{Warning:} While input and output redirection work, you cannot use
1992 pipes to pass the output of the program you are debugging to another
1993 program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1994 wrong program.
1995 @end table
1996
1997 When you issue the @code{run} command, your program begins to execute
1998 immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
1999 of how to arrange for your program to stop. Once your program has
2000 stopped, you may call functions in your program, using the @code{print}
2001 or @code{call} commands. @xref{Data, ,Examining Data}.
2002
2003 If the modification time of your symbol file has changed since the last
2004 time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
2005 table, and reads it again. When it does this, @value{GDBN} tries to retain
2006 your current breakpoints.
2007
2008 @table @code
2009 @kindex start
2010 @item start
2011 @cindex run to main procedure
2012 The name of the main procedure can vary from language to language.
2013 With C or C@t{++}, the main procedure name is always @code{main}, but
2014 other languages such as Ada do not require a specific name for their
2015 main procedure. The debugger provides a convenient way to start the
2016 execution of the program and to stop at the beginning of the main
2017 procedure, depending on the language used.
2018
2019 The @samp{start} command does the equivalent of setting a temporary
2020 breakpoint at the beginning of the main procedure and then invoking
2021 the @samp{run} command.
2022
2023 @cindex elaboration phase
2024 Some programs contain an @dfn{elaboration} phase where some startup code is
2025 executed before the main procedure is called. This depends on the
2026 languages used to write your program. In C@t{++}, for instance,
2027 constructors for static and global objects are executed before
2028 @code{main} is called. It is therefore possible that the debugger stops
2029 before reaching the main procedure. However, the temporary breakpoint
2030 will remain to halt execution.
2031
2032 Specify the arguments to give to your program as arguments to the
2033 @samp{start} command. These arguments will be given verbatim to the
2034 underlying @samp{run} command. Note that the same arguments will be
2035 reused if no argument is provided during subsequent calls to
2036 @samp{start} or @samp{run}.
2037
2038 It is sometimes necessary to debug the program during elaboration. In
2039 these cases, using the @code{start} command would stop the execution of
2040 your program too late, as the program would have already completed the
2041 elaboration phase. Under these circumstances, insert breakpoints in your
2042 elaboration code before running your program.
2043
2044 @kindex set exec-wrapper
2045 @item set exec-wrapper @var{wrapper}
2046 @itemx show exec-wrapper
2047 @itemx unset exec-wrapper
2048 When @samp{exec-wrapper} is set, the specified wrapper is used to
2049 launch programs for debugging. @value{GDBN} starts your program
2050 with a shell command of the form @kbd{exec @var{wrapper}
2051 @var{program}}. Quoting is added to @var{program} and its
2052 arguments, but not to @var{wrapper}, so you should add quotes if
2053 appropriate for your shell. The wrapper runs until it executes
2054 your program, and then @value{GDBN} takes control.
2055
2056 You can use any program that eventually calls @code{execve} with
2057 its arguments as a wrapper. Several standard Unix utilities do
2058 this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
2059 with @code{exec "$@@"} will also work.
2060
2061 For example, you can use @code{env} to pass an environment variable to
2062 the debugged program, without setting the variable in your shell's
2063 environment:
2064
2065 @smallexample
2066 (@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
2067 (@value{GDBP}) run
2068 @end smallexample
2069
2070 This command is available when debugging locally on most targets, excluding
2071 @sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2072
2073 @kindex set disable-randomization
2074 @item set disable-randomization
2075 @itemx set disable-randomization on
2076 This option (enabled by default in @value{GDBN}) will turn off the native
2077 randomization of the virtual address space of the started program. This option
2078 is useful for multiple debugging sessions to make the execution better
2079 reproducible and memory addresses reusable across debugging sessions.
2080
2081 This feature is implemented only on certain targets, including @sc{gnu}/Linux.
2082 On @sc{gnu}/Linux you can get the same behavior using
2083
2084 @smallexample
2085 (@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2086 @end smallexample
2087
2088 @item set disable-randomization off
2089 Leave the behavior of the started executable unchanged. Some bugs rear their
2090 ugly heads only when the program is loaded at certain addresses. If your bug
2091 disappears when you run the program under @value{GDBN}, that might be because
2092 @value{GDBN} by default disables the address randomization on platforms, such
2093 as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2094 disable-randomization off} to try to reproduce such elusive bugs.
2095
2096 On targets where it is available, virtual address space randomization
2097 protects the programs against certain kinds of security attacks. In these
2098 cases the attacker needs to know the exact location of a concrete executable
2099 code. Randomizing its location makes it impossible to inject jumps misusing
2100 a code at its expected addresses.
2101
2102 Prelinking shared libraries provides a startup performance advantage but it
2103 makes addresses in these libraries predictable for privileged processes by
2104 having just unprivileged access at the target system. Reading the shared
2105 library binary gives enough information for assembling the malicious code
2106 misusing it. Still even a prelinked shared library can get loaded at a new
2107 random address just requiring the regular relocation process during the
2108 startup. Shared libraries not already prelinked are always loaded at
2109 a randomly chosen address.
2110
2111 Position independent executables (PIE) contain position independent code
2112 similar to the shared libraries and therefore such executables get loaded at
2113 a randomly chosen address upon startup. PIE executables always load even
2114 already prelinked shared libraries at a random address. You can build such
2115 executable using @command{gcc -fPIE -pie}.
2116
2117 Heap (malloc storage), stack and custom mmap areas are always placed randomly
2118 (as long as the randomization is enabled).
2119
2120 @item show disable-randomization
2121 Show the current setting of the explicit disable of the native randomization of
2122 the virtual address space of the started program.
2123
2124 @end table
2125
2126 @node Arguments
2127 @section Your Program's Arguments
2128
2129 @cindex arguments (to your program)
2130 The arguments to your program can be specified by the arguments of the
2131 @code{run} command.
2132 They are passed to a shell, which expands wildcard characters and
2133 performs redirection of I/O, and thence to your program. Your
2134 @code{SHELL} environment variable (if it exists) specifies what shell
2135 @value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
2136 the default shell (@file{/bin/sh} on Unix).
2137
2138 On non-Unix systems, the program is usually invoked directly by
2139 @value{GDBN}, which emulates I/O redirection via the appropriate system
2140 calls, and the wildcard characters are expanded by the startup code of
2141 the program, not by the shell.
2142
2143 @code{run} with no arguments uses the same arguments used by the previous
2144 @code{run}, or those set by the @code{set args} command.
2145
2146 @table @code
2147 @kindex set args
2148 @item set args
2149 Specify the arguments to be used the next time your program is run. If
2150 @code{set args} has no arguments, @code{run} executes your program
2151 with no arguments. Once you have run your program with arguments,
2152 using @code{set args} before the next @code{run} is the only way to run
2153 it again without arguments.
2154
2155 @kindex show args
2156 @item show args
2157 Show the arguments to give your program when it is started.
2158 @end table
2159
2160 @node Environment
2161 @section Your Program's Environment
2162
2163 @cindex environment (of your program)
2164 The @dfn{environment} consists of a set of environment variables and
2165 their values. Environment variables conventionally record such things as
2166 your user name, your home directory, your terminal type, and your search
2167 path for programs to run. Usually you set up environment variables with
2168 the shell and they are inherited by all the other programs you run. When
2169 debugging, it can be useful to try running your program with a modified
2170 environment without having to start @value{GDBN} over again.
2171
2172 @table @code
2173 @kindex path
2174 @item path @var{directory}
2175 Add @var{directory} to the front of the @code{PATH} environment variable
2176 (the search path for executables) that will be passed to your program.
2177 The value of @code{PATH} used by @value{GDBN} does not change.
2178 You may specify several directory names, separated by whitespace or by a
2179 system-dependent separator character (@samp{:} on Unix, @samp{;} on
2180 MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2181 is moved to the front, so it is searched sooner.
2182
2183 You can use the string @samp{$cwd} to refer to whatever is the current
2184 working directory at the time @value{GDBN} searches the path. If you
2185 use @samp{.} instead, it refers to the directory where you executed the
2186 @code{path} command. @value{GDBN} replaces @samp{.} in the
2187 @var{directory} argument (with the current path) before adding
2188 @var{directory} to the search path.
2189 @c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2190 @c document that, since repeating it would be a no-op.
2191
2192 @kindex show paths
2193 @item show paths
2194 Display the list of search paths for executables (the @code{PATH}
2195 environment variable).
2196
2197 @kindex show environment
2198 @item show environment @r{[}@var{varname}@r{]}
2199 Print the value of environment variable @var{varname} to be given to
2200 your program when it starts. If you do not supply @var{varname},
2201 print the names and values of all environment variables to be given to
2202 your program. You can abbreviate @code{environment} as @code{env}.
2203
2204 @kindex set environment
2205 @item set environment @var{varname} @r{[}=@var{value}@r{]}
2206 Set environment variable @var{varname} to @var{value}. The value
2207 changes for your program only, not for @value{GDBN} itself. @var{value} may
2208 be any string; the values of environment variables are just strings, and
2209 any interpretation is supplied by your program itself. The @var{value}
2210 parameter is optional; if it is eliminated, the variable is set to a
2211 null value.
2212 @c "any string" here does not include leading, trailing
2213 @c blanks. Gnu asks: does anyone care?
2214
2215 For example, this command:
2216
2217 @smallexample
2218 set env USER = foo
2219 @end smallexample
2220
2221 @noindent
2222 tells the debugged program, when subsequently run, that its user is named
2223 @samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2224 are not actually required.)
2225
2226 @kindex unset environment
2227 @item unset environment @var{varname}
2228 Remove variable @var{varname} from the environment to be passed to your
2229 program. This is different from @samp{set env @var{varname} =};
2230 @code{unset environment} removes the variable from the environment,
2231 rather than assigning it an empty value.
2232 @end table
2233
2234 @emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2235 the shell indicated
2236 by your @code{SHELL} environment variable if it exists (or
2237 @code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2238 that runs an initialization file---such as @file{.cshrc} for C-shell, or
2239 @file{.bashrc} for BASH---any variables you set in that file affect
2240 your program. You may wish to move setting of environment variables to
2241 files that are only run when you sign on, such as @file{.login} or
2242 @file{.profile}.
2243
2244 @node Working Directory
2245 @section Your Program's Working Directory
2246
2247 @cindex working directory (of your program)
2248 Each time you start your program with @code{run}, it inherits its
2249 working directory from the current working directory of @value{GDBN}.
2250 The @value{GDBN} working directory is initially whatever it inherited
2251 from its parent process (typically the shell), but you can specify a new
2252 working directory in @value{GDBN} with the @code{cd} command.
2253
2254 The @value{GDBN} working directory also serves as a default for the commands
2255 that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
2256 Specify Files}.
2257
2258 @table @code
2259 @kindex cd
2260 @cindex change working directory
2261 @item cd @var{directory}
2262 Set the @value{GDBN} working directory to @var{directory}.
2263
2264 @kindex pwd
2265 @item pwd
2266 Print the @value{GDBN} working directory.
2267 @end table
2268
2269 It is generally impossible to find the current working directory of
2270 the process being debugged (since a program can change its directory
2271 during its run). If you work on a system where @value{GDBN} is
2272 configured with the @file{/proc} support, you can use the @code{info
2273 proc} command (@pxref{SVR4 Process Information}) to find out the
2274 current working directory of the debuggee.
2275
2276 @node Input/Output
2277 @section Your Program's Input and Output
2278
2279 @cindex redirection
2280 @cindex i/o
2281 @cindex terminal
2282 By default, the program you run under @value{GDBN} does input and output to
2283 the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
2284 to its own terminal modes to interact with you, but it records the terminal
2285 modes your program was using and switches back to them when you continue
2286 running your program.
2287
2288 @table @code
2289 @kindex info terminal
2290 @item info terminal
2291 Displays information recorded by @value{GDBN} about the terminal modes your
2292 program is using.
2293 @end table
2294
2295 You can redirect your program's input and/or output using shell
2296 redirection with the @code{run} command. For example,
2297
2298 @smallexample
2299 run > outfile
2300 @end smallexample
2301
2302 @noindent
2303 starts your program, diverting its output to the file @file{outfile}.
2304
2305 @kindex tty
2306 @cindex controlling terminal
2307 Another way to specify where your program should do input and output is
2308 with the @code{tty} command. This command accepts a file name as
2309 argument, and causes this file to be the default for future @code{run}
2310 commands. It also resets the controlling terminal for the child
2311 process, for future @code{run} commands. For example,
2312
2313 @smallexample
2314 tty /dev/ttyb
2315 @end smallexample
2316
2317 @noindent
2318 directs that processes started with subsequent @code{run} commands
2319 default to do input and output on the terminal @file{/dev/ttyb} and have
2320 that as their controlling terminal.
2321
2322 An explicit redirection in @code{run} overrides the @code{tty} command's
2323 effect on the input/output device, but not its effect on the controlling
2324 terminal.
2325
2326 When you use the @code{tty} command or redirect input in the @code{run}
2327 command, only the input @emph{for your program} is affected. The input
2328 for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2329 for @code{set inferior-tty}.
2330
2331 @cindex inferior tty
2332 @cindex set inferior controlling terminal
2333 You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2334 display the name of the terminal that will be used for future runs of your
2335 program.
2336
2337 @table @code
2338 @item set inferior-tty /dev/ttyb
2339 @kindex set inferior-tty
2340 Set the tty for the program being debugged to /dev/ttyb.
2341
2342 @item show inferior-tty
2343 @kindex show inferior-tty
2344 Show the current tty for the program being debugged.
2345 @end table
2346
2347 @node Attach
2348 @section Debugging an Already-running Process
2349 @kindex attach
2350 @cindex attach
2351
2352 @table @code
2353 @item attach @var{process-id}
2354 This command attaches to a running process---one that was started
2355 outside @value{GDBN}. (@code{info files} shows your active
2356 targets.) The command takes as argument a process ID. The usual way to
2357 find out the @var{process-id} of a Unix process is with the @code{ps} utility,
2358 or with the @samp{jobs -l} shell command.
2359
2360 @code{attach} does not repeat if you press @key{RET} a second time after
2361 executing the command.
2362 @end table
2363
2364 To use @code{attach}, your program must be running in an environment
2365 which supports processes; for example, @code{attach} does not work for
2366 programs on bare-board targets that lack an operating system. You must
2367 also have permission to send the process a signal.
2368
2369 When you use @code{attach}, the debugger finds the program running in
2370 the process first by looking in the current working directory, then (if
2371 the program is not found) by using the source file search path
2372 (@pxref{Source Path, ,Specifying Source Directories}). You can also use
2373 the @code{file} command to load the program. @xref{Files, ,Commands to
2374 Specify Files}.
2375
2376 The first thing @value{GDBN} does after arranging to debug the specified
2377 process is to stop it. You can examine and modify an attached process
2378 with all the @value{GDBN} commands that are ordinarily available when
2379 you start processes with @code{run}. You can insert breakpoints; you
2380 can step and continue; you can modify storage. If you would rather the
2381 process continue running, you may use the @code{continue} command after
2382 attaching @value{GDBN} to the process.
2383
2384 @table @code
2385 @kindex detach
2386 @item detach
2387 When you have finished debugging the attached process, you can use the
2388 @code{detach} command to release it from @value{GDBN} control. Detaching
2389 the process continues its execution. After the @code{detach} command,
2390 that process and @value{GDBN} become completely independent once more, and you
2391 are ready to @code{attach} another process or start one with @code{run}.
2392 @code{detach} does not repeat if you press @key{RET} again after
2393 executing the command.
2394 @end table
2395
2396 If you exit @value{GDBN} while you have an attached process, you detach
2397 that process. If you use the @code{run} command, you kill that process.
2398 By default, @value{GDBN} asks for confirmation if you try to do either of these
2399 things; you can control whether or not you need to confirm by using the
2400 @code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
2401 Messages}).
2402
2403 @node Kill Process
2404 @section Killing the Child Process
2405
2406 @table @code
2407 @kindex kill
2408 @item kill
2409 Kill the child process in which your program is running under @value{GDBN}.
2410 @end table
2411
2412 This command is useful if you wish to debug a core dump instead of a
2413 running process. @value{GDBN} ignores any core dump file while your program
2414 is running.
2415
2416 On some operating systems, a program cannot be executed outside @value{GDBN}
2417 while you have breakpoints set on it inside @value{GDBN}. You can use the
2418 @code{kill} command in this situation to permit running your program
2419 outside the debugger.
2420
2421 The @code{kill} command is also useful if you wish to recompile and
2422 relink your program, since on many systems it is impossible to modify an
2423 executable file while it is running in a process. In this case, when you
2424 next type @code{run}, @value{GDBN} notices that the file has changed, and
2425 reads the symbol table again (while trying to preserve your current
2426 breakpoint settings).
2427
2428 @node Inferiors and Programs
2429 @section Debugging Multiple Inferiors and Programs
2430
2431 @value{GDBN} lets you run and debug multiple programs in a single
2432 session. In addition, @value{GDBN} on some systems may let you run
2433 several programs simultaneously (otherwise you have to exit from one
2434 before starting another). In the most general case, you can have
2435 multiple threads of execution in each of multiple processes, launched
2436 from multiple executables.
2437
2438 @cindex inferior
2439 @value{GDBN} represents the state of each program execution with an
2440 object called an @dfn{inferior}. An inferior typically corresponds to
2441 a process, but is more general and applies also to targets that do not
2442 have processes. Inferiors may be created before a process runs, and
2443 may be retained after a process exits. Inferiors have unique
2444 identifiers that are different from process ids. Usually each
2445 inferior will also have its own distinct address space, although some
2446 embedded targets may have several inferiors running in different parts
2447 of a single address space. Each inferior may in turn have multiple
2448 threads running in it.
2449
2450 To find out what inferiors exist at any moment, use @w{@code{info
2451 inferiors}}:
2452
2453 @table @code
2454 @kindex info inferiors
2455 @item info inferiors
2456 Print a list of all inferiors currently being managed by @value{GDBN}.
2457
2458 @value{GDBN} displays for each inferior (in this order):
2459
2460 @enumerate
2461 @item
2462 the inferior number assigned by @value{GDBN}
2463
2464 @item
2465 the target system's inferior identifier
2466
2467 @item
2468 the name of the executable the inferior is running.
2469
2470 @end enumerate
2471
2472 @noindent
2473 An asterisk @samp{*} preceding the @value{GDBN} inferior number
2474 indicates the current inferior.
2475
2476 For example,
2477 @end table
2478 @c end table here to get a little more width for example
2479
2480 @smallexample
2481 (@value{GDBP}) info inferiors
2482 Num Description Executable
2483 2 process 2307 hello
2484 * 1 process 3401 goodbye
2485 @end smallexample
2486
2487 To switch focus between inferiors, use the @code{inferior} command:
2488
2489 @table @code
2490 @kindex inferior @var{infno}
2491 @item inferior @var{infno}
2492 Make inferior number @var{infno} the current inferior. The argument
2493 @var{infno} is the inferior number assigned by @value{GDBN}, as shown
2494 in the first field of the @samp{info inferiors} display.
2495 @end table
2496
2497
2498 You can get multiple executables into a debugging session via the
2499 @code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2500 systems @value{GDBN} can add inferiors to the debug session
2501 automatically by following calls to @code{fork} and @code{exec}. To
2502 remove inferiors from the debugging session use the
2503 @w{@code{remove-inferiors}} command.
2504
2505 @table @code
2506 @kindex add-inferior
2507 @item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2508 Adds @var{n} inferiors to be run using @var{executable} as the
2509 executable. @var{n} defaults to 1. If no executable is specified,
2510 the inferiors begins empty, with no program. You can still assign or
2511 change the program assigned to the inferior at any time by using the
2512 @code{file} command with the executable name as its argument.
2513
2514 @kindex clone-inferior
2515 @item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2516 Adds @var{n} inferiors ready to execute the same program as inferior
2517 @var{infno}. @var{n} defaults to 1. @var{infno} defaults to the
2518 number of the current inferior. This is a convenient command when you
2519 want to run another instance of the inferior you are debugging.
2520
2521 @smallexample
2522 (@value{GDBP}) info inferiors
2523 Num Description Executable
2524 * 1 process 29964 helloworld
2525 (@value{GDBP}) clone-inferior
2526 Added inferior 2.
2527 1 inferiors added.
2528 (@value{GDBP}) info inferiors
2529 Num Description Executable
2530 2 <null> helloworld
2531 * 1 process 29964 helloworld
2532 @end smallexample
2533
2534 You can now simply switch focus to inferior 2 and run it.
2535
2536 @kindex remove-inferiors
2537 @item remove-inferiors @var{infno}@dots{}
2538 Removes the inferior or inferiors @var{infno}@dots{}. It is not
2539 possible to remove an inferior that is running with this command. For
2540 those, use the @code{kill} or @code{detach} command first.
2541
2542 @end table
2543
2544 To quit debugging one of the running inferiors that is not the current
2545 inferior, you can either detach from it by using the @w{@code{detach
2546 inferior}} command (allowing it to run independently), or kill it
2547 using the @w{@code{kill inferiors}} command:
2548
2549 @table @code
2550 @kindex detach inferiors @var{infno}@dots{}
2551 @item detach inferior @var{infno}@dots{}
2552 Detach from the inferior or inferiors identified by @value{GDBN}
2553 inferior number(s) @var{infno}@dots{}. Note that the inferior's entry
2554 still stays on the list of inferiors shown by @code{info inferiors},
2555 but its Description will show @samp{<null>}.
2556
2557 @kindex kill inferiors @var{infno}@dots{}
2558 @item kill inferiors @var{infno}@dots{}
2559 Kill the inferior or inferiors identified by @value{GDBN} inferior
2560 number(s) @var{infno}@dots{}. Note that the inferior's entry still
2561 stays on the list of inferiors shown by @code{info inferiors}, but its
2562 Description will show @samp{<null>}.
2563 @end table
2564
2565 After the successful completion of a command such as @code{detach},
2566 @code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after
2567 a normal process exit, the inferior is still valid and listed with
2568 @code{info inferiors}, ready to be restarted.
2569
2570
2571 To be notified when inferiors are started or exit under @value{GDBN}'s
2572 control use @w{@code{set print inferior-events}}:
2573
2574 @table @code
2575 @kindex set print inferior-events
2576 @cindex print messages on inferior start and exit
2577 @item set print inferior-events
2578 @itemx set print inferior-events on
2579 @itemx set print inferior-events off
2580 The @code{set print inferior-events} command allows you to enable or
2581 disable printing of messages when @value{GDBN} notices that new
2582 inferiors have started or that inferiors have exited or have been
2583 detached. By default, these messages will not be printed.
2584
2585 @kindex show print inferior-events
2586 @item show print inferior-events
2587 Show whether messages will be printed when @value{GDBN} detects that
2588 inferiors have started, exited or have been detached.
2589 @end table
2590
2591 Many commands will work the same with multiple programs as with a
2592 single program: e.g., @code{print myglobal} will simply display the
2593 value of @code{myglobal} in the current inferior.
2594
2595
2596 Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2597 get more info about the relationship of inferiors, programs, address
2598 spaces in a debug session. You can do that with the @w{@code{maint
2599 info program-spaces}} command.
2600
2601 @table @code
2602 @kindex maint info program-spaces
2603 @item maint info program-spaces
2604 Print a list of all program spaces currently being managed by
2605 @value{GDBN}.
2606
2607 @value{GDBN} displays for each program space (in this order):
2608
2609 @enumerate
2610 @item
2611 the program space number assigned by @value{GDBN}
2612
2613 @item
2614 the name of the executable loaded into the program space, with e.g.,
2615 the @code{file} command.
2616
2617 @end enumerate
2618
2619 @noindent
2620 An asterisk @samp{*} preceding the @value{GDBN} program space number
2621 indicates the current program space.
2622
2623 In addition, below each program space line, @value{GDBN} prints extra
2624 information that isn't suitable to display in tabular form. For
2625 example, the list of inferiors bound to the program space.
2626
2627 @smallexample
2628 (@value{GDBP}) maint info program-spaces
2629 Id Executable
2630 2 goodbye
2631 Bound inferiors: ID 1 (process 21561)
2632 * 1 hello
2633 @end smallexample
2634
2635 Here we can see that no inferior is running the program @code{hello},
2636 while @code{process 21561} is running the program @code{goodbye}. On
2637 some targets, it is possible that multiple inferiors are bound to the
2638 same program space. The most common example is that of debugging both
2639 the parent and child processes of a @code{vfork} call. For example,
2640
2641 @smallexample
2642 (@value{GDBP}) maint info program-spaces
2643 Id Executable
2644 * 1 vfork-test
2645 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2646 @end smallexample
2647
2648 Here, both inferior 2 and inferior 1 are running in the same program
2649 space as a result of inferior 1 having executed a @code{vfork} call.
2650 @end table
2651
2652 @node Threads
2653 @section Debugging Programs with Multiple Threads
2654
2655 @cindex threads of execution
2656 @cindex multiple threads
2657 @cindex switching threads
2658 In some operating systems, such as HP-UX and Solaris, a single program
2659 may have more than one @dfn{thread} of execution. The precise semantics
2660 of threads differ from one operating system to another, but in general
2661 the threads of a single program are akin to multiple processes---except
2662 that they share one address space (that is, they can all examine and
2663 modify the same variables). On the other hand, each thread has its own
2664 registers and execution stack, and perhaps private memory.
2665
2666 @value{GDBN} provides these facilities for debugging multi-thread
2667 programs:
2668
2669 @itemize @bullet
2670 @item automatic notification of new threads
2671 @item @samp{thread @var{threadno}}, a command to switch among threads
2672 @item @samp{info threads}, a command to inquire about existing threads
2673 @item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
2674 a command to apply a command to a list of threads
2675 @item thread-specific breakpoints
2676 @item @samp{set print thread-events}, which controls printing of
2677 messages on thread start and exit.
2678 @item @samp{set libthread-db-search-path @var{path}}, which lets
2679 the user specify which @code{libthread_db} to use if the default choice
2680 isn't compatible with the program.
2681 @end itemize
2682
2683 @quotation
2684 @emph{Warning:} These facilities are not yet available on every
2685 @value{GDBN} configuration where the operating system supports threads.
2686 If your @value{GDBN} does not support threads, these commands have no
2687 effect. For example, a system without thread support shows no output
2688 from @samp{info threads}, and always rejects the @code{thread} command,
2689 like this:
2690
2691 @smallexample
2692 (@value{GDBP}) info threads
2693 (@value{GDBP}) thread 1
2694 Thread ID 1 not known. Use the "info threads" command to
2695 see the IDs of currently known threads.
2696 @end smallexample
2697 @c FIXME to implementors: how hard would it be to say "sorry, this GDB
2698 @c doesn't support threads"?
2699 @end quotation
2700
2701 @cindex focus of debugging
2702 @cindex current thread
2703 The @value{GDBN} thread debugging facility allows you to observe all
2704 threads while your program runs---but whenever @value{GDBN} takes
2705 control, one thread in particular is always the focus of debugging.
2706 This thread is called the @dfn{current thread}. Debugging commands show
2707 program information from the perspective of the current thread.
2708
2709 @cindex @code{New} @var{systag} message
2710 @cindex thread identifier (system)
2711 @c FIXME-implementors!! It would be more helpful if the [New...] message
2712 @c included GDB's numeric thread handle, so you could just go to that
2713 @c thread without first checking `info threads'.
2714 Whenever @value{GDBN} detects a new thread in your program, it displays
2715 the target system's identification for the thread with a message in the
2716 form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2717 whose form varies depending on the particular system. For example, on
2718 @sc{gnu}/Linux, you might see
2719
2720 @smallexample
2721 [New Thread 0x41e02940 (LWP 25582)]
2722 @end smallexample
2723
2724 @noindent
2725 when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2726 the @var{systag} is simply something like @samp{process 368}, with no
2727 further qualifier.
2728
2729 @c FIXME!! (1) Does the [New...] message appear even for the very first
2730 @c thread of a program, or does it only appear for the
2731 @c second---i.e.@: when it becomes obvious we have a multithread
2732 @c program?
2733 @c (2) *Is* there necessarily a first thread always? Or do some
2734 @c multithread systems permit starting a program with multiple
2735 @c threads ab initio?
2736
2737 @cindex thread number
2738 @cindex thread identifier (GDB)
2739 For debugging purposes, @value{GDBN} associates its own thread
2740 number---always a single integer---with each thread in your program.
2741
2742 @table @code
2743 @kindex info threads
2744 @item info threads @r{[}@var{id}@dots{}@r{]}
2745 Display a summary of all threads currently in your program. Optional
2746 argument @var{id}@dots{} is one or more thread ids separated by spaces, and
2747 means to print information only about the specified thread or threads.
2748 @value{GDBN} displays for each thread (in this order):
2749
2750 @enumerate
2751 @item
2752 the thread number assigned by @value{GDBN}
2753
2754 @item
2755 the target system's thread identifier (@var{systag})
2756
2757 @item
2758 the thread's name, if one is known. A thread can either be named by
2759 the user (see @code{thread name}, below), or, in some cases, by the
2760 program itself.
2761
2762 @item
2763 the current stack frame summary for that thread
2764 @end enumerate
2765
2766 @noindent
2767 An asterisk @samp{*} to the left of the @value{GDBN} thread number
2768 indicates the current thread.
2769
2770 For example,
2771 @end table
2772 @c end table here to get a little more width for example
2773
2774 @smallexample
2775 (@value{GDBP}) info threads
2776 Id Target Id Frame
2777 3 process 35 thread 27 0x34e5 in sigpause ()
2778 2 process 35 thread 23 0x34e5 in sigpause ()
2779 * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2780 at threadtest.c:68
2781 @end smallexample
2782
2783 On Solaris, you can display more information about user threads with a
2784 Solaris-specific command:
2785
2786 @table @code
2787 @item maint info sol-threads
2788 @kindex maint info sol-threads
2789 @cindex thread info (Solaris)
2790 Display info on Solaris user threads.
2791 @end table
2792
2793 @table @code
2794 @kindex thread @var{threadno}
2795 @item thread @var{threadno}
2796 Make thread number @var{threadno} the current thread. The command
2797 argument @var{threadno} is the internal @value{GDBN} thread number, as
2798 shown in the first field of the @samp{info threads} display.
2799 @value{GDBN} responds by displaying the system identifier of the thread
2800 you selected, and its current stack frame summary:
2801
2802 @smallexample
2803 (@value{GDBP}) thread 2
2804 [Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))]
2805 #0 some_function (ignore=0x0) at example.c:8
2806 8 printf ("hello\n");
2807 @end smallexample
2808
2809 @noindent
2810 As with the @samp{[New @dots{}]} message, the form of the text after
2811 @samp{Switching to} depends on your system's conventions for identifying
2812 threads.
2813
2814 @vindex $_thread@r{, convenience variable}
2815 The debugger convenience variable @samp{$_thread} contains the number
2816 of the current thread. You may find this useful in writing breakpoint
2817 conditional expressions, command scripts, and so forth. See
2818 @xref{Convenience Vars,, Convenience Variables}, for general
2819 information on convenience variables.
2820
2821 @kindex thread apply
2822 @cindex apply command to several threads
2823 @item thread apply [@var{threadno} | all] @var{command}
2824 The @code{thread apply} command allows you to apply the named
2825 @var{command} to one or more threads. Specify the numbers of the
2826 threads that you want affected with the command argument
2827 @var{threadno}. It can be a single thread number, one of the numbers
2828 shown in the first field of the @samp{info threads} display; or it
2829 could be a range of thread numbers, as in @code{2-4}. To apply a
2830 command to all threads, type @kbd{thread apply all @var{command}}.
2831
2832 @kindex thread name
2833 @cindex name a thread
2834 @item thread name [@var{name}]
2835 This command assigns a name to the current thread. If no argument is
2836 given, any existing user-specified name is removed. The thread name
2837 appears in the @samp{info threads} display.
2838
2839 On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to
2840 determine the name of the thread as given by the OS. On these
2841 systems, a name specified with @samp{thread name} will override the
2842 system-give name, and removing the user-specified name will cause
2843 @value{GDBN} to once again display the system-specified name.
2844
2845 @kindex thread find
2846 @cindex search for a thread
2847 @item thread find [@var{regexp}]
2848 Search for and display thread ids whose name or @var{systag}
2849 matches the supplied regular expression.
2850
2851 As well as being the complement to the @samp{thread name} command,
2852 this command also allows you to identify a thread by its target
2853 @var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag}
2854 is the LWP id.
2855
2856 @smallexample
2857 (@value{GDBN}) thread find 26688
2858 Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)'
2859 (@value{GDBN}) info thread 4
2860 Id Target Id Frame
2861 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select ()
2862 @end smallexample
2863
2864 @kindex set print thread-events
2865 @cindex print messages on thread start and exit
2866 @item set print thread-events
2867 @itemx set print thread-events on
2868 @itemx set print thread-events off
2869 The @code{set print thread-events} command allows you to enable or
2870 disable printing of messages when @value{GDBN} notices that new threads have
2871 started or that threads have exited. By default, these messages will
2872 be printed if detection of these events is supported by the target.
2873 Note that these messages cannot be disabled on all targets.
2874
2875 @kindex show print thread-events
2876 @item show print thread-events
2877 Show whether messages will be printed when @value{GDBN} detects that threads
2878 have started and exited.
2879 @end table
2880
2881 @xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
2882 more information about how @value{GDBN} behaves when you stop and start
2883 programs with multiple threads.
2884
2885 @xref{Set Watchpoints,,Setting Watchpoints}, for information about
2886 watchpoints in programs with multiple threads.
2887
2888 @table @code
2889 @kindex set libthread-db-search-path
2890 @cindex search path for @code{libthread_db}
2891 @item set libthread-db-search-path @r{[}@var{path}@r{]}
2892 If this variable is set, @var{path} is a colon-separated list of
2893 directories @value{GDBN} will use to search for @code{libthread_db}.
2894 If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
2895 its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems).
2896 Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH}
2897 macro.
2898
2899 On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2900 @code{libthread_db} library to obtain information about threads in the
2901 inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
2902 to find @code{libthread_db}.
2903
2904 A special entry @samp{$sdir} for @samp{libthread-db-search-path}
2905 refers to the default system directories that are
2906 normally searched for loading shared libraries.
2907
2908 A special entry @samp{$pdir} for @samp{libthread-db-search-path}
2909 refers to the directory from which @code{libpthread}
2910 was loaded in the inferior process.
2911
2912 For any @code{libthread_db} library @value{GDBN} finds in above directories,
2913 @value{GDBN} attempts to initialize it with the current inferior process.
2914 If this initialization fails (which could happen because of a version
2915 mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2916 will unload @code{libthread_db}, and continue with the next directory.
2917 If none of @code{libthread_db} libraries initialize successfully,
2918 @value{GDBN} will issue a warning and thread debugging will be disabled.
2919
2920 Setting @code{libthread-db-search-path} is currently implemented
2921 only on some platforms.
2922
2923 @kindex show libthread-db-search-path
2924 @item show libthread-db-search-path
2925 Display current libthread_db search path.
2926
2927 @kindex set debug libthread-db
2928 @kindex show debug libthread-db
2929 @cindex debugging @code{libthread_db}
2930 @item set debug libthread-db
2931 @itemx show debug libthread-db
2932 Turns on or off display of @code{libthread_db}-related events.
2933 Use @code{1} to enable, @code{0} to disable.
2934 @end table
2935
2936 @node Forks
2937 @section Debugging Forks
2938
2939 @cindex fork, debugging programs which call
2940 @cindex multiple processes
2941 @cindex processes, multiple
2942 On most systems, @value{GDBN} has no special support for debugging
2943 programs which create additional processes using the @code{fork}
2944 function. When a program forks, @value{GDBN} will continue to debug the
2945 parent process and the child process will run unimpeded. If you have
2946 set a breakpoint in any code which the child then executes, the child
2947 will get a @code{SIGTRAP} signal which (unless it catches the signal)
2948 will cause it to terminate.
2949
2950 However, if you want to debug the child process there is a workaround
2951 which isn't too painful. Put a call to @code{sleep} in the code which
2952 the child process executes after the fork. It may be useful to sleep
2953 only if a certain environment variable is set, or a certain file exists,
2954 so that the delay need not occur when you don't want to run @value{GDBN}
2955 on the child. While the child is sleeping, use the @code{ps} program to
2956 get its process ID. Then tell @value{GDBN} (a new invocation of
2957 @value{GDBN} if you are also debugging the parent process) to attach to
2958 the child process (@pxref{Attach}). From that point on you can debug
2959 the child process just like any other process which you attached to.
2960
2961 On some systems, @value{GDBN} provides support for debugging programs that
2962 create additional processes using the @code{fork} or @code{vfork} functions.
2963 Currently, the only platforms with this feature are HP-UX (11.x and later
2964 only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
2965
2966 By default, when a program forks, @value{GDBN} will continue to debug
2967 the parent process and the child process will run unimpeded.
2968
2969 If you want to follow the child process instead of the parent process,
2970 use the command @w{@code{set follow-fork-mode}}.
2971
2972 @table @code
2973 @kindex set follow-fork-mode
2974 @item set follow-fork-mode @var{mode}
2975 Set the debugger response to a program call of @code{fork} or
2976 @code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2977 process. The @var{mode} argument can be:
2978
2979 @table @code
2980 @item parent
2981 The original process is debugged after a fork. The child process runs
2982 unimpeded. This is the default.
2983
2984 @item child
2985 The new process is debugged after a fork. The parent process runs
2986 unimpeded.
2987
2988 @end table
2989
2990 @kindex show follow-fork-mode
2991 @item show follow-fork-mode
2992 Display the current debugger response to a @code{fork} or @code{vfork} call.
2993 @end table
2994
2995 @cindex debugging multiple processes
2996 On Linux, if you want to debug both the parent and child processes, use the
2997 command @w{@code{set detach-on-fork}}.
2998
2999 @table @code
3000 @kindex set detach-on-fork
3001 @item set detach-on-fork @var{mode}
3002 Tells gdb whether to detach one of the processes after a fork, or
3003 retain debugger control over them both.
3004
3005 @table @code
3006 @item on
3007 The child process (or parent process, depending on the value of
3008 @code{follow-fork-mode}) will be detached and allowed to run
3009 independently. This is the default.
3010
3011 @item off
3012 Both processes will be held under the control of @value{GDBN}.
3013 One process (child or parent, depending on the value of
3014 @code{follow-fork-mode}) is debugged as usual, while the other
3015 is held suspended.
3016
3017 @end table
3018
3019 @kindex show detach-on-fork
3020 @item show detach-on-fork
3021 Show whether detach-on-fork mode is on/off.
3022 @end table
3023
3024 If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
3025 will retain control of all forked processes (including nested forks).
3026 You can list the forked processes under the control of @value{GDBN} by
3027 using the @w{@code{info inferiors}} command, and switch from one fork
3028 to another by using the @code{inferior} command (@pxref{Inferiors and
3029 Programs, ,Debugging Multiple Inferiors and Programs}).
3030
3031 To quit debugging one of the forked processes, you can either detach
3032 from it by using the @w{@code{detach inferiors}} command (allowing it
3033 to run independently), or kill it using the @w{@code{kill inferiors}}
3034 command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
3035 and Programs}.
3036
3037 If you ask to debug a child process and a @code{vfork} is followed by an
3038 @code{exec}, @value{GDBN} executes the new target up to the first
3039 breakpoint in the new target. If you have a breakpoint set on
3040 @code{main} in your original program, the breakpoint will also be set on
3041 the child process's @code{main}.
3042
3043 On some systems, when a child process is spawned by @code{vfork}, you
3044 cannot debug the child or parent until an @code{exec} call completes.
3045
3046 If you issue a @code{run} command to @value{GDBN} after an @code{exec}
3047 call executes, the new target restarts. To restart the parent
3048 process, use the @code{file} command with the parent executable name
3049 as its argument. By default, after an @code{exec} call executes,
3050 @value{GDBN} discards the symbols of the previous executable image.
3051 You can change this behaviour with the @w{@code{set follow-exec-mode}}
3052 command.
3053
3054 @table @code
3055 @kindex set follow-exec-mode
3056 @item set follow-exec-mode @var{mode}
3057
3058 Set debugger response to a program call of @code{exec}. An
3059 @code{exec} call replaces the program image of a process.
3060
3061 @code{follow-exec-mode} can be:
3062
3063 @table @code
3064 @item new
3065 @value{GDBN} creates a new inferior and rebinds the process to this
3066 new inferior. The program the process was running before the
3067 @code{exec} call can be restarted afterwards by restarting the
3068 original inferior.
3069
3070 For example:
3071
3072 @smallexample
3073 (@value{GDBP}) info inferiors
3074 (gdb) info inferior
3075 Id Description Executable
3076 * 1 <null> prog1
3077 (@value{GDBP}) run
3078 process 12020 is executing new program: prog2
3079 Program exited normally.
3080 (@value{GDBP}) info inferiors
3081 Id Description Executable
3082 * 2 <null> prog2
3083 1 <null> prog1
3084 @end smallexample
3085
3086 @item same
3087 @value{GDBN} keeps the process bound to the same inferior. The new
3088 executable image replaces the previous executable loaded in the
3089 inferior. Restarting the inferior after the @code{exec} call, with
3090 e.g., the @code{run} command, restarts the executable the process was
3091 running after the @code{exec} call. This is the default mode.
3092
3093 For example:
3094
3095 @smallexample
3096 (@value{GDBP}) info inferiors
3097 Id Description Executable
3098 * 1 <null> prog1
3099 (@value{GDBP}) run
3100 process 12020 is executing new program: prog2
3101 Program exited normally.
3102 (@value{GDBP}) info inferiors
3103 Id Description Executable
3104 * 1 <null> prog2
3105 @end smallexample
3106
3107 @end table
3108 @end table
3109
3110 You can use the @code{catch} command to make @value{GDBN} stop whenever
3111 a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
3112 Catchpoints, ,Setting Catchpoints}.
3113
3114 @node Checkpoint/Restart
3115 @section Setting a @emph{Bookmark} to Return to Later
3116
3117 @cindex checkpoint
3118 @cindex restart
3119 @cindex bookmark
3120 @cindex snapshot of a process
3121 @cindex rewind program state
3122
3123 On certain operating systems@footnote{Currently, only
3124 @sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3125 program's state, called a @dfn{checkpoint}, and come back to it
3126 later.
3127
3128 Returning to a checkpoint effectively undoes everything that has
3129 happened in the program since the @code{checkpoint} was saved. This
3130 includes changes in memory, registers, and even (within some limits)
3131 system state. Effectively, it is like going back in time to the
3132 moment when the checkpoint was saved.
3133
3134 Thus, if you're stepping thru a program and you think you're
3135 getting close to the point where things go wrong, you can save
3136 a checkpoint. Then, if you accidentally go too far and miss
3137 the critical statement, instead of having to restart your program
3138 from the beginning, you can just go back to the checkpoint and
3139 start again from there.
3140
3141 This can be especially useful if it takes a lot of time or
3142 steps to reach the point where you think the bug occurs.
3143
3144 To use the @code{checkpoint}/@code{restart} method of debugging:
3145
3146 @table @code
3147 @kindex checkpoint
3148 @item checkpoint
3149 Save a snapshot of the debugged program's current execution state.
3150 The @code{checkpoint} command takes no arguments, but each checkpoint
3151 is assigned a small integer id, similar to a breakpoint id.
3152
3153 @kindex info checkpoints
3154 @item info checkpoints
3155 List the checkpoints that have been saved in the current debugging
3156 session. For each checkpoint, the following information will be
3157 listed:
3158
3159 @table @code
3160 @item Checkpoint ID
3161 @item Process ID
3162 @item Code Address
3163 @item Source line, or label
3164 @end table
3165
3166 @kindex restart @var{checkpoint-id}
3167 @item restart @var{checkpoint-id}
3168 Restore the program state that was saved as checkpoint number
3169 @var{checkpoint-id}. All program variables, registers, stack frames
3170 etc.@: will be returned to the values that they had when the checkpoint
3171 was saved. In essence, gdb will ``wind back the clock'' to the point
3172 in time when the checkpoint was saved.
3173
3174 Note that breakpoints, @value{GDBN} variables, command history etc.
3175 are not affected by restoring a checkpoint. In general, a checkpoint
3176 only restores things that reside in the program being debugged, not in
3177 the debugger.
3178
3179 @kindex delete checkpoint @var{checkpoint-id}
3180 @item delete checkpoint @var{checkpoint-id}
3181 Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3182
3183 @end table
3184
3185 Returning to a previously saved checkpoint will restore the user state
3186 of the program being debugged, plus a significant subset of the system
3187 (OS) state, including file pointers. It won't ``un-write'' data from
3188 a file, but it will rewind the file pointer to the previous location,
3189 so that the previously written data can be overwritten. For files
3190 opened in read mode, the pointer will also be restored so that the
3191 previously read data can be read again.
3192
3193 Of course, characters that have been sent to a printer (or other
3194 external device) cannot be ``snatched back'', and characters received
3195 from eg.@: a serial device can be removed from internal program buffers,
3196 but they cannot be ``pushed back'' into the serial pipeline, ready to
3197 be received again. Similarly, the actual contents of files that have
3198 been changed cannot be restored (at this time).
3199
3200 However, within those constraints, you actually can ``rewind'' your
3201 program to a previously saved point in time, and begin debugging it
3202 again --- and you can change the course of events so as to debug a
3203 different execution path this time.
3204
3205 @cindex checkpoints and process id
3206 Finally, there is one bit of internal program state that will be
3207 different when you return to a checkpoint --- the program's process
3208 id. Each checkpoint will have a unique process id (or @var{pid}),
3209 and each will be different from the program's original @var{pid}.
3210 If your program has saved a local copy of its process id, this could
3211 potentially pose a problem.
3212
3213 @subsection A Non-obvious Benefit of Using Checkpoints
3214
3215 On some systems such as @sc{gnu}/Linux, address space randomization
3216 is performed on new processes for security reasons. This makes it
3217 difficult or impossible to set a breakpoint, or watchpoint, on an
3218 absolute address if you have to restart the program, since the
3219 absolute location of a symbol will change from one execution to the
3220 next.
3221
3222 A checkpoint, however, is an @emph{identical} copy of a process.
3223 Therefore if you create a checkpoint at (eg.@:) the start of main,
3224 and simply return to that checkpoint instead of restarting the
3225 process, you can avoid the effects of address randomization and
3226 your symbols will all stay in the same place.
3227
3228 @node Stopping
3229 @chapter Stopping and Continuing
3230
3231 The principal purposes of using a debugger are so that you can stop your
3232 program before it terminates; or so that, if your program runs into
3233 trouble, you can investigate and find out why.
3234
3235 Inside @value{GDBN}, your program may stop for any of several reasons,
3236 such as a signal, a breakpoint, or reaching a new line after a
3237 @value{GDBN} command such as @code{step}. You may then examine and
3238 change variables, set new breakpoints or remove old ones, and then
3239 continue execution. Usually, the messages shown by @value{GDBN} provide
3240 ample explanation of the status of your program---but you can also
3241 explicitly request this information at any time.
3242
3243 @table @code
3244 @kindex info program
3245 @item info program
3246 Display information about the status of your program: whether it is
3247 running or not, what process it is, and why it stopped.
3248 @end table
3249
3250 @menu
3251 * Breakpoints:: Breakpoints, watchpoints, and catchpoints
3252 * Continuing and Stepping:: Resuming execution
3253 * Skipping Over Functions and Files::
3254 Skipping over functions and files
3255 * Signals:: Signals
3256 * Thread Stops:: Stopping and starting multi-thread programs
3257 @end menu
3258
3259 @node Breakpoints
3260 @section Breakpoints, Watchpoints, and Catchpoints
3261
3262 @cindex breakpoints
3263 A @dfn{breakpoint} makes your program stop whenever a certain point in
3264 the program is reached. For each breakpoint, you can add conditions to
3265 control in finer detail whether your program stops. You can set
3266 breakpoints with the @code{break} command and its variants (@pxref{Set
3267 Breaks, ,Setting Breakpoints}), to specify the place where your program
3268 should stop by line number, function name or exact address in the
3269 program.
3270
3271 On some systems, you can set breakpoints in shared libraries before
3272 the executable is run. There is a minor limitation on HP-UX systems:
3273 you must wait until the executable is run in order to set breakpoints
3274 in shared library routines that are not called directly by the program
3275 (for example, routines that are arguments in a @code{pthread_create}
3276 call).
3277
3278 @cindex watchpoints
3279 @cindex data breakpoints
3280 @cindex memory tracing
3281 @cindex breakpoint on memory address
3282 @cindex breakpoint on variable modification
3283 A @dfn{watchpoint} is a special breakpoint that stops your program
3284 when the value of an expression changes. The expression may be a value
3285 of a variable, or it could involve values of one or more variables
3286 combined by operators, such as @samp{a + b}. This is sometimes called
3287 @dfn{data breakpoints}. You must use a different command to set
3288 watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
3289 from that, you can manage a watchpoint like any other breakpoint: you
3290 enable, disable, and delete both breakpoints and watchpoints using the
3291 same commands.
3292
3293 You can arrange to have values from your program displayed automatically
3294 whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
3295 Automatic Display}.
3296
3297 @cindex catchpoints
3298 @cindex breakpoint on events
3299 A @dfn{catchpoint} is another special breakpoint that stops your program
3300 when a certain kind of event occurs, such as the throwing of a C@t{++}
3301 exception or the loading of a library. As with watchpoints, you use a
3302 different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
3303 Catchpoints}), but aside from that, you can manage a catchpoint like any
3304 other breakpoint. (To stop when your program receives a signal, use the
3305 @code{handle} command; see @ref{Signals, ,Signals}.)
3306
3307 @cindex breakpoint numbers
3308 @cindex numbers for breakpoints
3309 @value{GDBN} assigns a number to each breakpoint, watchpoint, or
3310 catchpoint when you create it; these numbers are successive integers
3311 starting with one. In many of the commands for controlling various
3312 features of breakpoints you use the breakpoint number to say which
3313 breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3314 @dfn{disabled}; if disabled, it has no effect on your program until you
3315 enable it again.
3316
3317 @cindex breakpoint ranges
3318 @cindex ranges of breakpoints
3319 Some @value{GDBN} commands accept a range of breakpoints on which to
3320 operate. A breakpoint range is either a single breakpoint number, like
3321 @samp{5}, or two such numbers, in increasing order, separated by a
3322 hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
3323 all breakpoints in that range are operated on.
3324
3325 @menu
3326 * Set Breaks:: Setting breakpoints
3327 * Set Watchpoints:: Setting watchpoints
3328 * Set Catchpoints:: Setting catchpoints
3329 * Delete Breaks:: Deleting breakpoints
3330 * Disabling:: Disabling breakpoints
3331 * Conditions:: Break conditions
3332 * Break Commands:: Breakpoint command lists
3333 * Save Breakpoints:: How to save breakpoints in a file
3334 * Error in Breakpoints:: ``Cannot insert breakpoints''
3335 * Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
3336 @end menu
3337
3338 @node Set Breaks
3339 @subsection Setting Breakpoints
3340
3341 @c FIXME LMB what does GDB do if no code on line of breakpt?
3342 @c consider in particular declaration with/without initialization.
3343 @c
3344 @c FIXME 2 is there stuff on this already? break at fun start, already init?
3345
3346 @kindex break
3347 @kindex b @r{(@code{break})}
3348 @vindex $bpnum@r{, convenience variable}
3349 @cindex latest breakpoint
3350 Breakpoints are set with the @code{break} command (abbreviated
3351 @code{b}). The debugger convenience variable @samp{$bpnum} records the
3352 number of the breakpoint you've set most recently; see @ref{Convenience
3353 Vars,, Convenience Variables}, for a discussion of what you can do with
3354 convenience variables.
3355
3356 @table @code
3357 @item break @var{location}
3358 Set a breakpoint at the given @var{location}, which can specify a
3359 function name, a line number, or an address of an instruction.
3360 (@xref{Specify Location}, for a list of all the possible ways to
3361 specify a @var{location}.) The breakpoint will stop your program just
3362 before it executes any of the code in the specified @var{location}.
3363
3364 When using source languages that permit overloading of symbols, such as
3365 C@t{++}, a function name may refer to more than one possible place to break.
3366 @xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3367 that situation.
3368
3369 It is also possible to insert a breakpoint that will stop the program
3370 only if a specific thread (@pxref{Thread-Specific Breakpoints})
3371 or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
3372
3373 @item break
3374 When called without any arguments, @code{break} sets a breakpoint at
3375 the next instruction to be executed in the selected stack frame
3376 (@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3377 innermost, this makes your program stop as soon as control
3378 returns to that frame. This is similar to the effect of a
3379 @code{finish} command in the frame inside the selected frame---except
3380 that @code{finish} does not leave an active breakpoint. If you use
3381 @code{break} without an argument in the innermost frame, @value{GDBN} stops
3382 the next time it reaches the current location; this may be useful
3383 inside loops.
3384
3385 @value{GDBN} normally ignores breakpoints when it resumes execution, until at
3386 least one instruction has been executed. If it did not do this, you
3387 would be unable to proceed past a breakpoint without first disabling the
3388 breakpoint. This rule applies whether or not the breakpoint already
3389 existed when your program stopped.
3390
3391 @item break @dots{} if @var{cond}
3392 Set a breakpoint with condition @var{cond}; evaluate the expression
3393 @var{cond} each time the breakpoint is reached, and stop only if the
3394 value is nonzero---that is, if @var{cond} evaluates as true.
3395 @samp{@dots{}} stands for one of the possible arguments described
3396 above (or no argument) specifying where to break. @xref{Conditions,
3397 ,Break Conditions}, for more information on breakpoint conditions.
3398
3399 @kindex tbreak
3400 @item tbreak @var{args}
3401 Set a breakpoint enabled only for one stop. @var{args} are the
3402 same as for the @code{break} command, and the breakpoint is set in the same
3403 way, but the breakpoint is automatically deleted after the first time your
3404 program stops there. @xref{Disabling, ,Disabling Breakpoints}.
3405
3406 @kindex hbreak
3407 @cindex hardware breakpoints
3408 @item hbreak @var{args}
3409 Set a hardware-assisted breakpoint. @var{args} are the same as for the
3410 @code{break} command and the breakpoint is set in the same way, but the
3411 breakpoint requires hardware support and some target hardware may not
3412 have this support. The main purpose of this is EPROM/ROM code
3413 debugging, so you can set a breakpoint at an instruction without
3414 changing the instruction. This can be used with the new trap-generation
3415 provided by SPARClite DSU and most x86-based targets. These targets
3416 will generate traps when a program accesses some data or instruction
3417 address that is assigned to the debug registers. However the hardware
3418 breakpoint registers can take a limited number of breakpoints. For
3419 example, on the DSU, only two data breakpoints can be set at a time, and
3420 @value{GDBN} will reject this command if more than two are used. Delete
3421 or disable unused hardware breakpoints before setting new ones
3422 (@pxref{Disabling, ,Disabling Breakpoints}).
3423 @xref{Conditions, ,Break Conditions}.
3424 For remote targets, you can restrict the number of hardware
3425 breakpoints @value{GDBN} will use, see @ref{set remote
3426 hardware-breakpoint-limit}.
3427
3428 @kindex thbreak
3429 @item thbreak @var{args}
3430 Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3431 are the same as for the @code{hbreak} command and the breakpoint is set in
3432 the same way. However, like the @code{tbreak} command,
3433 the breakpoint is automatically deleted after the
3434 first time your program stops there. Also, like the @code{hbreak}
3435 command, the breakpoint requires hardware support and some target hardware
3436 may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3437 See also @ref{Conditions, ,Break Conditions}.
3438
3439 @kindex rbreak
3440 @cindex regular expression
3441 @cindex breakpoints at functions matching a regexp
3442 @cindex set breakpoints in many functions
3443 @item rbreak @var{regex}
3444 Set breakpoints on all functions matching the regular expression
3445 @var{regex}. This command sets an unconditional breakpoint on all
3446 matches, printing a list of all breakpoints it set. Once these
3447 breakpoints are set, they are treated just like the breakpoints set with
3448 the @code{break} command. You can delete them, disable them, or make
3449 them conditional the same way as any other breakpoint.
3450
3451 The syntax of the regular expression is the standard one used with tools
3452 like @file{grep}. Note that this is different from the syntax used by
3453 shells, so for instance @code{foo*} matches all functions that include
3454 an @code{fo} followed by zero or more @code{o}s. There is an implicit
3455 @code{.*} leading and trailing the regular expression you supply, so to
3456 match only functions that begin with @code{foo}, use @code{^foo}.
3457
3458 @cindex non-member C@t{++} functions, set breakpoint in
3459 When debugging C@t{++} programs, @code{rbreak} is useful for setting
3460 breakpoints on overloaded functions that are not members of any special
3461 classes.
3462
3463 @cindex set breakpoints on all functions
3464 The @code{rbreak} command can be used to set breakpoints in
3465 @strong{all} the functions in a program, like this:
3466
3467 @smallexample
3468 (@value{GDBP}) rbreak .
3469 @end smallexample
3470
3471 @item rbreak @var{file}:@var{regex}
3472 If @code{rbreak} is called with a filename qualification, it limits
3473 the search for functions matching the given regular expression to the
3474 specified @var{file}. This can be used, for example, to set breakpoints on
3475 every function in a given file:
3476
3477 @smallexample
3478 (@value{GDBP}) rbreak file.c:.
3479 @end smallexample
3480
3481 The colon separating the filename qualifier from the regex may
3482 optionally be surrounded by spaces.
3483
3484 @kindex info breakpoints
3485 @cindex @code{$_} and @code{info breakpoints}
3486 @item info breakpoints @r{[}@var{n}@dots{}@r{]}
3487 @itemx info break @r{[}@var{n}@dots{}@r{]}
3488 Print a table of all breakpoints, watchpoints, and catchpoints set and
3489 not deleted. Optional argument @var{n} means print information only
3490 about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
3491 For each breakpoint, following columns are printed:
3492
3493 @table @emph
3494 @item Breakpoint Numbers
3495 @item Type
3496 Breakpoint, watchpoint, or catchpoint.
3497 @item Disposition
3498 Whether the breakpoint is marked to be disabled or deleted when hit.
3499 @item Enabled or Disabled
3500 Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
3501 that are not enabled.
3502 @item Address
3503 Where the breakpoint is in your program, as a memory address. For a
3504 pending breakpoint whose address is not yet known, this field will
3505 contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3506 library that has the symbol or line referred by breakpoint is loaded.
3507 See below for details. A breakpoint with several locations will
3508 have @samp{<MULTIPLE>} in this field---see below for details.
3509 @item What
3510 Where the breakpoint is in the source for your program, as a file and
3511 line number. For a pending breakpoint, the original string passed to
3512 the breakpoint command will be listed as it cannot be resolved until
3513 the appropriate shared library is loaded in the future.
3514 @end table
3515
3516 @noindent
3517 If a breakpoint is conditional, there are two evaluation modes: ``host'' and
3518 ``target''. If mode is ``host'', breakpoint condition evaluation is done by
3519 @value{GDBN} on the host's side. If it is ``target'', then the condition
3520 is evaluated by the target. The @code{info break} command shows
3521 the condition on the line following the affected breakpoint, together with
3522 its condition evaluation mode in between parentheses.
3523
3524 Breakpoint commands, if any, are listed after that. A pending breakpoint is
3525 allowed to have a condition specified for it. The condition is not parsed for
3526 validity until a shared library is loaded that allows the pending
3527 breakpoint to resolve to a valid location.
3528
3529 @noindent
3530 @code{info break} with a breakpoint
3531 number @var{n} as argument lists only that breakpoint. The
3532 convenience variable @code{$_} and the default examining-address for
3533 the @code{x} command are set to the address of the last breakpoint
3534 listed (@pxref{Memory, ,Examining Memory}).
3535
3536 @noindent
3537 @code{info break} displays a count of the number of times the breakpoint
3538 has been hit. This is especially useful in conjunction with the
3539 @code{ignore} command. You can ignore a large number of breakpoint
3540 hits, look at the breakpoint info to see how many times the breakpoint
3541 was hit, and then run again, ignoring one less than that number. This
3542 will get you quickly to the last hit of that breakpoint.
3543
3544 @noindent
3545 For a breakpoints with an enable count (xref) greater than 1,
3546 @code{info break} also displays that count.
3547
3548 @end table
3549
3550 @value{GDBN} allows you to set any number of breakpoints at the same place in
3551 your program. There is nothing silly or meaningless about this. When
3552 the breakpoints are conditional, this is even useful
3553 (@pxref{Conditions, ,Break Conditions}).
3554
3555 @cindex multiple locations, breakpoints
3556 @cindex breakpoints, multiple locations
3557 It is possible that a breakpoint corresponds to several locations
3558 in your program. Examples of this situation are:
3559
3560 @itemize @bullet
3561 @item
3562 Multiple functions in the program may have the same name.
3563
3564 @item
3565 For a C@t{++} constructor, the @value{NGCC} compiler generates several
3566 instances of the function body, used in different cases.
3567
3568 @item
3569 For a C@t{++} template function, a given line in the function can
3570 correspond to any number of instantiations.
3571
3572 @item
3573 For an inlined function, a given source line can correspond to
3574 several places where that function is inlined.
3575 @end itemize
3576
3577 In all those cases, @value{GDBN} will insert a breakpoint at all
3578 the relevant locations.
3579
3580 A breakpoint with multiple locations is displayed in the breakpoint
3581 table using several rows---one header row, followed by one row for
3582 each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3583 address column. The rows for individual locations contain the actual
3584 addresses for locations, and show the functions to which those
3585 locations belong. The number column for a location is of the form
3586 @var{breakpoint-number}.@var{location-number}.
3587
3588 For example:
3589
3590 @smallexample
3591 Num Type Disp Enb Address What
3592 1 breakpoint keep y <MULTIPLE>
3593 stop only if i==1
3594 breakpoint already hit 1 time
3595 1.1 y 0x080486a2 in void foo<int>() at t.cc:8
3596 1.2 y 0x080486ca in void foo<double>() at t.cc:8
3597 @end smallexample
3598
3599 Each location can be individually enabled or disabled by passing
3600 @var{breakpoint-number}.@var{location-number} as argument to the
3601 @code{enable} and @code{disable} commands. Note that you cannot
3602 delete the individual locations from the list, you can only delete the
3603 entire list of locations that belong to their parent breakpoint (with
3604 the @kbd{delete @var{num}} command, where @var{num} is the number of
3605 the parent breakpoint, 1 in the above example). Disabling or enabling
3606 the parent breakpoint (@pxref{Disabling}) affects all of the locations
3607 that belong to that breakpoint.
3608
3609 @cindex pending breakpoints
3610 It's quite common to have a breakpoint inside a shared library.
3611 Shared libraries can be loaded and unloaded explicitly,
3612 and possibly repeatedly, as the program is executed. To support
3613 this use case, @value{GDBN} updates breakpoint locations whenever
3614 any shared library is loaded or unloaded. Typically, you would
3615 set a breakpoint in a shared library at the beginning of your
3616 debugging session, when the library is not loaded, and when the
3617 symbols from the library are not available. When you try to set
3618 breakpoint, @value{GDBN} will ask you if you want to set
3619 a so called @dfn{pending breakpoint}---breakpoint whose address
3620 is not yet resolved.
3621
3622 After the program is run, whenever a new shared library is loaded,
3623 @value{GDBN} reevaluates all the breakpoints. When a newly loaded
3624 shared library contains the symbol or line referred to by some
3625 pending breakpoint, that breakpoint is resolved and becomes an
3626 ordinary breakpoint. When a library is unloaded, all breakpoints
3627 that refer to its symbols or source lines become pending again.
3628
3629 This logic works for breakpoints with multiple locations, too. For
3630 example, if you have a breakpoint in a C@t{++} template function, and
3631 a newly loaded shared library has an instantiation of that template,
3632 a new location is added to the list of locations for the breakpoint.
3633
3634 Except for having unresolved address, pending breakpoints do not
3635 differ from regular breakpoints. You can set conditions or commands,
3636 enable and disable them and perform other breakpoint operations.
3637
3638 @value{GDBN} provides some additional commands for controlling what
3639 happens when the @samp{break} command cannot resolve breakpoint
3640 address specification to an address:
3641
3642 @kindex set breakpoint pending
3643 @kindex show breakpoint pending
3644 @table @code
3645 @item set breakpoint pending auto
3646 This is the default behavior. When @value{GDBN} cannot find the breakpoint
3647 location, it queries you whether a pending breakpoint should be created.
3648
3649 @item set breakpoint pending on
3650 This indicates that an unrecognized breakpoint location should automatically
3651 result in a pending breakpoint being created.
3652
3653 @item set breakpoint pending off
3654 This indicates that pending breakpoints are not to be created. Any
3655 unrecognized breakpoint location results in an error. This setting does
3656 not affect any pending breakpoints previously created.
3657
3658 @item show breakpoint pending
3659 Show the current behavior setting for creating pending breakpoints.
3660 @end table
3661
3662 The settings above only affect the @code{break} command and its
3663 variants. Once breakpoint is set, it will be automatically updated
3664 as shared libraries are loaded and unloaded.
3665
3666 @cindex automatic hardware breakpoints
3667 For some targets, @value{GDBN} can automatically decide if hardware or
3668 software breakpoints should be used, depending on whether the
3669 breakpoint address is read-only or read-write. This applies to
3670 breakpoints set with the @code{break} command as well as to internal
3671 breakpoints set by commands like @code{next} and @code{finish}. For
3672 breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
3673 breakpoints.
3674
3675 You can control this automatic behaviour with the following commands::
3676
3677 @kindex set breakpoint auto-hw
3678 @kindex show breakpoint auto-hw
3679 @table @code
3680 @item set breakpoint auto-hw on
3681 This is the default behavior. When @value{GDBN} sets a breakpoint, it
3682 will try to use the target memory map to decide if software or hardware
3683 breakpoint must be used.
3684
3685 @item set breakpoint auto-hw off
3686 This indicates @value{GDBN} should not automatically select breakpoint
3687 type. If the target provides a memory map, @value{GDBN} will warn when
3688 trying to set software breakpoint at a read-only address.
3689 @end table
3690
3691 @value{GDBN} normally implements breakpoints by replacing the program code
3692 at the breakpoint address with a special instruction, which, when
3693 executed, given control to the debugger. By default, the program
3694 code is so modified only when the program is resumed. As soon as
3695 the program stops, @value{GDBN} restores the original instructions. This
3696 behaviour guards against leaving breakpoints inserted in the
3697 target should gdb abrubptly disconnect. However, with slow remote
3698 targets, inserting and removing breakpoint can reduce the performance.
3699 This behavior can be controlled with the following commands::
3700
3701 @kindex set breakpoint always-inserted
3702 @kindex show breakpoint always-inserted
3703 @table @code
3704 @item set breakpoint always-inserted off
3705 All breakpoints, including newly added by the user, are inserted in
3706 the target only when the target is resumed. All breakpoints are
3707 removed from the target when it stops.
3708
3709 @item set breakpoint always-inserted on
3710 Causes all breakpoints to be inserted in the target at all times. If
3711 the user adds a new breakpoint, or changes an existing breakpoint, the
3712 breakpoints in the target are updated immediately. A breakpoint is
3713 removed from the target only when breakpoint itself is removed.
3714
3715 @cindex non-stop mode, and @code{breakpoint always-inserted}
3716 @item set breakpoint always-inserted auto
3717 This is the default mode. If @value{GDBN} is controlling the inferior
3718 in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3719 @code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3720 controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3721 @code{breakpoint always-inserted} mode is off.
3722 @end table
3723
3724 @value{GDBN} handles conditional breakpoints by evaluating these conditions
3725 when a breakpoint breaks. If the condition is true, then the process being
3726 debugged stops, otherwise the process is resumed.
3727
3728 If the target supports evaluating conditions on its end, @value{GDBN} may
3729 download the breakpoint, together with its conditions, to it.
3730
3731 This feature can be controlled via the following commands:
3732
3733 @kindex set breakpoint condition-evaluation
3734 @kindex show breakpoint condition-evaluation
3735 @table @code
3736 @item set breakpoint condition-evaluation host
3737 This option commands @value{GDBN} to evaluate the breakpoint
3738 conditions on the host's side. Unconditional breakpoints are sent to
3739 the target which in turn receives the triggers and reports them back to GDB
3740 for condition evaluation. This is the standard evaluation mode.
3741
3742 @item set breakpoint condition-evaluation target
3743 This option commands @value{GDBN} to download breakpoint conditions
3744 to the target at the moment of their insertion. The target
3745 is responsible for evaluating the conditional expression and reporting
3746 breakpoint stop events back to @value{GDBN} whenever the condition
3747 is true. Due to limitations of target-side evaluation, some conditions
3748 cannot be evaluated there, e.g., conditions that depend on local data
3749 that is only known to the host. Examples include
3750 conditional expressions involving convenience variables, complex types
3751 that cannot be handled by the agent expression parser and expressions
3752 that are too long to be sent over to the target, specially when the
3753 target is a remote system. In these cases, the conditions will be
3754 evaluated by @value{GDBN}.
3755
3756 @item set breakpoint condition-evaluation auto
3757 This is the default mode. If the target supports evaluating breakpoint
3758 conditions on its end, @value{GDBN} will download breakpoint conditions to
3759 the target (limitations mentioned previously apply). If the target does
3760 not support breakpoint condition evaluation, then @value{GDBN} will fallback
3761 to evaluating all these conditions on the host's side.
3762 @end table
3763
3764
3765 @cindex negative breakpoint numbers
3766 @cindex internal @value{GDBN} breakpoints
3767 @value{GDBN} itself sometimes sets breakpoints in your program for
3768 special purposes, such as proper handling of @code{longjmp} (in C
3769 programs). These internal breakpoints are assigned negative numbers,
3770 starting with @code{-1}; @samp{info breakpoints} does not display them.
3771 You can see these breakpoints with the @value{GDBN} maintenance command
3772 @samp{maint info breakpoints} (@pxref{maint info breakpoints}).
3773
3774
3775 @node Set Watchpoints
3776 @subsection Setting Watchpoints
3777
3778 @cindex setting watchpoints
3779 You can use a watchpoint to stop execution whenever the value of an
3780 expression changes, without having to predict a particular place where
3781 this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3782 The expression may be as simple as the value of a single variable, or
3783 as complex as many variables combined by operators. Examples include:
3784
3785 @itemize @bullet
3786 @item
3787 A reference to the value of a single variable.
3788
3789 @item
3790 An address cast to an appropriate data type. For example,
3791 @samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3792 address (assuming an @code{int} occupies 4 bytes).
3793
3794 @item
3795 An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3796 expression can use any operators valid in the program's native
3797 language (@pxref{Languages}).
3798 @end itemize
3799
3800 You can set a watchpoint on an expression even if the expression can
3801 not be evaluated yet. For instance, you can set a watchpoint on
3802 @samp{*global_ptr} before @samp{global_ptr} is initialized.
3803 @value{GDBN} will stop when your program sets @samp{global_ptr} and
3804 the expression produces a valid value. If the expression becomes
3805 valid in some other way than changing a variable (e.g.@: if the memory
3806 pointed to by @samp{*global_ptr} becomes readable as the result of a
3807 @code{malloc} call), @value{GDBN} may not stop until the next time
3808 the expression changes.
3809
3810 @cindex software watchpoints
3811 @cindex hardware watchpoints
3812 Depending on your system, watchpoints may be implemented in software or
3813 hardware. @value{GDBN} does software watchpointing by single-stepping your
3814 program and testing the variable's value each time, which is hundreds of
3815 times slower than normal execution. (But this may still be worth it, to
3816 catch errors where you have no clue what part of your program is the
3817 culprit.)
3818
3819 On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
3820 x86-based targets, @value{GDBN} includes support for hardware
3821 watchpoints, which do not slow down the running of your program.
3822
3823 @table @code
3824 @kindex watch
3825 @item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
3826 Set a watchpoint for an expression. @value{GDBN} will break when the
3827 expression @var{expr} is written into by the program and its value
3828 changes. The simplest (and the most popular) use of this command is
3829 to watch the value of a single variable:
3830
3831 @smallexample
3832 (@value{GDBP}) watch foo
3833 @end smallexample
3834
3835 If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
3836 argument, @value{GDBN} breaks only when the thread identified by
3837 @var{threadnum} changes the value of @var{expr}. If any other threads
3838 change the value of @var{expr}, @value{GDBN} will not break. Note
3839 that watchpoints restricted to a single thread in this way only work
3840 with Hardware Watchpoints.
3841
3842 Ordinarily a watchpoint respects the scope of variables in @var{expr}
3843 (see below). The @code{-location} argument tells @value{GDBN} to
3844 instead watch the memory referred to by @var{expr}. In this case,
3845 @value{GDBN} will evaluate @var{expr}, take the address of the result,
3846 and watch the memory at that address. The type of the result is used
3847 to determine the size of the watched memory. If the expression's
3848 result does not have an address, then @value{GDBN} will print an
3849 error.
3850
3851 The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation
3852 of masked watchpoints, if the current architecture supports this
3853 feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC
3854 Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition
3855 to an address to watch. The mask specifies that some bits of an address
3856 (the bits which are reset in the mask) should be ignored when matching
3857 the address accessed by the inferior against the watchpoint address.
3858 Thus, a masked watchpoint watches many addresses simultaneously---those
3859 addresses whose unmasked bits are identical to the unmasked bits in the
3860 watchpoint address. The @code{mask} argument implies @code{-location}.
3861 Examples:
3862
3863 @smallexample
3864 (@value{GDBP}) watch foo mask 0xffff00ff
3865 (@value{GDBP}) watch *0xdeadbeef mask 0xffffff00
3866 @end smallexample
3867
3868 @kindex rwatch
3869 @item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
3870 Set a watchpoint that will break when the value of @var{expr} is read
3871 by the program.
3872
3873 @kindex awatch
3874 @item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
3875 Set a watchpoint that will break when @var{expr} is either read from
3876 or written into by the program.
3877
3878 @kindex info watchpoints @r{[}@var{n}@dots{}@r{]}
3879 @item info watchpoints @r{[}@var{n}@dots{}@r{]}
3880 This command prints a list of watchpoints, using the same format as
3881 @code{info break} (@pxref{Set Breaks}).
3882 @end table
3883
3884 If you watch for a change in a numerically entered address you need to
3885 dereference it, as the address itself is just a constant number which will
3886 never change. @value{GDBN} refuses to create a watchpoint that watches
3887 a never-changing value:
3888
3889 @smallexample
3890 (@value{GDBP}) watch 0x600850
3891 Cannot watch constant value 0x600850.
3892 (@value{GDBP}) watch *(int *) 0x600850
3893 Watchpoint 1: *(int *) 6293584
3894 @end smallexample
3895
3896 @value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3897 watchpoints execute very quickly, and the debugger reports a change in
3898 value at the exact instruction where the change occurs. If @value{GDBN}
3899 cannot set a hardware watchpoint, it sets a software watchpoint, which
3900 executes more slowly and reports the change in value at the next
3901 @emph{statement}, not the instruction, after the change occurs.
3902
3903 @cindex use only software watchpoints
3904 You can force @value{GDBN} to use only software watchpoints with the
3905 @kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3906 zero, @value{GDBN} will never try to use hardware watchpoints, even if
3907 the underlying system supports them. (Note that hardware-assisted
3908 watchpoints that were set @emph{before} setting
3909 @code{can-use-hw-watchpoints} to zero will still use the hardware
3910 mechanism of watching expression values.)
3911
3912 @table @code
3913 @item set can-use-hw-watchpoints
3914 @kindex set can-use-hw-watchpoints
3915 Set whether or not to use hardware watchpoints.
3916
3917 @item show can-use-hw-watchpoints
3918 @kindex show can-use-hw-watchpoints
3919 Show the current mode of using hardware watchpoints.
3920 @end table
3921
3922 For remote targets, you can restrict the number of hardware
3923 watchpoints @value{GDBN} will use, see @ref{set remote
3924 hardware-breakpoint-limit}.
3925
3926 When you issue the @code{watch} command, @value{GDBN} reports
3927
3928 @smallexample
3929 Hardware watchpoint @var{num}: @var{expr}
3930 @end smallexample
3931
3932 @noindent
3933 if it was able to set a hardware watchpoint.
3934
3935 Currently, the @code{awatch} and @code{rwatch} commands can only set
3936 hardware watchpoints, because accesses to data that don't change the
3937 value of the watched expression cannot be detected without examining
3938 every instruction as it is being executed, and @value{GDBN} does not do
3939 that currently. If @value{GDBN} finds that it is unable to set a
3940 hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3941 will print a message like this:
3942
3943 @smallexample
3944 Expression cannot be implemented with read/access watchpoint.
3945 @end smallexample
3946
3947 Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3948 data type of the watched expression is wider than what a hardware
3949 watchpoint on the target machine can handle. For example, some systems
3950 can only watch regions that are up to 4 bytes wide; on such systems you
3951 cannot set hardware watchpoints for an expression that yields a
3952 double-precision floating-point number (which is typically 8 bytes
3953 wide). As a work-around, it might be possible to break the large region
3954 into a series of smaller ones and watch them with separate watchpoints.
3955
3956 If you set too many hardware watchpoints, @value{GDBN} might be unable
3957 to insert all of them when you resume the execution of your program.
3958 Since the precise number of active watchpoints is unknown until such
3959 time as the program is about to be resumed, @value{GDBN} might not be
3960 able to warn you about this when you set the watchpoints, and the
3961 warning will be printed only when the program is resumed:
3962
3963 @smallexample
3964 Hardware watchpoint @var{num}: Could not insert watchpoint
3965 @end smallexample
3966
3967 @noindent
3968 If this happens, delete or disable some of the watchpoints.
3969
3970 Watching complex expressions that reference many variables can also
3971 exhaust the resources available for hardware-assisted watchpoints.
3972 That's because @value{GDBN} needs to watch every variable in the
3973 expression with separately allocated resources.
3974
3975 If you call a function interactively using @code{print} or @code{call},
3976 any watchpoints you have set will be inactive until @value{GDBN} reaches another
3977 kind of breakpoint or the call completes.
3978
3979 @value{GDBN} automatically deletes watchpoints that watch local
3980 (automatic) variables, or expressions that involve such variables, when
3981 they go out of scope, that is, when the execution leaves the block in
3982 which these variables were defined. In particular, when the program
3983 being debugged terminates, @emph{all} local variables go out of scope,
3984 and so only watchpoints that watch global variables remain set. If you
3985 rerun the program, you will need to set all such watchpoints again. One
3986 way of doing that would be to set a code breakpoint at the entry to the
3987 @code{main} function and when it breaks, set all the watchpoints.
3988
3989 @cindex watchpoints and threads
3990 @cindex threads and watchpoints
3991 In multi-threaded programs, watchpoints will detect changes to the
3992 watched expression from every thread.
3993
3994 @quotation
3995 @emph{Warning:} In multi-threaded programs, software watchpoints
3996 have only limited usefulness. If @value{GDBN} creates a software
3997 watchpoint, it can only watch the value of an expression @emph{in a
3998 single thread}. If you are confident that the expression can only
3999 change due to the current thread's activity (and if you are also
4000 confident that no other thread can become current), then you can use
4001 software watchpoints as usual. However, @value{GDBN} may not notice
4002 when a non-current thread's activity changes the expression. (Hardware
4003 watchpoints, in contrast, watch an expression in all threads.)
4004 @end quotation
4005
4006 @xref{set remote hardware-watchpoint-limit}.
4007
4008 @node Set Catchpoints
4009 @subsection Setting Catchpoints
4010 @cindex catchpoints, setting
4011 @cindex exception handlers
4012 @cindex event handling
4013
4014 You can use @dfn{catchpoints} to cause the debugger to stop for certain
4015 kinds of program events, such as C@t{++} exceptions or the loading of a
4016 shared library. Use the @code{catch} command to set a catchpoint.
4017
4018 @table @code
4019 @kindex catch
4020 @item catch @var{event}
4021 Stop when @var{event} occurs. @var{event} can be any of the following:
4022 @table @code
4023 @item throw
4024 @cindex stop on C@t{++} exceptions
4025 The throwing of a C@t{++} exception.
4026
4027 @item catch
4028 The catching of a C@t{++} exception.
4029
4030 @item exception
4031 @cindex Ada exception catching
4032 @cindex catch Ada exceptions
4033 An Ada exception being raised. If an exception name is specified
4034 at the end of the command (eg @code{catch exception Program_Error}),
4035 the debugger will stop only when this specific exception is raised.
4036 Otherwise, the debugger stops execution when any Ada exception is raised.
4037
4038 When inserting an exception catchpoint on a user-defined exception whose
4039 name is identical to one of the exceptions defined by the language, the
4040 fully qualified name must be used as the exception name. Otherwise,
4041 @value{GDBN} will assume that it should stop on the pre-defined exception
4042 rather than the user-defined one. For instance, assuming an exception
4043 called @code{Constraint_Error} is defined in package @code{Pck}, then
4044 the command to use to catch such exceptions is @kbd{catch exception
4045 Pck.Constraint_Error}.
4046
4047 @item exception unhandled
4048 An exception that was raised but is not handled by the program.
4049
4050 @item assert
4051 A failed Ada assertion.
4052
4053 @item exec
4054 @cindex break on fork/exec
4055 A call to @code{exec}. This is currently only available for HP-UX
4056 and @sc{gnu}/Linux.
4057
4058 @item syscall
4059 @itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
4060 @cindex break on a system call.
4061 A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
4062 syscall is a mechanism for application programs to request a service
4063 from the operating system (OS) or one of the OS system services.
4064 @value{GDBN} can catch some or all of the syscalls issued by the
4065 debuggee, and show the related information for each syscall. If no
4066 argument is specified, calls to and returns from all system calls
4067 will be caught.
4068
4069 @var{name} can be any system call name that is valid for the
4070 underlying OS. Just what syscalls are valid depends on the OS. On
4071 GNU and Unix systems, you can find the full list of valid syscall
4072 names on @file{/usr/include/asm/unistd.h}.
4073
4074 @c For MS-Windows, the syscall names and the corresponding numbers
4075 @c can be found, e.g., on this URL:
4076 @c http://www.metasploit.com/users/opcode/syscalls.html
4077 @c but we don't support Windows syscalls yet.
4078
4079 Normally, @value{GDBN} knows in advance which syscalls are valid for
4080 each OS, so you can use the @value{GDBN} command-line completion
4081 facilities (@pxref{Completion,, command completion}) to list the
4082 available choices.
4083
4084 You may also specify the system call numerically. A syscall's
4085 number is the value passed to the OS's syscall dispatcher to
4086 identify the requested service. When you specify the syscall by its
4087 name, @value{GDBN} uses its database of syscalls to convert the name
4088 into the corresponding numeric code, but using the number directly
4089 may be useful if @value{GDBN}'s database does not have the complete
4090 list of syscalls on your system (e.g., because @value{GDBN} lags
4091 behind the OS upgrades).
4092
4093 The example below illustrates how this command works if you don't provide
4094 arguments to it:
4095
4096 @smallexample
4097 (@value{GDBP}) catch syscall
4098 Catchpoint 1 (syscall)
4099 (@value{GDBP}) r
4100 Starting program: /tmp/catch-syscall
4101
4102 Catchpoint 1 (call to syscall 'close'), \
4103 0xffffe424 in __kernel_vsyscall ()
4104 (@value{GDBP}) c
4105 Continuing.
4106
4107 Catchpoint 1 (returned from syscall 'close'), \
4108 0xffffe424 in __kernel_vsyscall ()
4109 (@value{GDBP})
4110 @end smallexample
4111
4112 Here is an example of catching a system call by name:
4113
4114 @smallexample
4115 (@value{GDBP}) catch syscall chroot
4116 Catchpoint 1 (syscall 'chroot' [61])
4117 (@value{GDBP}) r
4118 Starting program: /tmp/catch-syscall
4119
4120 Catchpoint 1 (call to syscall 'chroot'), \
4121 0xffffe424 in __kernel_vsyscall ()
4122 (@value{GDBP}) c
4123 Continuing.
4124
4125 Catchpoint 1 (returned from syscall 'chroot'), \
4126 0xffffe424 in __kernel_vsyscall ()
4127 (@value{GDBP})
4128 @end smallexample
4129
4130 An example of specifying a system call numerically. In the case
4131 below, the syscall number has a corresponding entry in the XML
4132 file, so @value{GDBN} finds its name and prints it:
4133
4134 @smallexample
4135 (@value{GDBP}) catch syscall 252
4136 Catchpoint 1 (syscall(s) 'exit_group')
4137 (@value{GDBP}) r
4138 Starting program: /tmp/catch-syscall
4139
4140 Catchpoint 1 (call to syscall 'exit_group'), \
4141 0xffffe424 in __kernel_vsyscall ()
4142 (@value{GDBP}) c
4143 Continuing.
4144
4145 Program exited normally.
4146 (@value{GDBP})
4147 @end smallexample
4148
4149 However, there can be situations when there is no corresponding name
4150 in XML file for that syscall number. In this case, @value{GDBN} prints
4151 a warning message saying that it was not able to find the syscall name,
4152 but the catchpoint will be set anyway. See the example below:
4153
4154 @smallexample
4155 (@value{GDBP}) catch syscall 764
4156 warning: The number '764' does not represent a known syscall.
4157 Catchpoint 2 (syscall 764)
4158 (@value{GDBP})
4159 @end smallexample
4160
4161 If you configure @value{GDBN} using the @samp{--without-expat} option,
4162 it will not be able to display syscall names. Also, if your
4163 architecture does not have an XML file describing its system calls,
4164 you will not be able to see the syscall names. It is important to
4165 notice that these two features are used for accessing the syscall
4166 name database. In either case, you will see a warning like this:
4167
4168 @smallexample
4169 (@value{GDBP}) catch syscall
4170 warning: Could not open "syscalls/i386-linux.xml"
4171 warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
4172 GDB will not be able to display syscall names.
4173 Catchpoint 1 (syscall)
4174 (@value{GDBP})
4175 @end smallexample
4176
4177 Of course, the file name will change depending on your architecture and system.
4178
4179 Still using the example above, you can also try to catch a syscall by its
4180 number. In this case, you would see something like:
4181
4182 @smallexample
4183 (@value{GDBP}) catch syscall 252
4184 Catchpoint 1 (syscall(s) 252)
4185 @end smallexample
4186
4187 Again, in this case @value{GDBN} would not be able to display syscall's names.
4188
4189 @item fork
4190 A call to @code{fork}. This is currently only available for HP-UX
4191 and @sc{gnu}/Linux.
4192
4193 @item vfork
4194 A call to @code{vfork}. This is currently only available for HP-UX
4195 and @sc{gnu}/Linux.
4196
4197 @item load @r{[}regexp@r{]}
4198 @itemx unload @r{[}regexp@r{]}
4199 The loading or unloading of a shared library. If @var{regexp} is
4200 given, then the catchpoint will stop only if the regular expression
4201 matches one of the affected libraries.
4202
4203 @end table
4204
4205 @item tcatch @var{event}
4206 Set a catchpoint that is enabled only for one stop. The catchpoint is
4207 automatically deleted after the first time the event is caught.
4208
4209 @end table
4210
4211 Use the @code{info break} command to list the current catchpoints.
4212
4213 There are currently some limitations to C@t{++} exception handling
4214 (@code{catch throw} and @code{catch catch}) in @value{GDBN}:
4215
4216 @itemize @bullet
4217 @item
4218 If you call a function interactively, @value{GDBN} normally returns
4219 control to you when the function has finished executing. If the call
4220 raises an exception, however, the call may bypass the mechanism that
4221 returns control to you and cause your program either to abort or to
4222 simply continue running until it hits a breakpoint, catches a signal
4223 that @value{GDBN} is listening for, or exits. This is the case even if
4224 you set a catchpoint for the exception; catchpoints on exceptions are
4225 disabled within interactive calls.
4226
4227 @item
4228 You cannot raise an exception interactively.
4229
4230 @item
4231 You cannot install an exception handler interactively.
4232 @end itemize
4233
4234 @cindex raise exceptions
4235 Sometimes @code{catch} is not the best way to debug exception handling:
4236 if you need to know exactly where an exception is raised, it is better to
4237 stop @emph{before} the exception handler is called, since that way you
4238 can see the stack before any unwinding takes place. If you set a
4239 breakpoint in an exception handler instead, it may not be easy to find
4240 out where the exception was raised.
4241
4242 To stop just before an exception handler is called, you need some
4243 knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
4244 raised by calling a library function named @code{__raise_exception}
4245 which has the following ANSI C interface:
4246
4247 @smallexample
4248 /* @var{addr} is where the exception identifier is stored.
4249 @var{id} is the exception identifier. */
4250 void __raise_exception (void **addr, void *id);
4251 @end smallexample
4252
4253 @noindent
4254 To make the debugger catch all exceptions before any stack
4255 unwinding takes place, set a breakpoint on @code{__raise_exception}
4256 (@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
4257
4258 With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
4259 that depends on the value of @var{id}, you can stop your program when
4260 a specific exception is raised. You can use multiple conditional
4261 breakpoints to stop your program when any of a number of exceptions are
4262 raised.
4263
4264
4265 @node Delete Breaks
4266 @subsection Deleting Breakpoints
4267
4268 @cindex clearing breakpoints, watchpoints, catchpoints
4269 @cindex deleting breakpoints, watchpoints, catchpoints
4270 It is often necessary to eliminate a breakpoint, watchpoint, or
4271 catchpoint once it has done its job and you no longer want your program
4272 to stop there. This is called @dfn{deleting} the breakpoint. A
4273 breakpoint that has been deleted no longer exists; it is forgotten.
4274
4275 With the @code{clear} command you can delete breakpoints according to
4276 where they are in your program. With the @code{delete} command you can
4277 delete individual breakpoints, watchpoints, or catchpoints by specifying
4278 their breakpoint numbers.
4279
4280 It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4281 automatically ignores breakpoints on the first instruction to be executed
4282 when you continue execution without changing the execution address.
4283
4284 @table @code
4285 @kindex clear
4286 @item clear
4287 Delete any breakpoints at the next instruction to be executed in the
4288 selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
4289 the innermost frame is selected, this is a good way to delete a
4290 breakpoint where your program just stopped.
4291
4292 @item clear @var{location}
4293 Delete any breakpoints set at the specified @var{location}.
4294 @xref{Specify Location}, for the various forms of @var{location}; the
4295 most useful ones are listed below:
4296
4297 @table @code
4298 @item clear @var{function}
4299 @itemx clear @var{filename}:@var{function}
4300 Delete any breakpoints set at entry to the named @var{function}.
4301
4302 @item clear @var{linenum}
4303 @itemx clear @var{filename}:@var{linenum}
4304 Delete any breakpoints set at or within the code of the specified
4305 @var{linenum} of the specified @var{filename}.
4306 @end table
4307
4308 @cindex delete breakpoints
4309 @kindex delete
4310 @kindex d @r{(@code{delete})}
4311 @item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4312 Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4313 ranges specified as arguments. If no argument is specified, delete all
4314 breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4315 confirm off}). You can abbreviate this command as @code{d}.
4316 @end table
4317
4318 @node Disabling
4319 @subsection Disabling Breakpoints
4320
4321 @cindex enable/disable a breakpoint
4322 Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4323 prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4324 it had been deleted, but remembers the information on the breakpoint so
4325 that you can @dfn{enable} it again later.
4326
4327 You disable and enable breakpoints, watchpoints, and catchpoints with
4328 the @code{enable} and @code{disable} commands, optionally specifying
4329 one or more breakpoint numbers as arguments. Use @code{info break} to
4330 print a list of all breakpoints, watchpoints, and catchpoints if you
4331 do not know which numbers to use.
4332
4333 Disabling and enabling a breakpoint that has multiple locations
4334 affects all of its locations.
4335
4336 A breakpoint, watchpoint, or catchpoint can have any of several
4337 different states of enablement:
4338
4339 @itemize @bullet
4340 @item
4341 Enabled. The breakpoint stops your program. A breakpoint set
4342 with the @code{break} command starts out in this state.
4343 @item
4344 Disabled. The breakpoint has no effect on your program.
4345 @item
4346 Enabled once. The breakpoint stops your program, but then becomes
4347 disabled.
4348 @item
4349 Enabled for a count. The breakpoint stops your program for the next
4350 N times, then becomes disabled.
4351 @item
4352 Enabled for deletion. The breakpoint stops your program, but
4353 immediately after it does so it is deleted permanently. A breakpoint
4354 set with the @code{tbreak} command starts out in this state.
4355 @end itemize
4356
4357 You can use the following commands to enable or disable breakpoints,
4358 watchpoints, and catchpoints:
4359
4360 @table @code
4361 @kindex disable
4362 @kindex dis @r{(@code{disable})}
4363 @item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4364 Disable the specified breakpoints---or all breakpoints, if none are
4365 listed. A disabled breakpoint has no effect but is not forgotten. All
4366 options such as ignore-counts, conditions and commands are remembered in
4367 case the breakpoint is enabled again later. You may abbreviate
4368 @code{disable} as @code{dis}.
4369
4370 @kindex enable
4371 @item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4372 Enable the specified breakpoints (or all defined breakpoints). They
4373 become effective once again in stopping your program.
4374
4375 @item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
4376 Enable the specified breakpoints temporarily. @value{GDBN} disables any
4377 of these breakpoints immediately after stopping your program.
4378
4379 @item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{}
4380 Enable the specified breakpoints temporarily. @value{GDBN} records
4381 @var{count} with each of the specified breakpoints, and decrements a
4382 breakpoint's count when it is hit. When any count reaches 0,
4383 @value{GDBN} disables that breakpoint. If a breakpoint has an ignore
4384 count (@pxref{Conditions, ,Break Conditions}), that will be
4385 decremented to 0 before @var{count} is affected.
4386
4387 @item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
4388 Enable the specified breakpoints to work once, then die. @value{GDBN}
4389 deletes any of these breakpoints as soon as your program stops there.
4390 Breakpoints set by the @code{tbreak} command start out in this state.
4391 @end table
4392
4393 @c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4394 @c confusing: tbreak is also initially enabled.
4395 Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
4396 ,Setting Breakpoints}), breakpoints that you set are initially enabled;
4397 subsequently, they become disabled or enabled only when you use one of
4398 the commands above. (The command @code{until} can set and delete a
4399 breakpoint of its own, but it does not change the state of your other
4400 breakpoints; see @ref{Continuing and Stepping, ,Continuing and
4401 Stepping}.)
4402
4403 @node Conditions
4404 @subsection Break Conditions
4405 @cindex conditional breakpoints
4406 @cindex breakpoint conditions
4407
4408 @c FIXME what is scope of break condition expr? Context where wanted?
4409 @c in particular for a watchpoint?
4410 The simplest sort of breakpoint breaks every time your program reaches a
4411 specified place. You can also specify a @dfn{condition} for a
4412 breakpoint. A condition is just a Boolean expression in your
4413 programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4414 a condition evaluates the expression each time your program reaches it,
4415 and your program stops only if the condition is @emph{true}.
4416
4417 This is the converse of using assertions for program validation; in that
4418 situation, you want to stop when the assertion is violated---that is,
4419 when the condition is false. In C, if you want to test an assertion expressed
4420 by the condition @var{assert}, you should set the condition
4421 @samp{! @var{assert}} on the appropriate breakpoint.
4422
4423 Conditions are also accepted for watchpoints; you may not need them,
4424 since a watchpoint is inspecting the value of an expression anyhow---but
4425 it might be simpler, say, to just set a watchpoint on a variable name,
4426 and specify a condition that tests whether the new value is an interesting
4427 one.
4428
4429 Break conditions can have side effects, and may even call functions in
4430 your program. This can be useful, for example, to activate functions
4431 that log program progress, or to use your own print functions to
4432 format special data structures. The effects are completely predictable
4433 unless there is another enabled breakpoint at the same address. (In
4434 that case, @value{GDBN} might see the other breakpoint first and stop your
4435 program without checking the condition of this one.) Note that
4436 breakpoint commands are usually more convenient and flexible than break
4437 conditions for the
4438 purpose of performing side effects when a breakpoint is reached
4439 (@pxref{Break Commands, ,Breakpoint Command Lists}).
4440
4441 Breakpoint conditions can also be evaluated on the target's side if
4442 the target supports it. Instead of evaluating the conditions locally,
4443 @value{GDBN} encodes the expression into an agent expression
4444 (@pxref{Agent Expressions}) suitable for execution on the target,
4445 independently of @value{GDBN}. Global variables become raw memory
4446 locations, locals become stack accesses, and so forth.
4447
4448 In this case, @value{GDBN} will only be notified of a breakpoint trigger
4449 when its condition evaluates to true. This mechanism may provide faster
4450 response times depending on the performance characteristics of the target
4451 since it does not need to keep @value{GDBN} informed about
4452 every breakpoint trigger, even those with false conditions.
4453
4454 Break conditions can be specified when a breakpoint is set, by using
4455 @samp{if} in the arguments to the @code{break} command. @xref{Set
4456 Breaks, ,Setting Breakpoints}. They can also be changed at any time
4457 with the @code{condition} command.
4458
4459 You can also use the @code{if} keyword with the @code{watch} command.
4460 The @code{catch} command does not recognize the @code{if} keyword;
4461 @code{condition} is the only way to impose a further condition on a
4462 catchpoint.
4463
4464 @table @code
4465 @kindex condition
4466 @item condition @var{bnum} @var{expression}
4467 Specify @var{expression} as the break condition for breakpoint,
4468 watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4469 breakpoint @var{bnum} stops your program only if the value of
4470 @var{expression} is true (nonzero, in C). When you use
4471 @code{condition}, @value{GDBN} checks @var{expression} immediately for
4472 syntactic correctness, and to determine whether symbols in it have
4473 referents in the context of your breakpoint. If @var{expression} uses
4474 symbols not referenced in the context of the breakpoint, @value{GDBN}
4475 prints an error message:
4476
4477 @smallexample
4478 No symbol "foo" in current context.
4479 @end smallexample
4480
4481 @noindent
4482 @value{GDBN} does
4483 not actually evaluate @var{expression} at the time the @code{condition}
4484 command (or a command that sets a breakpoint with a condition, like
4485 @code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
4486
4487 @item condition @var{bnum}
4488 Remove the condition from breakpoint number @var{bnum}. It becomes
4489 an ordinary unconditional breakpoint.
4490 @end table
4491
4492 @cindex ignore count (of breakpoint)
4493 A special case of a breakpoint condition is to stop only when the
4494 breakpoint has been reached a certain number of times. This is so
4495 useful that there is a special way to do it, using the @dfn{ignore
4496 count} of the breakpoint. Every breakpoint has an ignore count, which
4497 is an integer. Most of the time, the ignore count is zero, and
4498 therefore has no effect. But if your program reaches a breakpoint whose
4499 ignore count is positive, then instead of stopping, it just decrements
4500 the ignore count by one and continues. As a result, if the ignore count
4501 value is @var{n}, the breakpoint does not stop the next @var{n} times
4502 your program reaches it.
4503
4504 @table @code
4505 @kindex ignore
4506 @item ignore @var{bnum} @var{count}
4507 Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4508 The next @var{count} times the breakpoint is reached, your program's
4509 execution does not stop; other than to decrement the ignore count, @value{GDBN}
4510 takes no action.
4511
4512 To make the breakpoint stop the next time it is reached, specify
4513 a count of zero.
4514
4515 When you use @code{continue} to resume execution of your program from a
4516 breakpoint, you can specify an ignore count directly as an argument to
4517 @code{continue}, rather than using @code{ignore}. @xref{Continuing and
4518 Stepping,,Continuing and Stepping}.
4519
4520 If a breakpoint has a positive ignore count and a condition, the
4521 condition is not checked. Once the ignore count reaches zero,
4522 @value{GDBN} resumes checking the condition.
4523
4524 You could achieve the effect of the ignore count with a condition such
4525 as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4526 is decremented each time. @xref{Convenience Vars, ,Convenience
4527 Variables}.
4528 @end table
4529
4530 Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4531
4532
4533 @node Break Commands
4534 @subsection Breakpoint Command Lists
4535
4536 @cindex breakpoint commands
4537 You can give any breakpoint (or watchpoint or catchpoint) a series of
4538 commands to execute when your program stops due to that breakpoint. For
4539 example, you might want to print the values of certain expressions, or
4540 enable other breakpoints.
4541
4542 @table @code
4543 @kindex commands
4544 @kindex end@r{ (breakpoint commands)}
4545 @item commands @r{[}@var{range}@dots{}@r{]}
4546 @itemx @dots{} @var{command-list} @dots{}
4547 @itemx end
4548 Specify a list of commands for the given breakpoints. The commands
4549 themselves appear on the following lines. Type a line containing just
4550 @code{end} to terminate the commands.
4551
4552 To remove all commands from a breakpoint, type @code{commands} and
4553 follow it immediately with @code{end}; that is, give no commands.
4554
4555 With no argument, @code{commands} refers to the last breakpoint,
4556 watchpoint, or catchpoint set (not to the breakpoint most recently
4557 encountered). If the most recent breakpoints were set with a single
4558 command, then the @code{commands} will apply to all the breakpoints
4559 set by that command. This applies to breakpoints set by
4560 @code{rbreak}, and also applies when a single @code{break} command
4561 creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous
4562 Expressions}).
4563 @end table
4564
4565 Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4566 disabled within a @var{command-list}.
4567
4568 You can use breakpoint commands to start your program up again. Simply
4569 use the @code{continue} command, or @code{step}, or any other command
4570 that resumes execution.
4571
4572 Any other commands in the command list, after a command that resumes
4573 execution, are ignored. This is because any time you resume execution
4574 (even with a simple @code{next} or @code{step}), you may encounter
4575 another breakpoint---which could have its own command list, leading to
4576 ambiguities about which list to execute.
4577
4578 @kindex silent
4579 If the first command you specify in a command list is @code{silent}, the
4580 usual message about stopping at a breakpoint is not printed. This may
4581 be desirable for breakpoints that are to print a specific message and
4582 then continue. If none of the remaining commands print anything, you
4583 see no sign that the breakpoint was reached. @code{silent} is
4584 meaningful only at the beginning of a breakpoint command list.
4585
4586 The commands @code{echo}, @code{output}, and @code{printf} allow you to
4587 print precisely controlled output, and are often useful in silent
4588 breakpoints. @xref{Output, ,Commands for Controlled Output}.
4589
4590 For example, here is how you could use breakpoint commands to print the
4591 value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4592
4593 @smallexample
4594 break foo if x>0
4595 commands
4596 silent
4597 printf "x is %d\n",x
4598 cont
4599 end
4600 @end smallexample
4601
4602 One application for breakpoint commands is to compensate for one bug so
4603 you can test for another. Put a breakpoint just after the erroneous line
4604 of code, give it a condition to detect the case in which something
4605 erroneous has been done, and give it commands to assign correct values
4606 to any variables that need them. End with the @code{continue} command
4607 so that your program does not stop, and start with the @code{silent}
4608 command so that no output is produced. Here is an example:
4609
4610 @smallexample
4611 break 403
4612 commands
4613 silent
4614 set x = y + 4
4615 cont
4616 end
4617 @end smallexample
4618
4619 @node Save Breakpoints
4620 @subsection How to save breakpoints to a file
4621
4622 To save breakpoint definitions to a file use the @w{@code{save
4623 breakpoints}} command.
4624
4625 @table @code
4626 @kindex save breakpoints
4627 @cindex save breakpoints to a file for future sessions
4628 @item save breakpoints [@var{filename}]
4629 This command saves all current breakpoint definitions together with
4630 their commands and ignore counts, into a file @file{@var{filename}}
4631 suitable for use in a later debugging session. This includes all
4632 types of breakpoints (breakpoints, watchpoints, catchpoints,
4633 tracepoints). To read the saved breakpoint definitions, use the
4634 @code{source} command (@pxref{Command Files}). Note that watchpoints
4635 with expressions involving local variables may fail to be recreated
4636 because it may not be possible to access the context where the
4637 watchpoint is valid anymore. Because the saved breakpoint definitions
4638 are simply a sequence of @value{GDBN} commands that recreate the
4639 breakpoints, you can edit the file in your favorite editing program,
4640 and remove the breakpoint definitions you're not interested in, or
4641 that can no longer be recreated.
4642 @end table
4643
4644 @c @ifclear BARETARGET
4645 @node Error in Breakpoints
4646 @subsection ``Cannot insert breakpoints''
4647
4648 If you request too many active hardware-assisted breakpoints and
4649 watchpoints, you will see this error message:
4650
4651 @c FIXME: the precise wording of this message may change; the relevant
4652 @c source change is not committed yet (Sep 3, 1999).
4653 @smallexample
4654 Stopped; cannot insert breakpoints.
4655 You may have requested too many hardware breakpoints and watchpoints.
4656 @end smallexample
4657
4658 @noindent
4659 This message is printed when you attempt to resume the program, since
4660 only then @value{GDBN} knows exactly how many hardware breakpoints and
4661 watchpoints it needs to insert.
4662
4663 When this message is printed, you need to disable or remove some of the
4664 hardware-assisted breakpoints and watchpoints, and then continue.
4665
4666 @node Breakpoint-related Warnings
4667 @subsection ``Breakpoint address adjusted...''
4668 @cindex breakpoint address adjusted
4669
4670 Some processor architectures place constraints on the addresses at
4671 which breakpoints may be placed. For architectures thus constrained,
4672 @value{GDBN} will attempt to adjust the breakpoint's address to comply
4673 with the constraints dictated by the architecture.
4674
4675 One example of such an architecture is the Fujitsu FR-V. The FR-V is
4676 a VLIW architecture in which a number of RISC-like instructions may be
4677 bundled together for parallel execution. The FR-V architecture
4678 constrains the location of a breakpoint instruction within such a
4679 bundle to the instruction with the lowest address. @value{GDBN}
4680 honors this constraint by adjusting a breakpoint's address to the
4681 first in the bundle.
4682
4683 It is not uncommon for optimized code to have bundles which contain
4684 instructions from different source statements, thus it may happen that
4685 a breakpoint's address will be adjusted from one source statement to
4686 another. Since this adjustment may significantly alter @value{GDBN}'s
4687 breakpoint related behavior from what the user expects, a warning is
4688 printed when the breakpoint is first set and also when the breakpoint
4689 is hit.
4690
4691 A warning like the one below is printed when setting a breakpoint
4692 that's been subject to address adjustment:
4693
4694 @smallexample
4695 warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4696 @end smallexample
4697
4698 Such warnings are printed both for user settable and @value{GDBN}'s
4699 internal breakpoints. If you see one of these warnings, you should
4700 verify that a breakpoint set at the adjusted address will have the
4701 desired affect. If not, the breakpoint in question may be removed and
4702 other breakpoints may be set which will have the desired behavior.
4703 E.g., it may be sufficient to place the breakpoint at a later
4704 instruction. A conditional breakpoint may also be useful in some
4705 cases to prevent the breakpoint from triggering too often.
4706
4707 @value{GDBN} will also issue a warning when stopping at one of these
4708 adjusted breakpoints:
4709
4710 @smallexample
4711 warning: Breakpoint 1 address previously adjusted from 0x00010414
4712 to 0x00010410.
4713 @end smallexample
4714
4715 When this warning is encountered, it may be too late to take remedial
4716 action except in cases where the breakpoint is hit earlier or more
4717 frequently than expected.
4718
4719 @node Continuing and Stepping
4720 @section Continuing and Stepping
4721
4722 @cindex stepping
4723 @cindex continuing
4724 @cindex resuming execution
4725 @dfn{Continuing} means resuming program execution until your program
4726 completes normally. In contrast, @dfn{stepping} means executing just
4727 one more ``step'' of your program, where ``step'' may mean either one
4728 line of source code, or one machine instruction (depending on what
4729 particular command you use). Either when continuing or when stepping,
4730 your program may stop even sooner, due to a breakpoint or a signal. (If
4731 it stops due to a signal, you may want to use @code{handle}, or use
4732 @samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
4733
4734 @table @code
4735 @kindex continue
4736 @kindex c @r{(@code{continue})}
4737 @kindex fg @r{(resume foreground execution)}
4738 @item continue @r{[}@var{ignore-count}@r{]}
4739 @itemx c @r{[}@var{ignore-count}@r{]}
4740 @itemx fg @r{[}@var{ignore-count}@r{]}
4741 Resume program execution, at the address where your program last stopped;
4742 any breakpoints set at that address are bypassed. The optional argument
4743 @var{ignore-count} allows you to specify a further number of times to
4744 ignore a breakpoint at this location; its effect is like that of
4745 @code{ignore} (@pxref{Conditions, ,Break Conditions}).
4746
4747 The argument @var{ignore-count} is meaningful only when your program
4748 stopped due to a breakpoint. At other times, the argument to
4749 @code{continue} is ignored.
4750
4751 The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4752 debugged program is deemed to be the foreground program) are provided
4753 purely for convenience, and have exactly the same behavior as
4754 @code{continue}.
4755 @end table
4756
4757 To resume execution at a different place, you can use @code{return}
4758 (@pxref{Returning, ,Returning from a Function}) to go back to the
4759 calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
4760 Different Address}) to go to an arbitrary location in your program.
4761
4762 A typical technique for using stepping is to set a breakpoint
4763 (@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
4764 beginning of the function or the section of your program where a problem
4765 is believed to lie, run your program until it stops at that breakpoint,
4766 and then step through the suspect area, examining the variables that are
4767 interesting, until you see the problem happen.
4768
4769 @table @code
4770 @kindex step
4771 @kindex s @r{(@code{step})}
4772 @item step
4773 Continue running your program until control reaches a different source
4774 line, then stop it and return control to @value{GDBN}. This command is
4775 abbreviated @code{s}.
4776
4777 @quotation
4778 @c "without debugging information" is imprecise; actually "without line
4779 @c numbers in the debugging information". (gcc -g1 has debugging info but
4780 @c not line numbers). But it seems complex to try to make that
4781 @c distinction here.
4782 @emph{Warning:} If you use the @code{step} command while control is
4783 within a function that was compiled without debugging information,
4784 execution proceeds until control reaches a function that does have
4785 debugging information. Likewise, it will not step into a function which
4786 is compiled without debugging information. To step through functions
4787 without debugging information, use the @code{stepi} command, described
4788 below.
4789 @end quotation
4790
4791 The @code{step} command only stops at the first instruction of a source
4792 line. This prevents the multiple stops that could otherwise occur in
4793 @code{switch} statements, @code{for} loops, etc. @code{step} continues
4794 to stop if a function that has debugging information is called within
4795 the line. In other words, @code{step} @emph{steps inside} any functions
4796 called within the line.
4797
4798 Also, the @code{step} command only enters a function if there is line
4799 number information for the function. Otherwise it acts like the
4800 @code{next} command. This avoids problems when using @code{cc -gl}
4801 on MIPS machines. Previously, @code{step} entered subroutines if there
4802 was any debugging information about the routine.
4803
4804 @item step @var{count}
4805 Continue running as in @code{step}, but do so @var{count} times. If a
4806 breakpoint is reached, or a signal not related to stepping occurs before
4807 @var{count} steps, stepping stops right away.
4808
4809 @kindex next
4810 @kindex n @r{(@code{next})}
4811 @item next @r{[}@var{count}@r{]}
4812 Continue to the next source line in the current (innermost) stack frame.
4813 This is similar to @code{step}, but function calls that appear within
4814 the line of code are executed without stopping. Execution stops when
4815 control reaches a different line of code at the original stack level
4816 that was executing when you gave the @code{next} command. This command
4817 is abbreviated @code{n}.
4818
4819 An argument @var{count} is a repeat count, as for @code{step}.
4820
4821
4822 @c FIX ME!! Do we delete this, or is there a way it fits in with
4823 @c the following paragraph? --- Vctoria
4824 @c
4825 @c @code{next} within a function that lacks debugging information acts like
4826 @c @code{step}, but any function calls appearing within the code of the
4827 @c function are executed without stopping.
4828
4829 The @code{next} command only stops at the first instruction of a
4830 source line. This prevents multiple stops that could otherwise occur in
4831 @code{switch} statements, @code{for} loops, etc.
4832
4833 @kindex set step-mode
4834 @item set step-mode
4835 @cindex functions without line info, and stepping
4836 @cindex stepping into functions with no line info
4837 @itemx set step-mode on
4838 The @code{set step-mode on} command causes the @code{step} command to
4839 stop at the first instruction of a function which contains no debug line
4840 information rather than stepping over it.
4841
4842 This is useful in cases where you may be interested in inspecting the
4843 machine instructions of a function which has no symbolic info and do not
4844 want @value{GDBN} to automatically skip over this function.
4845
4846 @item set step-mode off
4847 Causes the @code{step} command to step over any functions which contains no
4848 debug information. This is the default.
4849
4850 @item show step-mode
4851 Show whether @value{GDBN} will stop in or step over functions without
4852 source line debug information.
4853
4854 @kindex finish
4855 @kindex fin @r{(@code{finish})}
4856 @item finish
4857 Continue running until just after function in the selected stack frame
4858 returns. Print the returned value (if any). This command can be
4859 abbreviated as @code{fin}.
4860
4861 Contrast this with the @code{return} command (@pxref{Returning,
4862 ,Returning from a Function}).
4863
4864 @kindex until
4865 @kindex u @r{(@code{until})}
4866 @cindex run until specified location
4867 @item until
4868 @itemx u
4869 Continue running until a source line past the current line, in the
4870 current stack frame, is reached. This command is used to avoid single
4871 stepping through a loop more than once. It is like the @code{next}
4872 command, except that when @code{until} encounters a jump, it
4873 automatically continues execution until the program counter is greater
4874 than the address of the jump.
4875
4876 This means that when you reach the end of a loop after single stepping
4877 though it, @code{until} makes your program continue execution until it
4878 exits the loop. In contrast, a @code{next} command at the end of a loop
4879 simply steps back to the beginning of the loop, which forces you to step
4880 through the next iteration.
4881
4882 @code{until} always stops your program if it attempts to exit the current
4883 stack frame.
4884
4885 @code{until} may produce somewhat counterintuitive results if the order
4886 of machine code does not match the order of the source lines. For
4887 example, in the following excerpt from a debugging session, the @code{f}
4888 (@code{frame}) command shows that execution is stopped at line
4889 @code{206}; yet when we use @code{until}, we get to line @code{195}:
4890
4891 @smallexample
4892 (@value{GDBP}) f
4893 #0 main (argc=4, argv=0xf7fffae8) at m4.c:206
4894 206 expand_input();
4895 (@value{GDBP}) until
4896 195 for ( ; argc > 0; NEXTARG) @{
4897 @end smallexample
4898
4899 This happened because, for execution efficiency, the compiler had
4900 generated code for the loop closure test at the end, rather than the
4901 start, of the loop---even though the test in a C @code{for}-loop is
4902 written before the body of the loop. The @code{until} command appeared
4903 to step back to the beginning of the loop when it advanced to this
4904 expression; however, it has not really gone to an earlier
4905 statement---not in terms of the actual machine code.
4906
4907 @code{until} with no argument works by means of single
4908 instruction stepping, and hence is slower than @code{until} with an
4909 argument.
4910
4911 @item until @var{location}
4912 @itemx u @var{location}
4913 Continue running your program until either the specified location is
4914 reached, or the current stack frame returns. @var{location} is any of
4915 the forms described in @ref{Specify Location}.
4916 This form of the command uses temporary breakpoints, and
4917 hence is quicker than @code{until} without an argument. The specified
4918 location is actually reached only if it is in the current frame. This
4919 implies that @code{until} can be used to skip over recursive function
4920 invocations. For instance in the code below, if the current location is
4921 line @code{96}, issuing @code{until 99} will execute the program up to
4922 line @code{99} in the same invocation of factorial, i.e., after the inner
4923 invocations have returned.
4924
4925 @smallexample
4926 94 int factorial (int value)
4927 95 @{
4928 96 if (value > 1) @{
4929 97 value *= factorial (value - 1);
4930 98 @}
4931 99 return (value);
4932 100 @}
4933 @end smallexample
4934
4935
4936 @kindex advance @var{location}
4937 @itemx advance @var{location}
4938 Continue running the program up to the given @var{location}. An argument is
4939 required, which should be of one of the forms described in
4940 @ref{Specify Location}.
4941 Execution will also stop upon exit from the current stack
4942 frame. This command is similar to @code{until}, but @code{advance} will
4943 not skip over recursive function calls, and the target location doesn't
4944 have to be in the same frame as the current one.
4945
4946
4947 @kindex stepi
4948 @kindex si @r{(@code{stepi})}
4949 @item stepi
4950 @itemx stepi @var{arg}
4951 @itemx si
4952 Execute one machine instruction, then stop and return to the debugger.
4953
4954 It is often useful to do @samp{display/i $pc} when stepping by machine
4955 instructions. This makes @value{GDBN} automatically display the next
4956 instruction to be executed, each time your program stops. @xref{Auto
4957 Display,, Automatic Display}.
4958
4959 An argument is a repeat count, as in @code{step}.
4960
4961 @need 750
4962 @kindex nexti
4963 @kindex ni @r{(@code{nexti})}
4964 @item nexti
4965 @itemx nexti @var{arg}
4966 @itemx ni
4967 Execute one machine instruction, but if it is a function call,
4968 proceed until the function returns.
4969
4970 An argument is a repeat count, as in @code{next}.
4971 @end table
4972
4973 @node Skipping Over Functions and Files
4974 @section Skipping Over Functions and Files
4975 @cindex skipping over functions and files
4976
4977 The program you are debugging may contain some functions which are
4978 uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to
4979 skip a function or all functions in a file when stepping.
4980
4981 For example, consider the following C function:
4982
4983 @smallexample
4984 101 int func()
4985 102 @{
4986 103 foo(boring());
4987 104 bar(boring());
4988 105 @}
4989 @end smallexample
4990
4991 @noindent
4992 Suppose you wish to step into the functions @code{foo} and @code{bar}, but you
4993 are not interested in stepping through @code{boring}. If you run @code{step}
4994 at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll
4995 step over both @code{foo} and @code{boring}!
4996
4997 One solution is to @code{step} into @code{boring} and use the @code{finish}
4998 command to immediately exit it. But this can become tedious if @code{boring}
4999 is called from many places.
5000
5001 A more flexible solution is to execute @kbd{skip boring}. This instructs
5002 @value{GDBN} never to step into @code{boring}. Now when you execute
5003 @code{step} at line 103, you'll step over @code{boring} and directly into
5004 @code{foo}.
5005
5006 You can also instruct @value{GDBN} to skip all functions in a file, with, for
5007 example, @code{skip file boring.c}.
5008
5009 @table @code
5010 @kindex skip function
5011 @item skip @r{[}@var{linespec}@r{]}
5012 @itemx skip function @r{[}@var{linespec}@r{]}
5013 After running this command, the function named by @var{linespec} or the
5014 function containing the line named by @var{linespec} will be skipped over when
5015 stepping. @xref{Specify Location}.
5016
5017 If you do not specify @var{linespec}, the function you're currently debugging
5018 will be skipped.
5019
5020 (If you have a function called @code{file} that you want to skip, use
5021 @kbd{skip function file}.)
5022
5023 @kindex skip file
5024 @item skip file @r{[}@var{filename}@r{]}
5025 After running this command, any function whose source lives in @var{filename}
5026 will be skipped over when stepping.
5027
5028 If you do not specify @var{filename}, functions whose source lives in the file
5029 you're currently debugging will be skipped.
5030 @end table
5031
5032 Skips can be listed, deleted, disabled, and enabled, much like breakpoints.
5033 These are the commands for managing your list of skips:
5034
5035 @table @code
5036 @kindex info skip
5037 @item info skip @r{[}@var{range}@r{]}
5038 Print details about the specified skip(s). If @var{range} is not specified,
5039 print a table with details about all functions and files marked for skipping.
5040 @code{info skip} prints the following information about each skip:
5041
5042 @table @emph
5043 @item Identifier
5044 A number identifying this skip.
5045 @item Type
5046 The type of this skip, either @samp{function} or @samp{file}.
5047 @item Enabled or Disabled
5048 Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}.
5049 @item Address
5050 For function skips, this column indicates the address in memory of the function
5051 being skipped. If you've set a function skip on a function which has not yet
5052 been loaded, this field will contain @samp{<PENDING>}. Once a shared library
5053 which has the function is loaded, @code{info skip} will show the function's
5054 address here.
5055 @item What
5056 For file skips, this field contains the filename being skipped. For functions
5057 skips, this field contains the function name and its line number in the file
5058 where it is defined.
5059 @end table
5060
5061 @kindex skip delete
5062 @item skip delete @r{[}@var{range}@r{]}
5063 Delete the specified skip(s). If @var{range} is not specified, delete all
5064 skips.
5065
5066 @kindex skip enable
5067 @item skip enable @r{[}@var{range}@r{]}
5068 Enable the specified skip(s). If @var{range} is not specified, enable all
5069 skips.
5070
5071 @kindex skip disable
5072 @item skip disable @r{[}@var{range}@r{]}
5073 Disable the specified skip(s). If @var{range} is not specified, disable all
5074 skips.
5075
5076 @end table
5077
5078 @node Signals
5079 @section Signals
5080 @cindex signals
5081
5082 A signal is an asynchronous event that can happen in a program. The
5083 operating system defines the possible kinds of signals, and gives each
5084 kind a name and a number. For example, in Unix @code{SIGINT} is the
5085 signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
5086 @code{SIGSEGV} is the signal a program gets from referencing a place in
5087 memory far away from all the areas in use; @code{SIGALRM} occurs when
5088 the alarm clock timer goes off (which happens only if your program has
5089 requested an alarm).
5090
5091 @cindex fatal signals
5092 Some signals, including @code{SIGALRM}, are a normal part of the
5093 functioning of your program. Others, such as @code{SIGSEGV}, indicate
5094 errors; these signals are @dfn{fatal} (they kill your program immediately) if the
5095 program has not specified in advance some other way to handle the signal.
5096 @code{SIGINT} does not indicate an error in your program, but it is normally
5097 fatal so it can carry out the purpose of the interrupt: to kill the program.
5098
5099 @value{GDBN} has the ability to detect any occurrence of a signal in your
5100 program. You can tell @value{GDBN} in advance what to do for each kind of
5101 signal.
5102
5103 @cindex handling signals
5104 Normally, @value{GDBN} is set up to let the non-erroneous signals like
5105 @code{SIGALRM} be silently passed to your program
5106 (so as not to interfere with their role in the program's functioning)
5107 but to stop your program immediately whenever an error signal happens.
5108 You can change these settings with the @code{handle} command.
5109
5110 @table @code
5111 @kindex info signals
5112 @kindex info handle
5113 @item info signals
5114 @itemx info handle
5115 Print a table of all the kinds of signals and how @value{GDBN} has been told to
5116 handle each one. You can use this to see the signal numbers of all
5117 the defined types of signals.
5118
5119 @item info signals @var{sig}
5120 Similar, but print information only about the specified signal number.
5121
5122 @code{info handle} is an alias for @code{info signals}.
5123
5124 @kindex handle
5125 @item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5126 Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
5127 can be the number of a signal or its name (with or without the
5128 @samp{SIG} at the beginning); a list of signal numbers of the form
5129 @samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
5130 known signals. Optional arguments @var{keywords}, described below,
5131 say what change to make.
5132 @end table
5133
5134 @c @group
5135 The keywords allowed by the @code{handle} command can be abbreviated.
5136 Their full names are:
5137
5138 @table @code
5139 @item nostop
5140 @value{GDBN} should not stop your program when this signal happens. It may
5141 still print a message telling you that the signal has come in.
5142
5143 @item stop
5144 @value{GDBN} should stop your program when this signal happens. This implies
5145 the @code{print} keyword as well.
5146
5147 @item print
5148 @value{GDBN} should print a message when this signal happens.
5149
5150 @item noprint
5151 @value{GDBN} should not mention the occurrence of the signal at all. This
5152 implies the @code{nostop} keyword as well.
5153
5154 @item pass
5155 @itemx noignore
5156 @value{GDBN} should allow your program to see this signal; your program
5157 can handle the signal, or else it may terminate if the signal is fatal
5158 and not handled. @code{pass} and @code{noignore} are synonyms.
5159
5160 @item nopass
5161 @itemx ignore
5162 @value{GDBN} should not allow your program to see this signal.
5163 @code{nopass} and @code{ignore} are synonyms.
5164 @end table
5165 @c @end group
5166
5167 When a signal stops your program, the signal is not visible to the
5168 program until you
5169 continue. Your program sees the signal then, if @code{pass} is in
5170 effect for the signal in question @emph{at that time}. In other words,
5171 after @value{GDBN} reports a signal, you can use the @code{handle}
5172 command with @code{pass} or @code{nopass} to control whether your
5173 program sees that signal when you continue.
5174
5175 The default is set to @code{nostop}, @code{noprint}, @code{pass} for
5176 non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
5177 @code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
5178 erroneous signals.
5179
5180 You can also use the @code{signal} command to prevent your program from
5181 seeing a signal, or cause it to see a signal it normally would not see,
5182 or to give it any signal at any time. For example, if your program stopped
5183 due to some sort of memory reference error, you might store correct
5184 values into the erroneous variables and continue, hoping to see more
5185 execution; but your program would probably terminate immediately as
5186 a result of the fatal signal once it saw the signal. To prevent this,
5187 you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
5188 Program a Signal}.
5189
5190 @cindex extra signal information
5191 @anchor{extra signal information}
5192
5193 On some targets, @value{GDBN} can inspect extra signal information
5194 associated with the intercepted signal, before it is actually
5195 delivered to the program being debugged. This information is exported
5196 by the convenience variable @code{$_siginfo}, and consists of data
5197 that is passed by the kernel to the signal handler at the time of the
5198 receipt of a signal. The data type of the information itself is
5199 target dependent. You can see the data type using the @code{ptype
5200 $_siginfo} command. On Unix systems, it typically corresponds to the
5201 standard @code{siginfo_t} type, as defined in the @file{signal.h}
5202 system header.
5203
5204 Here's an example, on a @sc{gnu}/Linux system, printing the stray
5205 referenced address that raised a segmentation fault.
5206
5207 @smallexample
5208 @group
5209 (@value{GDBP}) continue
5210 Program received signal SIGSEGV, Segmentation fault.
5211 0x0000000000400766 in main ()
5212 69 *(int *)p = 0;
5213 (@value{GDBP}) ptype $_siginfo
5214 type = struct @{
5215 int si_signo;
5216 int si_errno;
5217 int si_code;
5218 union @{
5219 int _pad[28];
5220 struct @{...@} _kill;
5221 struct @{...@} _timer;
5222 struct @{...@} _rt;
5223 struct @{...@} _sigchld;
5224 struct @{...@} _sigfault;
5225 struct @{...@} _sigpoll;
5226 @} _sifields;
5227 @}
5228 (@value{GDBP}) ptype $_siginfo._sifields._sigfault
5229 type = struct @{
5230 void *si_addr;
5231 @}
5232 (@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
5233 $1 = (void *) 0x7ffff7ff7000
5234 @end group
5235 @end smallexample
5236
5237 Depending on target support, @code{$_siginfo} may also be writable.
5238
5239 @node Thread Stops
5240 @section Stopping and Starting Multi-thread Programs
5241
5242 @cindex stopped threads
5243 @cindex threads, stopped
5244
5245 @cindex continuing threads
5246 @cindex threads, continuing
5247
5248 @value{GDBN} supports debugging programs with multiple threads
5249 (@pxref{Threads,, Debugging Programs with Multiple Threads}). There
5250 are two modes of controlling execution of your program within the
5251 debugger. In the default mode, referred to as @dfn{all-stop mode},
5252 when any thread in your program stops (for example, at a breakpoint
5253 or while being stepped), all other threads in the program are also stopped by
5254 @value{GDBN}. On some targets, @value{GDBN} also supports
5255 @dfn{non-stop mode}, in which other threads can continue to run freely while
5256 you examine the stopped thread in the debugger.
5257
5258 @menu
5259 * All-Stop Mode:: All threads stop when GDB takes control
5260 * Non-Stop Mode:: Other threads continue to execute
5261 * Background Execution:: Running your program asynchronously
5262 * Thread-Specific Breakpoints:: Controlling breakpoints
5263 * Interrupted System Calls:: GDB may interfere with system calls
5264 * Observer Mode:: GDB does not alter program behavior
5265 @end menu
5266
5267 @node All-Stop Mode
5268 @subsection All-Stop Mode
5269
5270 @cindex all-stop mode
5271
5272 In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
5273 @emph{all} threads of execution stop, not just the current thread. This
5274 allows you to examine the overall state of the program, including
5275 switching between threads, without worrying that things may change
5276 underfoot.
5277
5278 Conversely, whenever you restart the program, @emph{all} threads start
5279 executing. @emph{This is true even when single-stepping} with commands
5280 like @code{step} or @code{next}.
5281
5282 In particular, @value{GDBN} cannot single-step all threads in lockstep.
5283 Since thread scheduling is up to your debugging target's operating
5284 system (not controlled by @value{GDBN}), other threads may
5285 execute more than one statement while the current thread completes a
5286 single step. Moreover, in general other threads stop in the middle of a
5287 statement, rather than at a clean statement boundary, when the program
5288 stops.
5289
5290 You might even find your program stopped in another thread after
5291 continuing or even single-stepping. This happens whenever some other
5292 thread runs into a breakpoint, a signal, or an exception before the
5293 first thread completes whatever you requested.
5294
5295 @cindex automatic thread selection
5296 @cindex switching threads automatically
5297 @cindex threads, automatic switching
5298 Whenever @value{GDBN} stops your program, due to a breakpoint or a
5299 signal, it automatically selects the thread where that breakpoint or
5300 signal happened. @value{GDBN} alerts you to the context switch with a
5301 message such as @samp{[Switching to Thread @var{n}]} to identify the
5302 thread.
5303
5304 On some OSes, you can modify @value{GDBN}'s default behavior by
5305 locking the OS scheduler to allow only a single thread to run.
5306
5307 @table @code
5308 @item set scheduler-locking @var{mode}
5309 @cindex scheduler locking mode
5310 @cindex lock scheduler
5311 Set the scheduler locking mode. If it is @code{off}, then there is no
5312 locking and any thread may run at any time. If @code{on}, then only the
5313 current thread may run when the inferior is resumed. The @code{step}
5314 mode optimizes for single-stepping; it prevents other threads
5315 from preempting the current thread while you are stepping, so that
5316 the focus of debugging does not change unexpectedly.
5317 Other threads only rarely (or never) get a chance to run
5318 when you step. They are more likely to run when you @samp{next} over a
5319 function call, and they are completely free to run when you use commands
5320 like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
5321 thread hits a breakpoint during its timeslice, @value{GDBN} does not change
5322 the current thread away from the thread that you are debugging.
5323
5324 @item show scheduler-locking
5325 Display the current scheduler locking mode.
5326 @end table
5327
5328 @cindex resume threads of multiple processes simultaneously
5329 By default, when you issue one of the execution commands such as
5330 @code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
5331 threads of the current inferior to run. For example, if @value{GDBN}
5332 is attached to two inferiors, each with two threads, the
5333 @code{continue} command resumes only the two threads of the current
5334 inferior. This is useful, for example, when you debug a program that
5335 forks and you want to hold the parent stopped (so that, for instance,
5336 it doesn't run to exit), while you debug the child. In other
5337 situations, you may not be interested in inspecting the current state
5338 of any of the processes @value{GDBN} is attached to, and you may want
5339 to resume them all until some breakpoint is hit. In the latter case,
5340 you can instruct @value{GDBN} to allow all threads of all the
5341 inferiors to run with the @w{@code{set schedule-multiple}} command.
5342
5343 @table @code
5344 @kindex set schedule-multiple
5345 @item set schedule-multiple
5346 Set the mode for allowing threads of multiple processes to be resumed
5347 when an execution command is issued. When @code{on}, all threads of
5348 all processes are allowed to run. When @code{off}, only the threads
5349 of the current process are resumed. The default is @code{off}. The
5350 @code{scheduler-locking} mode takes precedence when set to @code{on},
5351 or while you are stepping and set to @code{step}.
5352
5353 @item show schedule-multiple
5354 Display the current mode for resuming the execution of threads of
5355 multiple processes.
5356 @end table
5357
5358 @node Non-Stop Mode
5359 @subsection Non-Stop Mode
5360
5361 @cindex non-stop mode
5362
5363 @c This section is really only a place-holder, and needs to be expanded
5364 @c with more details.
5365
5366 For some multi-threaded targets, @value{GDBN} supports an optional
5367 mode of operation in which you can examine stopped program threads in
5368 the debugger while other threads continue to execute freely. This
5369 minimizes intrusion when debugging live systems, such as programs
5370 where some threads have real-time constraints or must continue to
5371 respond to external events. This is referred to as @dfn{non-stop} mode.
5372
5373 In non-stop mode, when a thread stops to report a debugging event,
5374 @emph{only} that thread is stopped; @value{GDBN} does not stop other
5375 threads as well, in contrast to the all-stop mode behavior. Additionally,
5376 execution commands such as @code{continue} and @code{step} apply by default
5377 only to the current thread in non-stop mode, rather than all threads as
5378 in all-stop mode. This allows you to control threads explicitly in
5379 ways that are not possible in all-stop mode --- for example, stepping
5380 one thread while allowing others to run freely, stepping
5381 one thread while holding all others stopped, or stepping several threads
5382 independently and simultaneously.
5383
5384 To enter non-stop mode, use this sequence of commands before you run
5385 or attach to your program:
5386
5387 @smallexample
5388 # Enable the async interface.
5389 set target-async 1
5390
5391 # If using the CLI, pagination breaks non-stop.
5392 set pagination off
5393
5394 # Finally, turn it on!
5395 set non-stop on
5396 @end smallexample
5397
5398 You can use these commands to manipulate the non-stop mode setting:
5399
5400 @table @code
5401 @kindex set non-stop
5402 @item set non-stop on
5403 Enable selection of non-stop mode.
5404 @item set non-stop off
5405 Disable selection of non-stop mode.
5406 @kindex show non-stop
5407 @item show non-stop
5408 Show the current non-stop enablement setting.
5409 @end table
5410
5411 Note these commands only reflect whether non-stop mode is enabled,
5412 not whether the currently-executing program is being run in non-stop mode.
5413 In particular, the @code{set non-stop} preference is only consulted when
5414 @value{GDBN} starts or connects to the target program, and it is generally
5415 not possible to switch modes once debugging has started. Furthermore,
5416 since not all targets support non-stop mode, even when you have enabled
5417 non-stop mode, @value{GDBN} may still fall back to all-stop operation by
5418 default.
5419
5420 In non-stop mode, all execution commands apply only to the current thread
5421 by default. That is, @code{continue} only continues one thread.
5422 To continue all threads, issue @code{continue -a} or @code{c -a}.
5423
5424 You can use @value{GDBN}'s background execution commands
5425 (@pxref{Background Execution}) to run some threads in the background
5426 while you continue to examine or step others from @value{GDBN}.
5427 The MI execution commands (@pxref{GDB/MI Program Execution}) are
5428 always executed asynchronously in non-stop mode.
5429
5430 Suspending execution is done with the @code{interrupt} command when
5431 running in the background, or @kbd{Ctrl-c} during foreground execution.
5432 In all-stop mode, this stops the whole process;
5433 but in non-stop mode the interrupt applies only to the current thread.
5434 To stop the whole program, use @code{interrupt -a}.
5435
5436 Other execution commands do not currently support the @code{-a} option.
5437
5438 In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
5439 that thread current, as it does in all-stop mode. This is because the
5440 thread stop notifications are asynchronous with respect to @value{GDBN}'s
5441 command interpreter, and it would be confusing if @value{GDBN} unexpectedly
5442 changed to a different thread just as you entered a command to operate on the
5443 previously current thread.
5444
5445 @node Background Execution
5446 @subsection Background Execution
5447
5448 @cindex foreground execution
5449 @cindex background execution
5450 @cindex asynchronous execution
5451 @cindex execution, foreground, background and asynchronous
5452
5453 @value{GDBN}'s execution commands have two variants: the normal
5454 foreground (synchronous) behavior, and a background
5455 (asynchronous) behavior. In foreground execution, @value{GDBN} waits for
5456 the program to report that some thread has stopped before prompting for
5457 another command. In background execution, @value{GDBN} immediately gives
5458 a command prompt so that you can issue other commands while your program runs.
5459
5460 You need to explicitly enable asynchronous mode before you can use
5461 background execution commands. You can use these commands to
5462 manipulate the asynchronous mode setting:
5463
5464 @table @code
5465 @kindex set target-async
5466 @item set target-async on
5467 Enable asynchronous mode.
5468 @item set target-async off
5469 Disable asynchronous mode.
5470 @kindex show target-async
5471 @item show target-async
5472 Show the current target-async setting.
5473 @end table
5474
5475 If the target doesn't support async mode, @value{GDBN} issues an error
5476 message if you attempt to use the background execution commands.
5477
5478 To specify background execution, add a @code{&} to the command. For example,
5479 the background form of the @code{continue} command is @code{continue&}, or
5480 just @code{c&}. The execution commands that accept background execution
5481 are:
5482
5483 @table @code
5484 @kindex run&
5485 @item run
5486 @xref{Starting, , Starting your Program}.
5487
5488 @item attach
5489 @kindex attach&
5490 @xref{Attach, , Debugging an Already-running Process}.
5491
5492 @item step
5493 @kindex step&
5494 @xref{Continuing and Stepping, step}.
5495
5496 @item stepi
5497 @kindex stepi&
5498 @xref{Continuing and Stepping, stepi}.
5499
5500 @item next
5501 @kindex next&
5502 @xref{Continuing and Stepping, next}.
5503
5504 @item nexti
5505 @kindex nexti&
5506 @xref{Continuing and Stepping, nexti}.
5507
5508 @item continue
5509 @kindex continue&
5510 @xref{Continuing and Stepping, continue}.
5511
5512 @item finish
5513 @kindex finish&
5514 @xref{Continuing and Stepping, finish}.
5515
5516 @item until
5517 @kindex until&
5518 @xref{Continuing and Stepping, until}.
5519
5520 @end table
5521
5522 Background execution is especially useful in conjunction with non-stop
5523 mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
5524 However, you can also use these commands in the normal all-stop mode with
5525 the restriction that you cannot issue another execution command until the
5526 previous one finishes. Examples of commands that are valid in all-stop
5527 mode while the program is running include @code{help} and @code{info break}.
5528
5529 You can interrupt your program while it is running in the background by
5530 using the @code{interrupt} command.
5531
5532 @table @code
5533 @kindex interrupt
5534 @item interrupt
5535 @itemx interrupt -a
5536
5537 Suspend execution of the running program. In all-stop mode,
5538 @code{interrupt} stops the whole process, but in non-stop mode, it stops
5539 only the current thread. To stop the whole program in non-stop mode,
5540 use @code{interrupt -a}.
5541 @end table
5542
5543 @node Thread-Specific Breakpoints
5544 @subsection Thread-Specific Breakpoints
5545
5546 When your program has multiple threads (@pxref{Threads,, Debugging
5547 Programs with Multiple Threads}), you can choose whether to set
5548 breakpoints on all threads, or on a particular thread.
5549
5550 @table @code
5551 @cindex breakpoints and threads
5552 @cindex thread breakpoints
5553 @kindex break @dots{} thread @var{threadno}
5554 @item break @var{linespec} thread @var{threadno}
5555 @itemx break @var{linespec} thread @var{threadno} if @dots{}
5556 @var{linespec} specifies source lines; there are several ways of
5557 writing them (@pxref{Specify Location}), but the effect is always to
5558 specify some source line.
5559
5560 Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5561 to specify that you only want @value{GDBN} to stop the program when a
5562 particular thread reaches this breakpoint. @var{threadno} is one of the
5563 numeric thread identifiers assigned by @value{GDBN}, shown in the first
5564 column of the @samp{info threads} display.
5565
5566 If you do not specify @samp{thread @var{threadno}} when you set a
5567 breakpoint, the breakpoint applies to @emph{all} threads of your
5568 program.
5569
5570 You can use the @code{thread} qualifier on conditional breakpoints as
5571 well; in this case, place @samp{thread @var{threadno}} before or
5572 after the breakpoint condition, like this:
5573
5574 @smallexample
5575 (@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
5576 @end smallexample
5577
5578 @end table
5579
5580 @node Interrupted System Calls
5581 @subsection Interrupted System Calls
5582
5583 @cindex thread breakpoints and system calls
5584 @cindex system calls and thread breakpoints
5585 @cindex premature return from system calls
5586 There is an unfortunate side effect when using @value{GDBN} to debug
5587 multi-threaded programs. If one thread stops for a
5588 breakpoint, or for some other reason, and another thread is blocked in a
5589 system call, then the system call may return prematurely. This is a
5590 consequence of the interaction between multiple threads and the signals
5591 that @value{GDBN} uses to implement breakpoints and other events that
5592 stop execution.
5593
5594 To handle this problem, your program should check the return value of
5595 each system call and react appropriately. This is good programming
5596 style anyways.
5597
5598 For example, do not write code like this:
5599
5600 @smallexample
5601 sleep (10);
5602 @end smallexample
5603
5604 The call to @code{sleep} will return early if a different thread stops
5605 at a breakpoint or for some other reason.
5606
5607 Instead, write this:
5608
5609 @smallexample
5610 int unslept = 10;
5611 while (unslept > 0)
5612 unslept = sleep (unslept);
5613 @end smallexample
5614
5615 A system call is allowed to return early, so the system is still
5616 conforming to its specification. But @value{GDBN} does cause your
5617 multi-threaded program to behave differently than it would without
5618 @value{GDBN}.
5619
5620 Also, @value{GDBN} uses internal breakpoints in the thread library to
5621 monitor certain events such as thread creation and thread destruction.
5622 When such an event happens, a system call in another thread may return
5623 prematurely, even though your program does not appear to stop.
5624
5625 @node Observer Mode
5626 @subsection Observer Mode
5627
5628 If you want to build on non-stop mode and observe program behavior
5629 without any chance of disruption by @value{GDBN}, you can set
5630 variables to disable all of the debugger's attempts to modify state,
5631 whether by writing memory, inserting breakpoints, etc. These operate
5632 at a low level, intercepting operations from all commands.
5633
5634 When all of these are set to @code{off}, then @value{GDBN} is said to
5635 be @dfn{observer mode}. As a convenience, the variable
5636 @code{observer} can be set to disable these, plus enable non-stop
5637 mode.
5638
5639 Note that @value{GDBN} will not prevent you from making nonsensical
5640 combinations of these settings. For instance, if you have enabled
5641 @code{may-insert-breakpoints} but disabled @code{may-write-memory},
5642 then breakpoints that work by writing trap instructions into the code
5643 stream will still not be able to be placed.
5644
5645 @table @code
5646
5647 @kindex observer
5648 @item set observer on
5649 @itemx set observer off
5650 When set to @code{on}, this disables all the permission variables
5651 below (except for @code{insert-fast-tracepoints}), plus enables
5652 non-stop debugging. Setting this to @code{off} switches back to
5653 normal debugging, though remaining in non-stop mode.
5654
5655 @item show observer
5656 Show whether observer mode is on or off.
5657
5658 @kindex may-write-registers
5659 @item set may-write-registers on
5660 @itemx set may-write-registers off
5661 This controls whether @value{GDBN} will attempt to alter the values of
5662 registers, such as with assignment expressions in @code{print}, or the
5663 @code{jump} command. It defaults to @code{on}.
5664
5665 @item show may-write-registers
5666 Show the current permission to write registers.
5667
5668 @kindex may-write-memory
5669 @item set may-write-memory on
5670 @itemx set may-write-memory off
5671 This controls whether @value{GDBN} will attempt to alter the contents
5672 of memory, such as with assignment expressions in @code{print}. It
5673 defaults to @code{on}.
5674
5675 @item show may-write-memory
5676 Show the current permission to write memory.
5677
5678 @kindex may-insert-breakpoints
5679 @item set may-insert-breakpoints on
5680 @itemx set may-insert-breakpoints off
5681 This controls whether @value{GDBN} will attempt to insert breakpoints.
5682 This affects all breakpoints, including internal breakpoints defined
5683 by @value{GDBN}. It defaults to @code{on}.
5684
5685 @item show may-insert-breakpoints
5686 Show the current permission to insert breakpoints.
5687
5688 @kindex may-insert-tracepoints
5689 @item set may-insert-tracepoints on
5690 @itemx set may-insert-tracepoints off
5691 This controls whether @value{GDBN} will attempt to insert (regular)
5692 tracepoints at the beginning of a tracing experiment. It affects only
5693 non-fast tracepoints, fast tracepoints being under the control of
5694 @code{may-insert-fast-tracepoints}. It defaults to @code{on}.
5695
5696 @item show may-insert-tracepoints
5697 Show the current permission to insert tracepoints.
5698
5699 @kindex may-insert-fast-tracepoints
5700 @item set may-insert-fast-tracepoints on
5701 @itemx set may-insert-fast-tracepoints off
5702 This controls whether @value{GDBN} will attempt to insert fast
5703 tracepoints at the beginning of a tracing experiment. It affects only
5704 fast tracepoints, regular (non-fast) tracepoints being under the
5705 control of @code{may-insert-tracepoints}. It defaults to @code{on}.
5706
5707 @item show may-insert-fast-tracepoints
5708 Show the current permission to insert fast tracepoints.
5709
5710 @kindex may-interrupt
5711 @item set may-interrupt on
5712 @itemx set may-interrupt off
5713 This controls whether @value{GDBN} will attempt to interrupt or stop
5714 program execution. When this variable is @code{off}, the
5715 @code{interrupt} command will have no effect, nor will
5716 @kbd{Ctrl-c}. It defaults to @code{on}.
5717
5718 @item show may-interrupt
5719 Show the current permission to interrupt or stop the program.
5720
5721 @end table
5722
5723 @node Reverse Execution
5724 @chapter Running programs backward
5725 @cindex reverse execution
5726 @cindex running programs backward
5727
5728 When you are debugging a program, it is not unusual to realize that
5729 you have gone too far, and some event of interest has already happened.
5730 If the target environment supports it, @value{GDBN} can allow you to
5731 ``rewind'' the program by running it backward.
5732
5733 A target environment that supports reverse execution should be able
5734 to ``undo'' the changes in machine state that have taken place as the
5735 program was executing normally. Variables, registers etc.@: should
5736 revert to their previous values. Obviously this requires a great
5737 deal of sophistication on the part of the target environment; not
5738 all target environments can support reverse execution.
5739
5740 When a program is executed in reverse, the instructions that
5741 have most recently been executed are ``un-executed'', in reverse
5742 order. The program counter runs backward, following the previous
5743 thread of execution in reverse. As each instruction is ``un-executed'',
5744 the values of memory and/or registers that were changed by that
5745 instruction are reverted to their previous states. After executing
5746 a piece of source code in reverse, all side effects of that code
5747 should be ``undone'', and all variables should be returned to their
5748 prior values@footnote{
5749 Note that some side effects are easier to undo than others. For instance,
5750 memory and registers are relatively easy, but device I/O is hard. Some
5751 targets may be able undo things like device I/O, and some may not.
5752
5753 The contract between @value{GDBN} and the reverse executing target
5754 requires only that the target do something reasonable when
5755 @value{GDBN} tells it to execute backwards, and then report the
5756 results back to @value{GDBN}. Whatever the target reports back to
5757 @value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5758 assumes that the memory and registers that the target reports are in a
5759 consistant state, but @value{GDBN} accepts whatever it is given.
5760 }.
5761
5762 If you are debugging in a target environment that supports
5763 reverse execution, @value{GDBN} provides the following commands.
5764
5765 @table @code
5766 @kindex reverse-continue
5767 @kindex rc @r{(@code{reverse-continue})}
5768 @item reverse-continue @r{[}@var{ignore-count}@r{]}
5769 @itemx rc @r{[}@var{ignore-count}@r{]}
5770 Beginning at the point where your program last stopped, start executing
5771 in reverse. Reverse execution will stop for breakpoints and synchronous
5772 exceptions (signals), just like normal execution. Behavior of
5773 asynchronous signals depends on the target environment.
5774
5775 @kindex reverse-step
5776 @kindex rs @r{(@code{step})}
5777 @item reverse-step @r{[}@var{count}@r{]}
5778 Run the program backward until control reaches the start of a
5779 different source line; then stop it, and return control to @value{GDBN}.
5780
5781 Like the @code{step} command, @code{reverse-step} will only stop
5782 at the beginning of a source line. It ``un-executes'' the previously
5783 executed source line. If the previous source line included calls to
5784 debuggable functions, @code{reverse-step} will step (backward) into
5785 the called function, stopping at the beginning of the @emph{last}
5786 statement in the called function (typically a return statement).
5787
5788 Also, as with the @code{step} command, if non-debuggable functions are
5789 called, @code{reverse-step} will run thru them backward without stopping.
5790
5791 @kindex reverse-stepi
5792 @kindex rsi @r{(@code{reverse-stepi})}
5793 @item reverse-stepi @r{[}@var{count}@r{]}
5794 Reverse-execute one machine instruction. Note that the instruction
5795 to be reverse-executed is @emph{not} the one pointed to by the program
5796 counter, but the instruction executed prior to that one. For instance,
5797 if the last instruction was a jump, @code{reverse-stepi} will take you
5798 back from the destination of the jump to the jump instruction itself.
5799
5800 @kindex reverse-next
5801 @kindex rn @r{(@code{reverse-next})}
5802 @item reverse-next @r{[}@var{count}@r{]}
5803 Run backward to the beginning of the previous line executed in
5804 the current (innermost) stack frame. If the line contains function
5805 calls, they will be ``un-executed'' without stopping. Starting from
5806 the first line of a function, @code{reverse-next} will take you back
5807 to the caller of that function, @emph{before} the function was called,
5808 just as the normal @code{next} command would take you from the last
5809 line of a function back to its return to its caller
5810 @footnote{Unless the code is too heavily optimized.}.
5811
5812 @kindex reverse-nexti
5813 @kindex rni @r{(@code{reverse-nexti})}
5814 @item reverse-nexti @r{[}@var{count}@r{]}
5815 Like @code{nexti}, @code{reverse-nexti} executes a single instruction
5816 in reverse, except that called functions are ``un-executed'' atomically.
5817 That is, if the previously executed instruction was a return from
5818 another function, @code{reverse-nexti} will continue to execute
5819 in reverse until the call to that function (from the current stack
5820 frame) is reached.
5821
5822 @kindex reverse-finish
5823 @item reverse-finish
5824 Just as the @code{finish} command takes you to the point where the
5825 current function returns, @code{reverse-finish} takes you to the point
5826 where it was called. Instead of ending up at the end of the current
5827 function invocation, you end up at the beginning.
5828
5829 @kindex set exec-direction
5830 @item set exec-direction
5831 Set the direction of target execution.
5832 @itemx set exec-direction reverse
5833 @cindex execute forward or backward in time
5834 @value{GDBN} will perform all execution commands in reverse, until the
5835 exec-direction mode is changed to ``forward''. Affected commands include
5836 @code{step, stepi, next, nexti, continue, and finish}. The @code{return}
5837 command cannot be used in reverse mode.
5838 @item set exec-direction forward
5839 @value{GDBN} will perform all execution commands in the normal fashion.
5840 This is the default.
5841 @end table
5842
5843
5844 @node Process Record and Replay
5845 @chapter Recording Inferior's Execution and Replaying It
5846 @cindex process record and replay
5847 @cindex recording inferior's execution and replaying it
5848
5849 On some platforms, @value{GDBN} provides a special @dfn{process record
5850 and replay} target that can record a log of the process execution, and
5851 replay it later with both forward and reverse execution commands.
5852
5853 @cindex replay mode
5854 When this target is in use, if the execution log includes the record
5855 for the next instruction, @value{GDBN} will debug in @dfn{replay
5856 mode}. In the replay mode, the inferior does not really execute code
5857 instructions. Instead, all the events that normally happen during
5858 code execution are taken from the execution log. While code is not
5859 really executed in replay mode, the values of registers (including the
5860 program counter register) and the memory of the inferior are still
5861 changed as they normally would. Their contents are taken from the
5862 execution log.
5863
5864 @cindex record mode
5865 If the record for the next instruction is not in the execution log,
5866 @value{GDBN} will debug in @dfn{record mode}. In this mode, the
5867 inferior executes normally, and @value{GDBN} records the execution log
5868 for future replay.
5869
5870 The process record and replay target supports reverse execution
5871 (@pxref{Reverse Execution}), even if the platform on which the
5872 inferior runs does not. However, the reverse execution is limited in
5873 this case by the range of the instructions recorded in the execution
5874 log. In other words, reverse execution on platforms that don't
5875 support it directly can only be done in the replay mode.
5876
5877 When debugging in the reverse direction, @value{GDBN} will work in
5878 replay mode as long as the execution log includes the record for the
5879 previous instruction; otherwise, it will work in record mode, if the
5880 platform supports reverse execution, or stop if not.
5881
5882 For architecture environments that support process record and replay,
5883 @value{GDBN} provides the following commands:
5884
5885 @table @code
5886 @kindex target record
5887 @kindex record
5888 @kindex rec
5889 @item target record
5890 This command starts the process record and replay target. The process
5891 record and replay target can only debug a process that is already
5892 running. Therefore, you need first to start the process with the
5893 @kbd{run} or @kbd{start} commands, and then start the recording with
5894 the @kbd{target record} command.
5895
5896 Both @code{record} and @code{rec} are aliases of @code{target record}.
5897
5898 @cindex displaced stepping, and process record and replay
5899 Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
5900 will be automatically disabled when process record and replay target
5901 is started. That's because the process record and replay target
5902 doesn't support displaced stepping.
5903
5904 @cindex non-stop mode, and process record and replay
5905 @cindex asynchronous execution, and process record and replay
5906 If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
5907 the asynchronous execution mode (@pxref{Background Execution}), the
5908 process record and replay target cannot be started because it doesn't
5909 support these two modes.
5910
5911 @kindex record stop
5912 @kindex rec s
5913 @item record stop
5914 Stop the process record and replay target. When process record and
5915 replay target stops, the entire execution log will be deleted and the
5916 inferior will either be terminated, or will remain in its final state.
5917
5918 When you stop the process record and replay target in record mode (at
5919 the end of the execution log), the inferior will be stopped at the
5920 next instruction that would have been recorded. In other words, if
5921 you record for a while and then stop recording, the inferior process
5922 will be left in the same state as if the recording never happened.
5923
5924 On the other hand, if the process record and replay target is stopped
5925 while in replay mode (that is, not at the end of the execution log,
5926 but at some earlier point), the inferior process will become ``live''
5927 at that earlier state, and it will then be possible to continue the
5928 usual ``live'' debugging of the process from that state.
5929
5930 When the inferior process exits, or @value{GDBN} detaches from it,
5931 process record and replay target will automatically stop itself.
5932
5933 @kindex record save
5934 @item record save @var{filename}
5935 Save the execution log to a file @file{@var{filename}}.
5936 Default filename is @file{gdb_record.@var{process_id}}, where
5937 @var{process_id} is the process ID of the inferior.
5938
5939 @kindex record restore
5940 @item record restore @var{filename}
5941 Restore the execution log from a file @file{@var{filename}}.
5942 File must have been created with @code{record save}.
5943
5944 @kindex set record insn-number-max
5945 @item set record insn-number-max @var{limit}
5946 Set the limit of instructions to be recorded. Default value is 200000.
5947
5948 If @var{limit} is a positive number, then @value{GDBN} will start
5949 deleting instructions from the log once the number of the record
5950 instructions becomes greater than @var{limit}. For every new recorded
5951 instruction, @value{GDBN} will delete the earliest recorded
5952 instruction to keep the number of recorded instructions at the limit.
5953 (Since deleting recorded instructions loses information, @value{GDBN}
5954 lets you control what happens when the limit is reached, by means of
5955 the @code{stop-at-limit} option, described below.)
5956
5957 If @var{limit} is zero, @value{GDBN} will never delete recorded
5958 instructions from the execution log. The number of recorded
5959 instructions is unlimited in this case.
5960
5961 @kindex show record insn-number-max
5962 @item show record insn-number-max
5963 Show the limit of instructions to be recorded.
5964
5965 @kindex set record stop-at-limit
5966 @item set record stop-at-limit
5967 Control the behavior when the number of recorded instructions reaches
5968 the limit. If ON (the default), @value{GDBN} will stop when the limit
5969 is reached for the first time and ask you whether you want to stop the
5970 inferior or continue running it and recording the execution log. If
5971 you decide to continue recording, each new recorded instruction will
5972 cause the oldest one to be deleted.
5973
5974 If this option is OFF, @value{GDBN} will automatically delete the
5975 oldest record to make room for each new one, without asking.
5976
5977 @kindex show record stop-at-limit
5978 @item show record stop-at-limit
5979 Show the current setting of @code{stop-at-limit}.
5980
5981 @kindex set record memory-query
5982 @item set record memory-query
5983 Control the behavior when @value{GDBN} is unable to record memory
5984 changes caused by an instruction. If ON, @value{GDBN} will query
5985 whether to stop the inferior in that case.
5986
5987 If this option is OFF (the default), @value{GDBN} will automatically
5988 ignore the effect of such instructions on memory. Later, when
5989 @value{GDBN} replays this execution log, it will mark the log of this
5990 instruction as not accessible, and it will not affect the replay
5991 results.
5992
5993 @kindex show record memory-query
5994 @item show record memory-query
5995 Show the current setting of @code{memory-query}.
5996
5997 @kindex info record
5998 @item info record
5999 Show various statistics about the state of process record and its
6000 in-memory execution log buffer, including:
6001
6002 @itemize @bullet
6003 @item
6004 Whether in record mode or replay mode.
6005 @item
6006 Lowest recorded instruction number (counting from when the current execution log started recording instructions).
6007 @item
6008 Highest recorded instruction number.
6009 @item
6010 Current instruction about to be replayed (if in replay mode).
6011 @item
6012 Number of instructions contained in the execution log.
6013 @item
6014 Maximum number of instructions that may be contained in the execution log.
6015 @end itemize
6016
6017 @kindex record delete
6018 @kindex rec del
6019 @item record delete
6020 When record target runs in replay mode (``in the past''), delete the
6021 subsequent execution log and begin to record a new execution log starting
6022 from the current address. This means you will abandon the previously
6023 recorded ``future'' and begin recording a new ``future''.
6024 @end table
6025
6026
6027 @node Stack
6028 @chapter Examining the Stack
6029
6030 When your program has stopped, the first thing you need to know is where it
6031 stopped and how it got there.
6032
6033 @cindex call stack
6034 Each time your program performs a function call, information about the call
6035 is generated.
6036 That information includes the location of the call in your program,
6037 the arguments of the call,
6038 and the local variables of the function being called.
6039 The information is saved in a block of data called a @dfn{stack frame}.
6040 The stack frames are allocated in a region of memory called the @dfn{call
6041 stack}.
6042
6043 When your program stops, the @value{GDBN} commands for examining the
6044 stack allow you to see all of this information.
6045
6046 @cindex selected frame
6047 One of the stack frames is @dfn{selected} by @value{GDBN} and many
6048 @value{GDBN} commands refer implicitly to the selected frame. In
6049 particular, whenever you ask @value{GDBN} for the value of a variable in
6050 your program, the value is found in the selected frame. There are
6051 special @value{GDBN} commands to select whichever frame you are
6052 interested in. @xref{Selection, ,Selecting a Frame}.
6053
6054 When your program stops, @value{GDBN} automatically selects the
6055 currently executing frame and describes it briefly, similar to the
6056 @code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
6057
6058 @menu
6059 * Frames:: Stack frames
6060 * Backtrace:: Backtraces
6061 * Selection:: Selecting a frame
6062 * Frame Info:: Information on a frame
6063
6064 @end menu
6065
6066 @node Frames
6067 @section Stack Frames
6068
6069 @cindex frame, definition
6070 @cindex stack frame
6071 The call stack is divided up into contiguous pieces called @dfn{stack
6072 frames}, or @dfn{frames} for short; each frame is the data associated
6073 with one call to one function. The frame contains the arguments given
6074 to the function, the function's local variables, and the address at
6075 which the function is executing.
6076
6077 @cindex initial frame
6078 @cindex outermost frame
6079 @cindex innermost frame
6080 When your program is started, the stack has only one frame, that of the
6081 function @code{main}. This is called the @dfn{initial} frame or the
6082 @dfn{outermost} frame. Each time a function is called, a new frame is
6083 made. Each time a function returns, the frame for that function invocation
6084 is eliminated. If a function is recursive, there can be many frames for
6085 the same function. The frame for the function in which execution is
6086 actually occurring is called the @dfn{innermost} frame. This is the most
6087 recently created of all the stack frames that still exist.
6088
6089 @cindex frame pointer
6090 Inside your program, stack frames are identified by their addresses. A
6091 stack frame consists of many bytes, each of which has its own address; each
6092 kind of computer has a convention for choosing one byte whose
6093 address serves as the address of the frame. Usually this address is kept
6094 in a register called the @dfn{frame pointer register}
6095 (@pxref{Registers, $fp}) while execution is going on in that frame.
6096
6097 @cindex frame number
6098 @value{GDBN} assigns numbers to all existing stack frames, starting with
6099 zero for the innermost frame, one for the frame that called it,
6100 and so on upward. These numbers do not really exist in your program;
6101 they are assigned by @value{GDBN} to give you a way of designating stack
6102 frames in @value{GDBN} commands.
6103
6104 @c The -fomit-frame-pointer below perennially causes hbox overflow
6105 @c underflow problems.
6106 @cindex frameless execution
6107 Some compilers provide a way to compile functions so that they operate
6108 without stack frames. (For example, the @value{NGCC} option
6109 @smallexample
6110 @samp{-fomit-frame-pointer}
6111 @end smallexample
6112 generates functions without a frame.)
6113 This is occasionally done with heavily used library functions to save
6114 the frame setup time. @value{GDBN} has limited facilities for dealing
6115 with these function invocations. If the innermost function invocation
6116 has no stack frame, @value{GDBN} nevertheless regards it as though
6117 it had a separate frame, which is numbered zero as usual, allowing
6118 correct tracing of the function call chain. However, @value{GDBN} has
6119 no provision for frameless functions elsewhere in the stack.
6120
6121 @table @code
6122 @kindex frame@r{, command}
6123 @cindex current stack frame
6124 @item frame @var{args}
6125 The @code{frame} command allows you to move from one stack frame to another,
6126 and to print the stack frame you select. @var{args} may be either the
6127 address of the frame or the stack frame number. Without an argument,
6128 @code{frame} prints the current stack frame.
6129
6130 @kindex select-frame
6131 @cindex selecting frame silently
6132 @item select-frame
6133 The @code{select-frame} command allows you to move from one stack frame
6134 to another without printing the frame. This is the silent version of
6135 @code{frame}.
6136 @end table
6137
6138 @node Backtrace
6139 @section Backtraces
6140
6141 @cindex traceback
6142 @cindex call stack traces
6143 A backtrace is a summary of how your program got where it is. It shows one
6144 line per frame, for many frames, starting with the currently executing
6145 frame (frame zero), followed by its caller (frame one), and on up the
6146 stack.
6147
6148 @table @code
6149 @kindex backtrace
6150 @kindex bt @r{(@code{backtrace})}
6151 @item backtrace
6152 @itemx bt
6153 Print a backtrace of the entire stack: one line per frame for all
6154 frames in the stack.
6155
6156 You can stop the backtrace at any time by typing the system interrupt
6157 character, normally @kbd{Ctrl-c}.
6158
6159 @item backtrace @var{n}
6160 @itemx bt @var{n}
6161 Similar, but print only the innermost @var{n} frames.
6162
6163 @item backtrace -@var{n}
6164 @itemx bt -@var{n}
6165 Similar, but print only the outermost @var{n} frames.
6166
6167 @item backtrace full
6168 @itemx bt full
6169 @itemx bt full @var{n}
6170 @itemx bt full -@var{n}
6171 Print the values of the local variables also. @var{n} specifies the
6172 number of frames to print, as described above.
6173 @end table
6174
6175 @kindex where
6176 @kindex info stack
6177 The names @code{where} and @code{info stack} (abbreviated @code{info s})
6178 are additional aliases for @code{backtrace}.
6179
6180 @cindex multiple threads, backtrace
6181 In a multi-threaded program, @value{GDBN} by default shows the
6182 backtrace only for the current thread. To display the backtrace for
6183 several or all of the threads, use the command @code{thread apply}
6184 (@pxref{Threads, thread apply}). For example, if you type @kbd{thread
6185 apply all backtrace}, @value{GDBN} will display the backtrace for all
6186 the threads; this is handy when you debug a core dump of a
6187 multi-threaded program.
6188
6189 Each line in the backtrace shows the frame number and the function name.
6190 The program counter value is also shown---unless you use @code{set
6191 print address off}. The backtrace also shows the source file name and
6192 line number, as well as the arguments to the function. The program
6193 counter value is omitted if it is at the beginning of the code for that
6194 line number.
6195
6196 Here is an example of a backtrace. It was made with the command
6197 @samp{bt 3}, so it shows the innermost three frames.
6198
6199 @smallexample
6200 @group
6201 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
6202 at builtin.c:993
6203 #1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
6204 #2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
6205 at macro.c:71
6206 (More stack frames follow...)
6207 @end group
6208 @end smallexample
6209
6210 @noindent
6211 The display for frame zero does not begin with a program counter
6212 value, indicating that your program has stopped at the beginning of the
6213 code for line @code{993} of @code{builtin.c}.
6214
6215 @noindent
6216 The value of parameter @code{data} in frame 1 has been replaced by
6217 @code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
6218 only if it is a scalar (integer, pointer, enumeration, etc). See command
6219 @kbd{set print frame-arguments} in @ref{Print Settings} for more details
6220 on how to configure the way function parameter values are printed.
6221
6222 @cindex optimized out, in backtrace
6223 @cindex function call arguments, optimized out
6224 If your program was compiled with optimizations, some compilers will
6225 optimize away arguments passed to functions if those arguments are
6226 never used after the call. Such optimizations generate code that
6227 passes arguments through registers, but doesn't store those arguments
6228 in the stack frame. @value{GDBN} has no way of displaying such
6229 arguments in stack frames other than the innermost one. Here's what
6230 such a backtrace might look like:
6231
6232 @smallexample
6233 @group
6234 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
6235 at builtin.c:993
6236 #1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
6237 #2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
6238 at macro.c:71
6239 (More stack frames follow...)
6240 @end group
6241 @end smallexample
6242
6243 @noindent
6244 The values of arguments that were not saved in their stack frames are
6245 shown as @samp{<optimized out>}.
6246
6247 If you need to display the values of such optimized-out arguments,
6248 either deduce that from other variables whose values depend on the one
6249 you are interested in, or recompile without optimizations.
6250
6251 @cindex backtrace beyond @code{main} function
6252 @cindex program entry point
6253 @cindex startup code, and backtrace
6254 Most programs have a standard user entry point---a place where system
6255 libraries and startup code transition into user code. For C this is
6256 @code{main}@footnote{
6257 Note that embedded programs (the so-called ``free-standing''
6258 environment) are not required to have a @code{main} function as the
6259 entry point. They could even have multiple entry points.}.
6260 When @value{GDBN} finds the entry function in a backtrace
6261 it will terminate the backtrace, to avoid tracing into highly
6262 system-specific (and generally uninteresting) code.
6263
6264 If you need to examine the startup code, or limit the number of levels
6265 in a backtrace, you can change this behavior:
6266
6267 @table @code
6268 @item set backtrace past-main
6269 @itemx set backtrace past-main on
6270 @kindex set backtrace
6271 Backtraces will continue past the user entry point.
6272
6273 @item set backtrace past-main off
6274 Backtraces will stop when they encounter the user entry point. This is the
6275 default.
6276
6277 @item show backtrace past-main
6278 @kindex show backtrace
6279 Display the current user entry point backtrace policy.
6280
6281 @item set backtrace past-entry
6282 @itemx set backtrace past-entry on
6283 Backtraces will continue past the internal entry point of an application.
6284 This entry point is encoded by the linker when the application is built,
6285 and is likely before the user entry point @code{main} (or equivalent) is called.
6286
6287 @item set backtrace past-entry off
6288 Backtraces will stop when they encounter the internal entry point of an
6289 application. This is the default.
6290
6291 @item show backtrace past-entry
6292 Display the current internal entry point backtrace policy.
6293
6294 @item set backtrace limit @var{n}
6295 @itemx set backtrace limit 0
6296 @cindex backtrace limit
6297 Limit the backtrace to @var{n} levels. A value of zero means
6298 unlimited.
6299
6300 @item show backtrace limit
6301 Display the current limit on backtrace levels.
6302 @end table
6303
6304 @node Selection
6305 @section Selecting a Frame
6306
6307 Most commands for examining the stack and other data in your program work on
6308 whichever stack frame is selected at the moment. Here are the commands for
6309 selecting a stack frame; all of them finish by printing a brief description
6310 of the stack frame just selected.
6311
6312 @table @code
6313 @kindex frame@r{, selecting}
6314 @kindex f @r{(@code{frame})}
6315 @item frame @var{n}
6316 @itemx f @var{n}
6317 Select frame number @var{n}. Recall that frame zero is the innermost
6318 (currently executing) frame, frame one is the frame that called the
6319 innermost one, and so on. The highest-numbered frame is the one for
6320 @code{main}.
6321
6322 @item frame @var{addr}
6323 @itemx f @var{addr}
6324 Select the frame at address @var{addr}. This is useful mainly if the
6325 chaining of stack frames has been damaged by a bug, making it
6326 impossible for @value{GDBN} to assign numbers properly to all frames. In
6327 addition, this can be useful when your program has multiple stacks and
6328 switches between them.
6329
6330 On the SPARC architecture, @code{frame} needs two addresses to
6331 select an arbitrary frame: a frame pointer and a stack pointer.
6332
6333 On the MIPS and Alpha architecture, it needs two addresses: a stack
6334 pointer and a program counter.
6335
6336 On the 29k architecture, it needs three addresses: a register stack
6337 pointer, a program counter, and a memory stack pointer.
6338
6339 @kindex up
6340 @item up @var{n}
6341 Move @var{n} frames up the stack. For positive numbers @var{n}, this
6342 advances toward the outermost frame, to higher frame numbers, to frames
6343 that have existed longer. @var{n} defaults to one.
6344
6345 @kindex down
6346 @kindex do @r{(@code{down})}
6347 @item down @var{n}
6348 Move @var{n} frames down the stack. For positive numbers @var{n}, this
6349 advances toward the innermost frame, to lower frame numbers, to frames
6350 that were created more recently. @var{n} defaults to one. You may
6351 abbreviate @code{down} as @code{do}.
6352 @end table
6353
6354 All of these commands end by printing two lines of output describing the
6355 frame. The first line shows the frame number, the function name, the
6356 arguments, and the source file and line number of execution in that
6357 frame. The second line shows the text of that source line.
6358
6359 @need 1000
6360 For example:
6361
6362 @smallexample
6363 @group
6364 (@value{GDBP}) up
6365 #1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
6366 at env.c:10
6367 10 read_input_file (argv[i]);
6368 @end group
6369 @end smallexample
6370
6371 After such a printout, the @code{list} command with no arguments
6372 prints ten lines centered on the point of execution in the frame.
6373 You can also edit the program at the point of execution with your favorite
6374 editing program by typing @code{edit}.
6375 @xref{List, ,Printing Source Lines},
6376 for details.
6377
6378 @table @code
6379 @kindex down-silently
6380 @kindex up-silently
6381 @item up-silently @var{n}
6382 @itemx down-silently @var{n}
6383 These two commands are variants of @code{up} and @code{down},
6384 respectively; they differ in that they do their work silently, without
6385 causing display of the new frame. They are intended primarily for use
6386 in @value{GDBN} command scripts, where the output might be unnecessary and
6387 distracting.
6388 @end table
6389
6390 @node Frame Info
6391 @section Information About a Frame
6392
6393 There are several other commands to print information about the selected
6394 stack frame.
6395
6396 @table @code
6397 @item frame
6398 @itemx f
6399 When used without any argument, this command does not change which
6400 frame is selected, but prints a brief description of the currently
6401 selected stack frame. It can be abbreviated @code{f}. With an
6402 argument, this command is used to select a stack frame.
6403 @xref{Selection, ,Selecting a Frame}.
6404
6405 @kindex info frame
6406 @kindex info f @r{(@code{info frame})}
6407 @item info frame
6408 @itemx info f
6409 This command prints a verbose description of the selected stack frame,
6410 including:
6411
6412 @itemize @bullet
6413 @item
6414 the address of the frame
6415 @item
6416 the address of the next frame down (called by this frame)
6417 @item
6418 the address of the next frame up (caller of this frame)
6419 @item
6420 the language in which the source code corresponding to this frame is written
6421 @item
6422 the address of the frame's arguments
6423 @item
6424 the address of the frame's local variables
6425 @item
6426 the program counter saved in it (the address of execution in the caller frame)
6427 @item
6428 which registers were saved in the frame
6429 @end itemize
6430
6431 @noindent The verbose description is useful when
6432 something has gone wrong that has made the stack format fail to fit
6433 the usual conventions.
6434
6435 @item info frame @var{addr}
6436 @itemx info f @var{addr}
6437 Print a verbose description of the frame at address @var{addr}, without
6438 selecting that frame. The selected frame remains unchanged by this
6439 command. This requires the same kind of address (more than one for some
6440 architectures) that you specify in the @code{frame} command.
6441 @xref{Selection, ,Selecting a Frame}.
6442
6443 @kindex info args
6444 @item info args
6445 Print the arguments of the selected frame, each on a separate line.
6446
6447 @item info locals
6448 @kindex info locals
6449 Print the local variables of the selected frame, each on a separate
6450 line. These are all variables (declared either static or automatic)
6451 accessible at the point of execution of the selected frame.
6452
6453 @end table
6454
6455
6456 @node Source
6457 @chapter Examining Source Files
6458
6459 @value{GDBN} can print parts of your program's source, since the debugging
6460 information recorded in the program tells @value{GDBN} what source files were
6461 used to build it. When your program stops, @value{GDBN} spontaneously prints
6462 the line where it stopped. Likewise, when you select a stack frame
6463 (@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
6464 execution in that frame has stopped. You can print other portions of
6465 source files by explicit command.
6466
6467 If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
6468 prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
6469 @value{GDBN} under @sc{gnu} Emacs}.
6470
6471 @menu
6472 * List:: Printing source lines
6473 * Specify Location:: How to specify code locations
6474 * Edit:: Editing source files
6475 * Search:: Searching source files
6476 * Source Path:: Specifying source directories
6477 * Machine Code:: Source and machine code
6478 @end menu
6479
6480 @node List
6481 @section Printing Source Lines
6482
6483 @kindex list
6484 @kindex l @r{(@code{list})}
6485 To print lines from a source file, use the @code{list} command
6486 (abbreviated @code{l}). By default, ten lines are printed.
6487 There are several ways to specify what part of the file you want to
6488 print; see @ref{Specify Location}, for the full list.
6489
6490 Here are the forms of the @code{list} command most commonly used:
6491
6492 @table @code
6493 @item list @var{linenum}
6494 Print lines centered around line number @var{linenum} in the
6495 current source file.
6496
6497 @item list @var{function}
6498 Print lines centered around the beginning of function
6499 @var{function}.
6500
6501 @item list
6502 Print more lines. If the last lines printed were printed with a
6503 @code{list} command, this prints lines following the last lines
6504 printed; however, if the last line printed was a solitary line printed
6505 as part of displaying a stack frame (@pxref{Stack, ,Examining the
6506 Stack}), this prints lines centered around that line.
6507
6508 @item list -
6509 Print lines just before the lines last printed.
6510 @end table
6511
6512 @cindex @code{list}, how many lines to display
6513 By default, @value{GDBN} prints ten source lines with any of these forms of
6514 the @code{list} command. You can change this using @code{set listsize}:
6515
6516 @table @code
6517 @kindex set listsize
6518 @item set listsize @var{count}
6519 Make the @code{list} command display @var{count} source lines (unless
6520 the @code{list} argument explicitly specifies some other number).
6521
6522 @kindex show listsize
6523 @item show listsize
6524 Display the number of lines that @code{list} prints.
6525 @end table
6526
6527 Repeating a @code{list} command with @key{RET} discards the argument,
6528 so it is equivalent to typing just @code{list}. This is more useful
6529 than listing the same lines again. An exception is made for an
6530 argument of @samp{-}; that argument is preserved in repetition so that
6531 each repetition moves up in the source file.
6532
6533 In general, the @code{list} command expects you to supply zero, one or two
6534 @dfn{linespecs}. Linespecs specify source lines; there are several ways
6535 of writing them (@pxref{Specify Location}), but the effect is always
6536 to specify some source line.
6537
6538 Here is a complete description of the possible arguments for @code{list}:
6539
6540 @table @code
6541 @item list @var{linespec}
6542 Print lines centered around the line specified by @var{linespec}.
6543
6544 @item list @var{first},@var{last}
6545 Print lines from @var{first} to @var{last}. Both arguments are
6546 linespecs. When a @code{list} command has two linespecs, and the
6547 source file of the second linespec is omitted, this refers to
6548 the same source file as the first linespec.
6549
6550 @item list ,@var{last}
6551 Print lines ending with @var{last}.
6552
6553 @item list @var{first},
6554 Print lines starting with @var{first}.
6555
6556 @item list +
6557 Print lines just after the lines last printed.
6558
6559 @item list -
6560 Print lines just before the lines last printed.
6561
6562 @item list
6563 As described in the preceding table.
6564 @end table
6565
6566 @node Specify Location
6567 @section Specifying a Location
6568 @cindex specifying location
6569 @cindex linespec
6570
6571 Several @value{GDBN} commands accept arguments that specify a location
6572 of your program's code. Since @value{GDBN} is a source-level
6573 debugger, a location usually specifies some line in the source code;
6574 for that reason, locations are also known as @dfn{linespecs}.
6575
6576 Here are all the different ways of specifying a code location that
6577 @value{GDBN} understands:
6578
6579 @table @code
6580 @item @var{linenum}
6581 Specifies the line number @var{linenum} of the current source file.
6582
6583 @item -@var{offset}
6584 @itemx +@var{offset}
6585 Specifies the line @var{offset} lines before or after the @dfn{current
6586 line}. For the @code{list} command, the current line is the last one
6587 printed; for the breakpoint commands, this is the line at which
6588 execution stopped in the currently selected @dfn{stack frame}
6589 (@pxref{Frames, ,Frames}, for a description of stack frames.) When
6590 used as the second of the two linespecs in a @code{list} command,
6591 this specifies the line @var{offset} lines up or down from the first
6592 linespec.
6593
6594 @item @var{filename}:@var{linenum}
6595 Specifies the line @var{linenum} in the source file @var{filename}.
6596 If @var{filename} is a relative file name, then it will match any
6597 source file name with the same trailing components. For example, if
6598 @var{filename} is @samp{gcc/expr.c}, then it will match source file
6599 name of @file{/build/trunk/gcc/expr.c}, but not
6600 @file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
6601
6602 @item @var{function}
6603 Specifies the line that begins the body of the function @var{function}.
6604 For example, in C, this is the line with the open brace.
6605
6606 @item @var{function}:@var{label}
6607 Specifies the line where @var{label} appears in @var{function}.
6608
6609 @item @var{filename}:@var{function}
6610 Specifies the line that begins the body of the function @var{function}
6611 in the file @var{filename}. You only need the file name with a
6612 function name to avoid ambiguity when there are identically named
6613 functions in different source files.
6614
6615 @item @var{label}
6616 Specifies the line at which the label named @var{label} appears.
6617 @value{GDBN} searches for the label in the function corresponding to
6618 the currently selected stack frame. If there is no current selected
6619 stack frame (for instance, if the inferior is not running), then
6620 @value{GDBN} will not search for a label.
6621
6622 @item *@var{address}
6623 Specifies the program address @var{address}. For line-oriented
6624 commands, such as @code{list} and @code{edit}, this specifies a source
6625 line that contains @var{address}. For @code{break} and other
6626 breakpoint oriented commands, this can be used to set breakpoints in
6627 parts of your program which do not have debugging information or
6628 source files.
6629
6630 Here @var{address} may be any expression valid in the current working
6631 language (@pxref{Languages, working language}) that specifies a code
6632 address. In addition, as a convenience, @value{GDBN} extends the
6633 semantics of expressions used in locations to cover the situations
6634 that frequently happen during debugging. Here are the various forms
6635 of @var{address}:
6636
6637 @table @code
6638 @item @var{expression}
6639 Any expression valid in the current working language.
6640
6641 @item @var{funcaddr}
6642 An address of a function or procedure derived from its name. In C,
6643 C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
6644 simply the function's name @var{function} (and actually a special case
6645 of a valid expression). In Pascal and Modula-2, this is
6646 @code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
6647 (although the Pascal form also works).
6648
6649 This form specifies the address of the function's first instruction,
6650 before the stack frame and arguments have been set up.
6651
6652 @item '@var{filename}'::@var{funcaddr}
6653 Like @var{funcaddr} above, but also specifies the name of the source
6654 file explicitly. This is useful if the name of the function does not
6655 specify the function unambiguously, e.g., if there are several
6656 functions with identical names in different source files.
6657 @end table
6658
6659 @end table
6660
6661
6662 @node Edit
6663 @section Editing Source Files
6664 @cindex editing source files
6665
6666 @kindex edit
6667 @kindex e @r{(@code{edit})}
6668 To edit the lines in a source file, use the @code{edit} command.
6669 The editing program of your choice
6670 is invoked with the current line set to
6671 the active line in the program.
6672 Alternatively, there are several ways to specify what part of the file you
6673 want to print if you want to see other parts of the program:
6674
6675 @table @code
6676 @item edit @var{location}
6677 Edit the source file specified by @code{location}. Editing starts at
6678 that @var{location}, e.g., at the specified source line of the
6679 specified file. @xref{Specify Location}, for all the possible forms
6680 of the @var{location} argument; here are the forms of the @code{edit}
6681 command most commonly used:
6682
6683 @table @code
6684 @item edit @var{number}
6685 Edit the current source file with @var{number} as the active line number.
6686
6687 @item edit @var{function}
6688 Edit the file containing @var{function} at the beginning of its definition.
6689 @end table
6690
6691 @end table
6692
6693 @subsection Choosing your Editor
6694 You can customize @value{GDBN} to use any editor you want
6695 @footnote{
6696 The only restriction is that your editor (say @code{ex}), recognizes the
6697 following command-line syntax:
6698 @smallexample
6699 ex +@var{number} file
6700 @end smallexample
6701 The optional numeric value +@var{number} specifies the number of the line in
6702 the file where to start editing.}.
6703 By default, it is @file{@value{EDITOR}}, but you can change this
6704 by setting the environment variable @code{EDITOR} before using
6705 @value{GDBN}. For example, to configure @value{GDBN} to use the
6706 @code{vi} editor, you could use these commands with the @code{sh} shell:
6707 @smallexample
6708 EDITOR=/usr/bin/vi
6709 export EDITOR
6710 gdb @dots{}
6711 @end smallexample
6712 or in the @code{csh} shell,
6713 @smallexample
6714 setenv EDITOR /usr/bin/vi
6715 gdb @dots{}
6716 @end smallexample
6717
6718 @node Search
6719 @section Searching Source Files
6720 @cindex searching source files
6721
6722 There are two commands for searching through the current source file for a
6723 regular expression.
6724
6725 @table @code
6726 @kindex search
6727 @kindex forward-search
6728 @item forward-search @var{regexp}
6729 @itemx search @var{regexp}
6730 The command @samp{forward-search @var{regexp}} checks each line,
6731 starting with the one following the last line listed, for a match for
6732 @var{regexp}. It lists the line that is found. You can use the
6733 synonym @samp{search @var{regexp}} or abbreviate the command name as
6734 @code{fo}.
6735
6736 @kindex reverse-search
6737 @item reverse-search @var{regexp}
6738 The command @samp{reverse-search @var{regexp}} checks each line, starting
6739 with the one before the last line listed and going backward, for a match
6740 for @var{regexp}. It lists the line that is found. You can abbreviate
6741 this command as @code{rev}.
6742 @end table
6743
6744 @node Source Path
6745 @section Specifying Source Directories
6746
6747 @cindex source path
6748 @cindex directories for source files
6749 Executable programs sometimes do not record the directories of the source
6750 files from which they were compiled, just the names. Even when they do,
6751 the directories could be moved between the compilation and your debugging
6752 session. @value{GDBN} has a list of directories to search for source files;
6753 this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6754 it tries all the directories in the list, in the order they are present
6755 in the list, until it finds a file with the desired name.
6756
6757 For example, suppose an executable references the file
6758 @file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6759 @file{/mnt/cross}. The file is first looked up literally; if this
6760 fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6761 fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6762 message is printed. @value{GDBN} does not look up the parts of the
6763 source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6764 Likewise, the subdirectories of the source path are not searched: if
6765 the source path is @file{/mnt/cross}, and the binary refers to
6766 @file{foo.c}, @value{GDBN} would not find it under
6767 @file{/mnt/cross/usr/src/foo-1.0/lib}.
6768
6769 Plain file names, relative file names with leading directories, file
6770 names containing dots, etc.@: are all treated as described above; for
6771 instance, if the source path is @file{/mnt/cross}, and the source file
6772 is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
6773 @file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
6774 that---@file{/mnt/cross/foo.c}.
6775
6776 Note that the executable search path is @emph{not} used to locate the
6777 source files.
6778
6779 Whenever you reset or rearrange the source path, @value{GDBN} clears out
6780 any information it has cached about where source files are found and where
6781 each line is in the file.
6782
6783 @kindex directory
6784 @kindex dir
6785 When you start @value{GDBN}, its source path includes only @samp{cdir}
6786 and @samp{cwd}, in that order.
6787 To add other directories, use the @code{directory} command.
6788
6789 The search path is used to find both program source files and @value{GDBN}
6790 script files (read using the @samp{-command} option and @samp{source} command).
6791
6792 In addition to the source path, @value{GDBN} provides a set of commands
6793 that manage a list of source path substitution rules. A @dfn{substitution
6794 rule} specifies how to rewrite source directories stored in the program's
6795 debug information in case the sources were moved to a different
6796 directory between compilation and debugging. A rule is made of
6797 two strings, the first specifying what needs to be rewritten in
6798 the path, and the second specifying how it should be rewritten.
6799 In @ref{set substitute-path}, we name these two parts @var{from} and
6800 @var{to} respectively. @value{GDBN} does a simple string replacement
6801 of @var{from} with @var{to} at the start of the directory part of the
6802 source file name, and uses that result instead of the original file
6803 name to look up the sources.
6804
6805 Using the previous example, suppose the @file{foo-1.0} tree has been
6806 moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
6807 @value{GDBN} to replace @file{/usr/src} in all source path names with
6808 @file{/mnt/cross}. The first lookup will then be
6809 @file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
6810 of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
6811 substitution rule, use the @code{set substitute-path} command
6812 (@pxref{set substitute-path}).
6813
6814 To avoid unexpected substitution results, a rule is applied only if the
6815 @var{from} part of the directory name ends at a directory separator.
6816 For instance, a rule substituting @file{/usr/source} into
6817 @file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
6818 not to @file{/usr/sourceware/foo-2.0}. And because the substitution
6819 is applied only at the beginning of the directory name, this rule will
6820 not be applied to @file{/root/usr/source/baz.c} either.
6821
6822 In many cases, you can achieve the same result using the @code{directory}
6823 command. However, @code{set substitute-path} can be more efficient in
6824 the case where the sources are organized in a complex tree with multiple
6825 subdirectories. With the @code{directory} command, you need to add each
6826 subdirectory of your project. If you moved the entire tree while
6827 preserving its internal organization, then @code{set substitute-path}
6828 allows you to direct the debugger to all the sources with one single
6829 command.
6830
6831 @code{set substitute-path} is also more than just a shortcut command.
6832 The source path is only used if the file at the original location no
6833 longer exists. On the other hand, @code{set substitute-path} modifies
6834 the debugger behavior to look at the rewritten location instead. So, if
6835 for any reason a source file that is not relevant to your executable is
6836 located at the original location, a substitution rule is the only
6837 method available to point @value{GDBN} at the new location.
6838
6839 @cindex @samp{--with-relocated-sources}
6840 @cindex default source path substitution
6841 You can configure a default source path substitution rule by
6842 configuring @value{GDBN} with the
6843 @samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
6844 should be the name of a directory under @value{GDBN}'s configured
6845 prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
6846 directory names in debug information under @var{dir} will be adjusted
6847 automatically if the installed @value{GDBN} is moved to a new
6848 location. This is useful if @value{GDBN}, libraries or executables
6849 with debug information and corresponding source code are being moved
6850 together.
6851
6852 @table @code
6853 @item directory @var{dirname} @dots{}
6854 @item dir @var{dirname} @dots{}
6855 Add directory @var{dirname} to the front of the source path. Several
6856 directory names may be given to this command, separated by @samp{:}
6857 (@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
6858 part of absolute file names) or
6859 whitespace. You may specify a directory that is already in the source
6860 path; this moves it forward, so @value{GDBN} searches it sooner.
6861
6862 @kindex cdir
6863 @kindex cwd
6864 @vindex $cdir@r{, convenience variable}
6865 @vindex $cwd@r{, convenience variable}
6866 @cindex compilation directory
6867 @cindex current directory
6868 @cindex working directory
6869 @cindex directory, current
6870 @cindex directory, compilation
6871 You can use the string @samp{$cdir} to refer to the compilation
6872 directory (if one is recorded), and @samp{$cwd} to refer to the current
6873 working directory. @samp{$cwd} is not the same as @samp{.}---the former
6874 tracks the current working directory as it changes during your @value{GDBN}
6875 session, while the latter is immediately expanded to the current
6876 directory at the time you add an entry to the source path.
6877
6878 @item directory
6879 Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
6880
6881 @c RET-repeat for @code{directory} is explicitly disabled, but since
6882 @c repeating it would be a no-op we do not say that. (thanks to RMS)
6883
6884 @item set directories @var{path-list}
6885 @kindex set directories
6886 Set the source path to @var{path-list}.
6887 @samp{$cdir:$cwd} are added if missing.
6888
6889 @item show directories
6890 @kindex show directories
6891 Print the source path: show which directories it contains.
6892
6893 @anchor{set substitute-path}
6894 @item set substitute-path @var{from} @var{to}
6895 @kindex set substitute-path
6896 Define a source path substitution rule, and add it at the end of the
6897 current list of existing substitution rules. If a rule with the same
6898 @var{from} was already defined, then the old rule is also deleted.
6899
6900 For example, if the file @file{/foo/bar/baz.c} was moved to
6901 @file{/mnt/cross/baz.c}, then the command
6902
6903 @smallexample
6904 (@value{GDBP}) set substitute-path /usr/src /mnt/cross
6905 @end smallexample
6906
6907 @noindent
6908 will tell @value{GDBN} to replace @samp{/usr/src} with
6909 @samp{/mnt/cross}, which will allow @value{GDBN} to find the file
6910 @file{baz.c} even though it was moved.
6911
6912 In the case when more than one substitution rule have been defined,
6913 the rules are evaluated one by one in the order where they have been
6914 defined. The first one matching, if any, is selected to perform
6915 the substitution.
6916
6917 For instance, if we had entered the following commands:
6918
6919 @smallexample
6920 (@value{GDBP}) set substitute-path /usr/src/include /mnt/include
6921 (@value{GDBP}) set substitute-path /usr/src /mnt/src
6922 @end smallexample
6923
6924 @noindent
6925 @value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
6926 @file{/mnt/include/defs.h} by using the first rule. However, it would
6927 use the second rule to rewrite @file{/usr/src/lib/foo.c} into
6928 @file{/mnt/src/lib/foo.c}.
6929
6930
6931 @item unset substitute-path [path]
6932 @kindex unset substitute-path
6933 If a path is specified, search the current list of substitution rules
6934 for a rule that would rewrite that path. Delete that rule if found.
6935 A warning is emitted by the debugger if no rule could be found.
6936
6937 If no path is specified, then all substitution rules are deleted.
6938
6939 @item show substitute-path [path]
6940 @kindex show substitute-path
6941 If a path is specified, then print the source path substitution rule
6942 which would rewrite that path, if any.
6943
6944 If no path is specified, then print all existing source path substitution
6945 rules.
6946
6947 @end table
6948
6949 If your source path is cluttered with directories that are no longer of
6950 interest, @value{GDBN} may sometimes cause confusion by finding the wrong
6951 versions of source. You can correct the situation as follows:
6952
6953 @enumerate
6954 @item
6955 Use @code{directory} with no argument to reset the source path to its default value.
6956
6957 @item
6958 Use @code{directory} with suitable arguments to reinstall the
6959 directories you want in the source path. You can add all the
6960 directories in one command.
6961 @end enumerate
6962
6963 @node Machine Code
6964 @section Source and Machine Code
6965 @cindex source line and its code address
6966
6967 You can use the command @code{info line} to map source lines to program
6968 addresses (and vice versa), and the command @code{disassemble} to display
6969 a range of addresses as machine instructions. You can use the command
6970 @code{set disassemble-next-line} to set whether to disassemble next
6971 source line when execution stops. When run under @sc{gnu} Emacs
6972 mode, the @code{info line} command causes the arrow to point to the
6973 line specified. Also, @code{info line} prints addresses in symbolic form as
6974 well as hex.
6975
6976 @table @code
6977 @kindex info line
6978 @item info line @var{linespec}
6979 Print the starting and ending addresses of the compiled code for
6980 source line @var{linespec}. You can specify source lines in any of
6981 the ways documented in @ref{Specify Location}.
6982 @end table
6983
6984 For example, we can use @code{info line} to discover the location of
6985 the object code for the first line of function
6986 @code{m4_changequote}:
6987
6988 @c FIXME: I think this example should also show the addresses in
6989 @c symbolic form, as they usually would be displayed.
6990 @smallexample
6991 (@value{GDBP}) info line m4_changequote
6992 Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
6993 @end smallexample
6994
6995 @noindent
6996 @cindex code address and its source line
6997 We can also inquire (using @code{*@var{addr}} as the form for
6998 @var{linespec}) what source line covers a particular address:
6999 @smallexample
7000 (@value{GDBP}) info line *0x63ff
7001 Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
7002 @end smallexample
7003
7004 @cindex @code{$_} and @code{info line}
7005 @cindex @code{x} command, default address
7006 @kindex x@r{(examine), and} info line
7007 After @code{info line}, the default address for the @code{x} command
7008 is changed to the starting address of the line, so that @samp{x/i} is
7009 sufficient to begin examining the machine code (@pxref{Memory,
7010 ,Examining Memory}). Also, this address is saved as the value of the
7011 convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
7012 Variables}).
7013
7014 @table @code
7015 @kindex disassemble
7016 @cindex assembly instructions
7017 @cindex instructions, assembly
7018 @cindex machine instructions
7019 @cindex listing machine instructions
7020 @item disassemble
7021 @itemx disassemble /m
7022 @itemx disassemble /r
7023 This specialized command dumps a range of memory as machine
7024 instructions. It can also print mixed source+disassembly by specifying
7025 the @code{/m} modifier and print the raw instructions in hex as well as
7026 in symbolic form by specifying the @code{/r}.
7027 The default memory range is the function surrounding the
7028 program counter of the selected frame. A single argument to this
7029 command is a program counter value; @value{GDBN} dumps the function
7030 surrounding this value. When two arguments are given, they should
7031 be separated by a comma, possibly surrounded by whitespace. The
7032 arguments specify a range of addresses to dump, in one of two forms:
7033
7034 @table @code
7035 @item @var{start},@var{end}
7036 the addresses from @var{start} (inclusive) to @var{end} (exclusive)
7037 @item @var{start},+@var{length}
7038 the addresses from @var{start} (inclusive) to
7039 @code{@var{start}+@var{length}} (exclusive).
7040 @end table
7041
7042 @noindent
7043 When 2 arguments are specified, the name of the function is also
7044 printed (since there could be several functions in the given range).
7045
7046 The argument(s) can be any expression yielding a numeric value, such as
7047 @samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
7048
7049 If the range of memory being disassembled contains current program counter,
7050 the instruction at that location is shown with a @code{=>} marker.
7051 @end table
7052
7053 The following example shows the disassembly of a range of addresses of
7054 HP PA-RISC 2.0 code:
7055
7056 @smallexample
7057 (@value{GDBP}) disas 0x32c4, 0x32e4
7058 Dump of assembler code from 0x32c4 to 0x32e4:
7059 0x32c4 <main+204>: addil 0,dp
7060 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
7061 0x32cc <main+212>: ldil 0x3000,r31
7062 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
7063 0x32d4 <main+220>: ldo 0(r31),rp
7064 0x32d8 <main+224>: addil -0x800,dp
7065 0x32dc <main+228>: ldo 0x588(r1),r26
7066 0x32e0 <main+232>: ldil 0x3000,r31
7067 End of assembler dump.
7068 @end smallexample
7069
7070 Here is an example showing mixed source+assembly for Intel x86, when the
7071 program is stopped just after function prologue:
7072
7073 @smallexample
7074 (@value{GDBP}) disas /m main
7075 Dump of assembler code for function main:
7076 5 @{
7077 0x08048330 <+0>: push %ebp
7078 0x08048331 <+1>: mov %esp,%ebp
7079 0x08048333 <+3>: sub $0x8,%esp
7080 0x08048336 <+6>: and $0xfffffff0,%esp
7081 0x08048339 <+9>: sub $0x10,%esp
7082
7083 6 printf ("Hello.\n");
7084 => 0x0804833c <+12>: movl $0x8048440,(%esp)
7085 0x08048343 <+19>: call 0x8048284 <puts@@plt>
7086
7087 7 return 0;
7088 8 @}
7089 0x08048348 <+24>: mov $0x0,%eax
7090 0x0804834d <+29>: leave
7091 0x0804834e <+30>: ret
7092
7093 End of assembler dump.
7094 @end smallexample
7095
7096 Here is another example showing raw instructions in hex for AMD x86-64,
7097
7098 @smallexample
7099 (gdb) disas /r 0x400281,+10
7100 Dump of assembler code from 0x400281 to 0x40028b:
7101 0x0000000000400281: 38 36 cmp %dh,(%rsi)
7102 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax
7103 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx)
7104 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al
7105 End of assembler dump.
7106 @end smallexample
7107
7108 Some architectures have more than one commonly-used set of instruction
7109 mnemonics or other syntax.
7110
7111 For programs that were dynamically linked and use shared libraries,
7112 instructions that call functions or branch to locations in the shared
7113 libraries might show a seemingly bogus location---it's actually a
7114 location of the relocation table. On some architectures, @value{GDBN}
7115 might be able to resolve these to actual function names.
7116
7117 @table @code
7118 @kindex set disassembly-flavor
7119 @cindex Intel disassembly flavor
7120 @cindex AT&T disassembly flavor
7121 @item set disassembly-flavor @var{instruction-set}
7122 Select the instruction set to use when disassembling the
7123 program via the @code{disassemble} or @code{x/i} commands.
7124
7125 Currently this command is only defined for the Intel x86 family. You
7126 can set @var{instruction-set} to either @code{intel} or @code{att}.
7127 The default is @code{att}, the AT&T flavor used by default by Unix
7128 assemblers for x86-based targets.
7129
7130 @kindex show disassembly-flavor
7131 @item show disassembly-flavor
7132 Show the current setting of the disassembly flavor.
7133 @end table
7134
7135 @table @code
7136 @kindex set disassemble-next-line
7137 @kindex show disassemble-next-line
7138 @item set disassemble-next-line
7139 @itemx show disassemble-next-line
7140 Control whether or not @value{GDBN} will disassemble the next source
7141 line or instruction when execution stops. If ON, @value{GDBN} will
7142 display disassembly of the next source line when execution of the
7143 program being debugged stops. This is @emph{in addition} to
7144 displaying the source line itself, which @value{GDBN} always does if
7145 possible. If the next source line cannot be displayed for some reason
7146 (e.g., if @value{GDBN} cannot find the source file, or there's no line
7147 info in the debug info), @value{GDBN} will display disassembly of the
7148 next @emph{instruction} instead of showing the next source line. If
7149 AUTO, @value{GDBN} will display disassembly of next instruction only
7150 if the source line cannot be displayed. This setting causes
7151 @value{GDBN} to display some feedback when you step through a function
7152 with no line info or whose source file is unavailable. The default is
7153 OFF, which means never display the disassembly of the next line or
7154 instruction.
7155 @end table
7156
7157
7158 @node Data
7159 @chapter Examining Data
7160
7161 @cindex printing data
7162 @cindex examining data
7163 @kindex print
7164 @kindex inspect
7165 @c "inspect" is not quite a synonym if you are using Epoch, which we do not
7166 @c document because it is nonstandard... Under Epoch it displays in a
7167 @c different window or something like that.
7168 The usual way to examine data in your program is with the @code{print}
7169 command (abbreviated @code{p}), or its synonym @code{inspect}. It
7170 evaluates and prints the value of an expression of the language your
7171 program is written in (@pxref{Languages, ,Using @value{GDBN} with
7172 Different Languages}). It may also print the expression using a
7173 Python-based pretty-printer (@pxref{Pretty Printing}).
7174
7175 @table @code
7176 @item print @var{expr}
7177 @itemx print /@var{f} @var{expr}
7178 @var{expr} is an expression (in the source language). By default the
7179 value of @var{expr} is printed in a format appropriate to its data type;
7180 you can choose a different format by specifying @samp{/@var{f}}, where
7181 @var{f} is a letter specifying the format; see @ref{Output Formats,,Output
7182 Formats}.
7183
7184 @item print
7185 @itemx print /@var{f}
7186 @cindex reprint the last value
7187 If you omit @var{expr}, @value{GDBN} displays the last value again (from the
7188 @dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
7189 conveniently inspect the same value in an alternative format.
7190 @end table
7191
7192 A more low-level way of examining data is with the @code{x} command.
7193 It examines data in memory at a specified address and prints it in a
7194 specified format. @xref{Memory, ,Examining Memory}.
7195
7196 If you are interested in information about types, or about how the
7197 fields of a struct or a class are declared, use the @code{ptype @var{exp}}
7198 command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7199 Table}.
7200
7201 @cindex exploring hierarchical data structures
7202 @kindex explore
7203 Another way of examining values of expressions and type information is
7204 through the Python extension command @code{explore} (available only if
7205 the @value{GDBN} build is configured with @code{--with-python}). It
7206 offers an interactive way to start at the highest level (or, the most
7207 abstract level) of the data type of an expression (or, the data type
7208 itself) and explore all the way down to leaf scalar values/fields
7209 embedded in the higher level data types.
7210
7211 @table @code
7212 @item explore @var{arg}
7213 @var{arg} is either an expression (in the source language), or a type
7214 visible in the current context of the program being debugged.
7215 @end table
7216
7217 The working of the @code{explore} command can be illustrated with an
7218 example. If a data type @code{struct ComplexStruct} is defined in your
7219 C program as
7220
7221 @smallexample
7222 struct SimpleStruct
7223 @{
7224 int i;
7225 double d;
7226 @};
7227
7228 struct ComplexStruct
7229 @{
7230 struct SimpleStruct *ss_p;
7231 int arr[10];
7232 @};
7233 @end smallexample
7234
7235 @noindent
7236 followed by variable declarations as
7237
7238 @smallexample
7239 struct SimpleStruct ss = @{ 10, 1.11 @};
7240 struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @};
7241 @end smallexample
7242
7243 @noindent
7244 then, the value of the variable @code{cs} can be explored using the
7245 @code{explore} command as follows.
7246
7247 @smallexample
7248 (gdb) explore cs
7249 The value of `cs' is a struct/class of type `struct ComplexStruct' with
7250 the following fields:
7251
7252 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'>
7253 arr = <Enter 1 to explore this field of type `int [10]'>
7254
7255 Enter the field number of choice:
7256 @end smallexample
7257
7258 @noindent
7259 Since the fields of @code{cs} are not scalar values, you are being
7260 prompted to chose the field you want to explore. Let's say you choose
7261 the field @code{ss_p} by entering @code{0}. Then, since this field is a
7262 pointer, you will be asked if it is pointing to a single value. From
7263 the declaration of @code{cs} above, it is indeed pointing to a single
7264 value, hence you enter @code{y}. If you enter @code{n}, then you will
7265 be asked if it were pointing to an array of values, in which case this
7266 field will be explored as if it were an array.
7267
7268 @smallexample
7269 `cs.ss_p' is a pointer to a value of type `struct SimpleStruct'
7270 Continue exploring it as a pointer to a single value [y/n]: y
7271 The value of `*(cs.ss_p)' is a struct/class of type `struct
7272 SimpleStruct' with the following fields:
7273
7274 i = 10 .. (Value of type `int')
7275 d = 1.1100000000000001 .. (Value of type `double')
7276
7277 Press enter to return to parent value:
7278 @end smallexample
7279
7280 @noindent
7281 If the field @code{arr} of @code{cs} was chosen for exploration by
7282 entering @code{1} earlier, then since it is as array, you will be
7283 prompted to enter the index of the element in the array that you want
7284 to explore.
7285
7286 @smallexample
7287 `cs.arr' is an array of `int'.
7288 Enter the index of the element you want to explore in `cs.arr': 5
7289
7290 `(cs.arr)[5]' is a scalar value of type `int'.
7291
7292 (cs.arr)[5] = 4
7293
7294 Press enter to return to parent value:
7295 @end smallexample
7296
7297 In general, at any stage of exploration, you can go deeper towards the
7298 leaf values by responding to the prompts appropriately, or hit the
7299 return key to return to the enclosing data structure (the @i{higher}
7300 level data structure).
7301
7302 Similar to exploring values, you can use the @code{explore} command to
7303 explore types. Instead of specifying a value (which is typically a
7304 variable name or an expression valid in the current context of the
7305 program being debugged), you specify a type name. If you consider the
7306 same example as above, your can explore the type
7307 @code{struct ComplexStruct} by passing the argument
7308 @code{struct ComplexStruct} to the @code{explore} command.
7309
7310 @smallexample
7311 (gdb) explore struct ComplexStruct
7312 @end smallexample
7313
7314 @noindent
7315 By responding to the prompts appropriately in the subsequent interactive
7316 session, you can explore the type @code{struct ComplexStruct} in a
7317 manner similar to how the value @code{cs} was explored in the above
7318 example.
7319
7320 The @code{explore} command also has two sub-commands,
7321 @code{explore value} and @code{explore type}. The former sub-command is
7322 a way to explicitly specify that value exploration of the argument is
7323 being invoked, while the latter is a way to explicitly specify that type
7324 exploration of the argument is being invoked.
7325
7326 @table @code
7327 @item explore value @var{expr}
7328 @cindex explore value
7329 This sub-command of @code{explore} explores the value of the
7330 expression @var{expr} (if @var{expr} is an expression valid in the
7331 current context of the program being debugged). The behavior of this
7332 command is identical to that of the behavior of the @code{explore}
7333 command being passed the argument @var{expr}.
7334
7335 @item explore type @var{arg}
7336 @cindex explore type
7337 This sub-command of @code{explore} explores the type of @var{arg} (if
7338 @var{arg} is a type visible in the current context of program being
7339 debugged), or the type of the value/expression @var{arg} (if @var{arg}
7340 is an expression valid in the current context of the program being
7341 debugged). If @var{arg} is a type, then the behavior of this command is
7342 identical to that of the @code{explore} command being passed the
7343 argument @var{arg}. If @var{arg} is an expression, then the behavior of
7344 this command will be identical to that of the @code{explore} command
7345 being passed the type of @var{arg} as the argument.
7346 @end table
7347
7348 @menu
7349 * Expressions:: Expressions
7350 * Ambiguous Expressions:: Ambiguous Expressions
7351 * Variables:: Program variables
7352 * Arrays:: Artificial arrays
7353 * Output Formats:: Output formats
7354 * Memory:: Examining memory
7355 * Auto Display:: Automatic display
7356 * Print Settings:: Print settings
7357 * Pretty Printing:: Python pretty printing
7358 * Value History:: Value history
7359 * Convenience Vars:: Convenience variables
7360 * Registers:: Registers
7361 * Floating Point Hardware:: Floating point hardware
7362 * Vector Unit:: Vector Unit
7363 * OS Information:: Auxiliary data provided by operating system
7364 * Memory Region Attributes:: Memory region attributes
7365 * Dump/Restore Files:: Copy between memory and a file
7366 * Core File Generation:: Cause a program dump its core
7367 * Character Sets:: Debugging programs that use a different
7368 character set than GDB does
7369 * Caching Remote Data:: Data caching for remote targets
7370 * Searching Memory:: Searching memory for a sequence of bytes
7371 @end menu
7372
7373 @node Expressions
7374 @section Expressions
7375
7376 @cindex expressions
7377 @code{print} and many other @value{GDBN} commands accept an expression and
7378 compute its value. Any kind of constant, variable or operator defined
7379 by the programming language you are using is valid in an expression in
7380 @value{GDBN}. This includes conditional expressions, function calls,
7381 casts, and string constants. It also includes preprocessor macros, if
7382 you compiled your program to include this information; see
7383 @ref{Compilation}.
7384
7385 @cindex arrays in expressions
7386 @value{GDBN} supports array constants in expressions input by
7387 the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
7388 you can use the command @code{print @{1, 2, 3@}} to create an array
7389 of three integers. If you pass an array to a function or assign it
7390 to a program variable, @value{GDBN} copies the array to memory that
7391 is @code{malloc}ed in the target program.
7392
7393 Because C is so widespread, most of the expressions shown in examples in
7394 this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
7395 Languages}, for information on how to use expressions in other
7396 languages.
7397
7398 In this section, we discuss operators that you can use in @value{GDBN}
7399 expressions regardless of your programming language.
7400
7401 @cindex casts, in expressions
7402 Casts are supported in all languages, not just in C, because it is so
7403 useful to cast a number into a pointer in order to examine a structure
7404 at that address in memory.
7405 @c FIXME: casts supported---Mod2 true?
7406
7407 @value{GDBN} supports these operators, in addition to those common
7408 to programming languages:
7409
7410 @table @code
7411 @item @@
7412 @samp{@@} is a binary operator for treating parts of memory as arrays.
7413 @xref{Arrays, ,Artificial Arrays}, for more information.
7414
7415 @item ::
7416 @samp{::} allows you to specify a variable in terms of the file or
7417 function where it is defined. @xref{Variables, ,Program Variables}.
7418
7419 @cindex @{@var{type}@}
7420 @cindex type casting memory
7421 @cindex memory, viewing as typed object
7422 @cindex casts, to view memory
7423 @item @{@var{type}@} @var{addr}
7424 Refers to an object of type @var{type} stored at address @var{addr} in
7425 memory. @var{addr} may be any expression whose value is an integer or
7426 pointer (but parentheses are required around binary operators, just as in
7427 a cast). This construct is allowed regardless of what kind of data is
7428 normally supposed to reside at @var{addr}.
7429 @end table
7430
7431 @node Ambiguous Expressions
7432 @section Ambiguous Expressions
7433 @cindex ambiguous expressions
7434
7435 Expressions can sometimes contain some ambiguous elements. For instance,
7436 some programming languages (notably Ada, C@t{++} and Objective-C) permit
7437 a single function name to be defined several times, for application in
7438 different contexts. This is called @dfn{overloading}. Another example
7439 involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
7440 templates and is typically instantiated several times, resulting in
7441 the same function name being defined in different contexts.
7442
7443 In some cases and depending on the language, it is possible to adjust
7444 the expression to remove the ambiguity. For instance in C@t{++}, you
7445 can specify the signature of the function you want to break on, as in
7446 @kbd{break @var{function}(@var{types})}. In Ada, using the fully
7447 qualified name of your function often makes the expression unambiguous
7448 as well.
7449
7450 When an ambiguity that needs to be resolved is detected, the debugger
7451 has the capability to display a menu of numbered choices for each
7452 possibility, and then waits for the selection with the prompt @samp{>}.
7453 The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
7454 aborts the current command. If the command in which the expression was
7455 used allows more than one choice to be selected, the next option in the
7456 menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
7457 choices.
7458
7459 For example, the following session excerpt shows an attempt to set a
7460 breakpoint at the overloaded symbol @code{String::after}.
7461 We choose three particular definitions of that function name:
7462
7463 @c FIXME! This is likely to change to show arg type lists, at least
7464 @smallexample
7465 @group
7466 (@value{GDBP}) b String::after
7467 [0] cancel
7468 [1] all
7469 [2] file:String.cc; line number:867
7470 [3] file:String.cc; line number:860
7471 [4] file:String.cc; line number:875
7472 [5] file:String.cc; line number:853
7473 [6] file:String.cc; line number:846
7474 [7] file:String.cc; line number:735
7475 > 2 4 6
7476 Breakpoint 1 at 0xb26c: file String.cc, line 867.
7477 Breakpoint 2 at 0xb344: file String.cc, line 875.
7478 Breakpoint 3 at 0xafcc: file String.cc, line 846.
7479 Multiple breakpoints were set.
7480 Use the "delete" command to delete unwanted
7481 breakpoints.
7482 (@value{GDBP})
7483 @end group
7484 @end smallexample
7485
7486 @table @code
7487 @kindex set multiple-symbols
7488 @item set multiple-symbols @var{mode}
7489 @cindex multiple-symbols menu
7490
7491 This option allows you to adjust the debugger behavior when an expression
7492 is ambiguous.
7493
7494 By default, @var{mode} is set to @code{all}. If the command with which
7495 the expression is used allows more than one choice, then @value{GDBN}
7496 automatically selects all possible choices. For instance, inserting
7497 a breakpoint on a function using an ambiguous name results in a breakpoint
7498 inserted on each possible match. However, if a unique choice must be made,
7499 then @value{GDBN} uses the menu to help you disambiguate the expression.
7500 For instance, printing the address of an overloaded function will result
7501 in the use of the menu.
7502
7503 When @var{mode} is set to @code{ask}, the debugger always uses the menu
7504 when an ambiguity is detected.
7505
7506 Finally, when @var{mode} is set to @code{cancel}, the debugger reports
7507 an error due to the ambiguity and the command is aborted.
7508
7509 @kindex show multiple-symbols
7510 @item show multiple-symbols
7511 Show the current value of the @code{multiple-symbols} setting.
7512 @end table
7513
7514 @node Variables
7515 @section Program Variables
7516
7517 The most common kind of expression to use is the name of a variable
7518 in your program.
7519
7520 Variables in expressions are understood in the selected stack frame
7521 (@pxref{Selection, ,Selecting a Frame}); they must be either:
7522
7523 @itemize @bullet
7524 @item
7525 global (or file-static)
7526 @end itemize
7527
7528 @noindent or
7529
7530 @itemize @bullet
7531 @item
7532 visible according to the scope rules of the
7533 programming language from the point of execution in that frame
7534 @end itemize
7535
7536 @noindent This means that in the function
7537
7538 @smallexample
7539 foo (a)
7540 int a;
7541 @{
7542 bar (a);
7543 @{
7544 int b = test ();
7545 bar (b);
7546 @}
7547 @}
7548 @end smallexample
7549
7550 @noindent
7551 you can examine and use the variable @code{a} whenever your program is
7552 executing within the function @code{foo}, but you can only use or
7553 examine the variable @code{b} while your program is executing inside
7554 the block where @code{b} is declared.
7555
7556 @cindex variable name conflict
7557 There is an exception: you can refer to a variable or function whose
7558 scope is a single source file even if the current execution point is not
7559 in this file. But it is possible to have more than one such variable or
7560 function with the same name (in different source files). If that
7561 happens, referring to that name has unpredictable effects. If you wish,
7562 you can specify a static variable in a particular function or file by
7563 using the colon-colon (@code{::}) notation:
7564
7565 @cindex colon-colon, context for variables/functions
7566 @ifnotinfo
7567 @c info cannot cope with a :: index entry, but why deprive hard copy readers?
7568 @cindex @code{::}, context for variables/functions
7569 @end ifnotinfo
7570 @smallexample
7571 @var{file}::@var{variable}
7572 @var{function}::@var{variable}
7573 @end smallexample
7574
7575 @noindent
7576 Here @var{file} or @var{function} is the name of the context for the
7577 static @var{variable}. In the case of file names, you can use quotes to
7578 make sure @value{GDBN} parses the file name as a single word---for example,
7579 to print a global value of @code{x} defined in @file{f2.c}:
7580
7581 @smallexample
7582 (@value{GDBP}) p 'f2.c'::x
7583 @end smallexample
7584
7585 The @code{::} notation is normally used for referring to
7586 static variables, since you typically disambiguate uses of local variables
7587 in functions by selecting the appropriate frame and using the
7588 simple name of the variable. However, you may also use this notation
7589 to refer to local variables in frames enclosing the selected frame:
7590
7591 @smallexample
7592 void
7593 foo (int a)
7594 @{
7595 if (a < 10)
7596 bar (a);
7597 else
7598 process (a); /* Stop here */
7599 @}
7600
7601 int
7602 bar (int a)
7603 @{
7604 foo (a + 5);
7605 @}
7606 @end smallexample
7607
7608 @noindent
7609 For example, if there is a breakpoint at the commented line,
7610 here is what you might see
7611 when the program stops after executing the call @code{bar(0)}:
7612
7613 @smallexample
7614 (@value{GDBP}) p a
7615 $1 = 10
7616 (@value{GDBP}) p bar::a
7617 $2 = 5
7618 (@value{GDBP}) up 2
7619 #2 0x080483d0 in foo (a=5) at foobar.c:12
7620 (@value{GDBP}) p a
7621 $3 = 5
7622 (@value{GDBP}) p bar::a
7623 $4 = 0
7624 @end smallexample
7625
7626 @cindex C@t{++} scope resolution
7627 These uses of @samp{::} are very rarely in conflict with the very similar
7628 use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
7629 scope resolution operator in @value{GDBN} expressions.
7630 @c FIXME: Um, so what happens in one of those rare cases where it's in
7631 @c conflict?? --mew
7632
7633 @cindex wrong values
7634 @cindex variable values, wrong
7635 @cindex function entry/exit, wrong values of variables
7636 @cindex optimized code, wrong values of variables
7637 @quotation
7638 @emph{Warning:} Occasionally, a local variable may appear to have the
7639 wrong value at certain points in a function---just after entry to a new
7640 scope, and just before exit.
7641 @end quotation
7642 You may see this problem when you are stepping by machine instructions.
7643 This is because, on most machines, it takes more than one instruction to
7644 set up a stack frame (including local variable definitions); if you are
7645 stepping by machine instructions, variables may appear to have the wrong
7646 values until the stack frame is completely built. On exit, it usually
7647 also takes more than one machine instruction to destroy a stack frame;
7648 after you begin stepping through that group of instructions, local
7649 variable definitions may be gone.
7650
7651 This may also happen when the compiler does significant optimizations.
7652 To be sure of always seeing accurate values, turn off all optimization
7653 when compiling.
7654
7655 @cindex ``No symbol "foo" in current context''
7656 Another possible effect of compiler optimizations is to optimize
7657 unused variables out of existence, or assign variables to registers (as
7658 opposed to memory addresses). Depending on the support for such cases
7659 offered by the debug info format used by the compiler, @value{GDBN}
7660 might not be able to display values for such local variables. If that
7661 happens, @value{GDBN} will print a message like this:
7662
7663 @smallexample
7664 No symbol "foo" in current context.
7665 @end smallexample
7666
7667 To solve such problems, either recompile without optimizations, or use a
7668 different debug info format, if the compiler supports several such
7669 formats. @xref{Compilation}, for more information on choosing compiler
7670 options. @xref{C, ,C and C@t{++}}, for more information about debug
7671 info formats that are best suited to C@t{++} programs.
7672
7673 If you ask to print an object whose contents are unknown to
7674 @value{GDBN}, e.g., because its data type is not completely specified
7675 by the debug information, @value{GDBN} will say @samp{<incomplete
7676 type>}. @xref{Symbols, incomplete type}, for more about this.
7677
7678 If you append @kbd{@@entry} string to a function parameter name you get its
7679 value at the time the function got called. If the value is not available an
7680 error message is printed. Entry values are available only with some compilers.
7681 Entry values are normally also printed at the function parameter list according
7682 to @ref{set print entry-values}.
7683
7684 @smallexample
7685 Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29
7686 29 i++;
7687 (gdb) next
7688 30 e (i);
7689 (gdb) print i
7690 $1 = 31
7691 (gdb) print i@@entry
7692 $2 = 30
7693 @end smallexample
7694
7695 Strings are identified as arrays of @code{char} values without specified
7696 signedness. Arrays of either @code{signed char} or @code{unsigned char} get
7697 printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
7698 @code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
7699 defines literal string type @code{"char"} as @code{char} without a sign.
7700 For program code
7701
7702 @smallexample
7703 char var0[] = "A";
7704 signed char var1[] = "A";
7705 @end smallexample
7706
7707 You get during debugging
7708 @smallexample
7709 (gdb) print var0
7710 $1 = "A"
7711 (gdb) print var1
7712 $2 = @{65 'A', 0 '\0'@}
7713 @end smallexample
7714
7715 @node Arrays
7716 @section Artificial Arrays
7717
7718 @cindex artificial array
7719 @cindex arrays
7720 @kindex @@@r{, referencing memory as an array}
7721 It is often useful to print out several successive objects of the
7722 same type in memory; a section of an array, or an array of
7723 dynamically determined size for which only a pointer exists in the
7724 program.
7725
7726 You can do this by referring to a contiguous span of memory as an
7727 @dfn{artificial array}, using the binary operator @samp{@@}. The left
7728 operand of @samp{@@} should be the first element of the desired array
7729 and be an individual object. The right operand should be the desired length
7730 of the array. The result is an array value whose elements are all of
7731 the type of the left argument. The first element is actually the left
7732 argument; the second element comes from bytes of memory immediately
7733 following those that hold the first element, and so on. Here is an
7734 example. If a program says
7735
7736 @smallexample
7737 int *array = (int *) malloc (len * sizeof (int));
7738 @end smallexample
7739
7740 @noindent
7741 you can print the contents of @code{array} with
7742
7743 @smallexample
7744 p *array@@len
7745 @end smallexample
7746
7747 The left operand of @samp{@@} must reside in memory. Array values made
7748 with @samp{@@} in this way behave just like other arrays in terms of
7749 subscripting, and are coerced to pointers when used in expressions.
7750 Artificial arrays most often appear in expressions via the value history
7751 (@pxref{Value History, ,Value History}), after printing one out.
7752
7753 Another way to create an artificial array is to use a cast.
7754 This re-interprets a value as if it were an array.
7755 The value need not be in memory:
7756 @smallexample
7757 (@value{GDBP}) p/x (short[2])0x12345678
7758 $1 = @{0x1234, 0x5678@}
7759 @end smallexample
7760
7761 As a convenience, if you leave the array length out (as in
7762 @samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
7763 the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
7764 @smallexample
7765 (@value{GDBP}) p/x (short[])0x12345678
7766 $2 = @{0x1234, 0x5678@}
7767 @end smallexample
7768
7769 Sometimes the artificial array mechanism is not quite enough; in
7770 moderately complex data structures, the elements of interest may not
7771 actually be adjacent---for example, if you are interested in the values
7772 of pointers in an array. One useful work-around in this situation is
7773 to use a convenience variable (@pxref{Convenience Vars, ,Convenience
7774 Variables}) as a counter in an expression that prints the first
7775 interesting value, and then repeat that expression via @key{RET}. For
7776 instance, suppose you have an array @code{dtab} of pointers to
7777 structures, and you are interested in the values of a field @code{fv}
7778 in each structure. Here is an example of what you might type:
7779
7780 @smallexample
7781 set $i = 0
7782 p dtab[$i++]->fv
7783 @key{RET}
7784 @key{RET}
7785 @dots{}
7786 @end smallexample
7787
7788 @node Output Formats
7789 @section Output Formats
7790
7791 @cindex formatted output
7792 @cindex output formats
7793 By default, @value{GDBN} prints a value according to its data type. Sometimes
7794 this is not what you want. For example, you might want to print a number
7795 in hex, or a pointer in decimal. Or you might want to view data in memory
7796 at a certain address as a character string or as an instruction. To do
7797 these things, specify an @dfn{output format} when you print a value.
7798
7799 The simplest use of output formats is to say how to print a value
7800 already computed. This is done by starting the arguments of the
7801 @code{print} command with a slash and a format letter. The format
7802 letters supported are:
7803
7804 @table @code
7805 @item x
7806 Regard the bits of the value as an integer, and print the integer in
7807 hexadecimal.
7808
7809 @item d
7810 Print as integer in signed decimal.
7811
7812 @item u
7813 Print as integer in unsigned decimal.
7814
7815 @item o
7816 Print as integer in octal.
7817
7818 @item t
7819 Print as integer in binary. The letter @samp{t} stands for ``two''.
7820 @footnote{@samp{b} cannot be used because these format letters are also
7821 used with the @code{x} command, where @samp{b} stands for ``byte'';
7822 see @ref{Memory,,Examining Memory}.}
7823
7824 @item a
7825 @cindex unknown address, locating
7826 @cindex locate address
7827 Print as an address, both absolute in hexadecimal and as an offset from
7828 the nearest preceding symbol. You can use this format used to discover
7829 where (in what function) an unknown address is located:
7830
7831 @smallexample
7832 (@value{GDBP}) p/a 0x54320
7833 $3 = 0x54320 <_initialize_vx+396>
7834 @end smallexample
7835
7836 @noindent
7837 The command @code{info symbol 0x54320} yields similar results.
7838 @xref{Symbols, info symbol}.
7839
7840 @item c
7841 Regard as an integer and print it as a character constant. This
7842 prints both the numerical value and its character representation. The
7843 character representation is replaced with the octal escape @samp{\nnn}
7844 for characters outside the 7-bit @sc{ascii} range.
7845
7846 Without this format, @value{GDBN} displays @code{char},
7847 @w{@code{unsigned char}}, and @w{@code{signed char}} data as character
7848 constants. Single-byte members of vectors are displayed as integer
7849 data.
7850
7851 @item f
7852 Regard the bits of the value as a floating point number and print
7853 using typical floating point syntax.
7854
7855 @item s
7856 @cindex printing strings
7857 @cindex printing byte arrays
7858 Regard as a string, if possible. With this format, pointers to single-byte
7859 data are displayed as null-terminated strings and arrays of single-byte data
7860 are displayed as fixed-length strings. Other values are displayed in their
7861 natural types.
7862
7863 Without this format, @value{GDBN} displays pointers to and arrays of
7864 @code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
7865 strings. Single-byte members of a vector are displayed as an integer
7866 array.
7867
7868 @item r
7869 @cindex raw printing
7870 Print using the @samp{raw} formatting. By default, @value{GDBN} will
7871 use a Python-based pretty-printer, if one is available (@pxref{Pretty
7872 Printing}). This typically results in a higher-level display of the
7873 value's contents. The @samp{r} format bypasses any Python
7874 pretty-printer which might exist.
7875 @end table
7876
7877 For example, to print the program counter in hex (@pxref{Registers}), type
7878
7879 @smallexample
7880 p/x $pc
7881 @end smallexample
7882
7883 @noindent
7884 Note that no space is required before the slash; this is because command
7885 names in @value{GDBN} cannot contain a slash.
7886
7887 To reprint the last value in the value history with a different format,
7888 you can use the @code{print} command with just a format and no
7889 expression. For example, @samp{p/x} reprints the last value in hex.
7890
7891 @node Memory
7892 @section Examining Memory
7893
7894 You can use the command @code{x} (for ``examine'') to examine memory in
7895 any of several formats, independently of your program's data types.
7896
7897 @cindex examining memory
7898 @table @code
7899 @kindex x @r{(examine memory)}
7900 @item x/@var{nfu} @var{addr}
7901 @itemx x @var{addr}
7902 @itemx x
7903 Use the @code{x} command to examine memory.
7904 @end table
7905
7906 @var{n}, @var{f}, and @var{u} are all optional parameters that specify how
7907 much memory to display and how to format it; @var{addr} is an
7908 expression giving the address where you want to start displaying memory.
7909 If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
7910 Several commands set convenient defaults for @var{addr}.
7911
7912 @table @r
7913 @item @var{n}, the repeat count
7914 The repeat count is a decimal integer; the default is 1. It specifies
7915 how much memory (counting by units @var{u}) to display.
7916 @c This really is **decimal**; unaffected by 'set radix' as of GDB
7917 @c 4.1.2.
7918
7919 @item @var{f}, the display format
7920 The display format is one of the formats used by @code{print}
7921 (@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
7922 @samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
7923 The default is @samp{x} (hexadecimal) initially. The default changes
7924 each time you use either @code{x} or @code{print}.
7925
7926 @item @var{u}, the unit size
7927 The unit size is any of
7928
7929 @table @code
7930 @item b
7931 Bytes.
7932 @item h
7933 Halfwords (two bytes).
7934 @item w
7935 Words (four bytes). This is the initial default.
7936 @item g
7937 Giant words (eight bytes).
7938 @end table
7939
7940 Each time you specify a unit size with @code{x}, that size becomes the
7941 default unit the next time you use @code{x}. For the @samp{i} format,
7942 the unit size is ignored and is normally not written. For the @samp{s} format,
7943 the unit size defaults to @samp{b}, unless it is explicitly given.
7944 Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display
7945 32-bit strings. The next use of @kbd{x /s} will again display 8-bit strings.
7946 Note that the results depend on the programming language of the
7947 current compilation unit. If the language is C, the @samp{s}
7948 modifier will use the UTF-16 encoding while @samp{w} will use
7949 UTF-32. The encoding is set by the programming language and cannot
7950 be altered.
7951
7952 @item @var{addr}, starting display address
7953 @var{addr} is the address where you want @value{GDBN} to begin displaying
7954 memory. The expression need not have a pointer value (though it may);
7955 it is always interpreted as an integer address of a byte of memory.
7956 @xref{Expressions, ,Expressions}, for more information on expressions. The default for
7957 @var{addr} is usually just after the last address examined---but several
7958 other commands also set the default address: @code{info breakpoints} (to
7959 the address of the last breakpoint listed), @code{info line} (to the
7960 starting address of a line), and @code{print} (if you use it to display
7961 a value from memory).
7962 @end table
7963
7964 For example, @samp{x/3uh 0x54320} is a request to display three halfwords
7965 (@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
7966 starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
7967 words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
7968 @pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
7969
7970 Since the letters indicating unit sizes are all distinct from the
7971 letters specifying output formats, you do not have to remember whether
7972 unit size or format comes first; either order works. The output
7973 specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
7974 (However, the count @var{n} must come first; @samp{wx4} does not work.)
7975
7976 Even though the unit size @var{u} is ignored for the formats @samp{s}
7977 and @samp{i}, you might still want to use a count @var{n}; for example,
7978 @samp{3i} specifies that you want to see three machine instructions,
7979 including any operands. For convenience, especially when used with
7980 the @code{display} command, the @samp{i} format also prints branch delay
7981 slot instructions, if any, beyond the count specified, which immediately
7982 follow the last instruction that is within the count. The command
7983 @code{disassemble} gives an alternative way of inspecting machine
7984 instructions; see @ref{Machine Code,,Source and Machine Code}.
7985
7986 All the defaults for the arguments to @code{x} are designed to make it
7987 easy to continue scanning memory with minimal specifications each time
7988 you use @code{x}. For example, after you have inspected three machine
7989 instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
7990 with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
7991 the repeat count @var{n} is used again; the other arguments default as
7992 for successive uses of @code{x}.
7993
7994 When examining machine instructions, the instruction at current program
7995 counter is shown with a @code{=>} marker. For example:
7996
7997 @smallexample
7998 (@value{GDBP}) x/5i $pc-6
7999 0x804837f <main+11>: mov %esp,%ebp
8000 0x8048381 <main+13>: push %ecx
8001 0x8048382 <main+14>: sub $0x4,%esp
8002 => 0x8048385 <main+17>: movl $0x8048460,(%esp)
8003 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
8004 @end smallexample
8005
8006 @cindex @code{$_}, @code{$__}, and value history
8007 The addresses and contents printed by the @code{x} command are not saved
8008 in the value history because there is often too much of them and they
8009 would get in the way. Instead, @value{GDBN} makes these values available for
8010 subsequent use in expressions as values of the convenience variables
8011 @code{$_} and @code{$__}. After an @code{x} command, the last address
8012 examined is available for use in expressions in the convenience variable
8013 @code{$_}. The contents of that address, as examined, are available in
8014 the convenience variable @code{$__}.
8015
8016 If the @code{x} command has a repeat count, the address and contents saved
8017 are from the last memory unit printed; this is not the same as the last
8018 address printed if several units were printed on the last line of output.
8019
8020 @cindex remote memory comparison
8021 @cindex verify remote memory image
8022 When you are debugging a program running on a remote target machine
8023 (@pxref{Remote Debugging}), you may wish to verify the program's image in the
8024 remote machine's memory against the executable file you downloaded to
8025 the target. The @code{compare-sections} command is provided for such
8026 situations.
8027
8028 @table @code
8029 @kindex compare-sections
8030 @item compare-sections @r{[}@var{section-name}@r{]}
8031 Compare the data of a loadable section @var{section-name} in the
8032 executable file of the program being debugged with the same section in
8033 the remote machine's memory, and report any mismatches. With no
8034 arguments, compares all loadable sections. This command's
8035 availability depends on the target's support for the @code{"qCRC"}
8036 remote request.
8037 @end table
8038
8039 @node Auto Display
8040 @section Automatic Display
8041 @cindex automatic display
8042 @cindex display of expressions
8043
8044 If you find that you want to print the value of an expression frequently
8045 (to see how it changes), you might want to add it to the @dfn{automatic
8046 display list} so that @value{GDBN} prints its value each time your program stops.
8047 Each expression added to the list is given a number to identify it;
8048 to remove an expression from the list, you specify that number.
8049 The automatic display looks like this:
8050
8051 @smallexample
8052 2: foo = 38
8053 3: bar[5] = (struct hack *) 0x3804
8054 @end smallexample
8055
8056 @noindent
8057 This display shows item numbers, expressions and their current values. As with
8058 displays you request manually using @code{x} or @code{print}, you can
8059 specify the output format you prefer; in fact, @code{display} decides
8060 whether to use @code{print} or @code{x} depending your format
8061 specification---it uses @code{x} if you specify either the @samp{i}
8062 or @samp{s} format, or a unit size; otherwise it uses @code{print}.
8063
8064 @table @code
8065 @kindex display
8066 @item display @var{expr}
8067 Add the expression @var{expr} to the list of expressions to display
8068 each time your program stops. @xref{Expressions, ,Expressions}.
8069
8070 @code{display} does not repeat if you press @key{RET} again after using it.
8071
8072 @item display/@var{fmt} @var{expr}
8073 For @var{fmt} specifying only a display format and not a size or
8074 count, add the expression @var{expr} to the auto-display list but
8075 arrange to display it each time in the specified format @var{fmt}.
8076 @xref{Output Formats,,Output Formats}.
8077
8078 @item display/@var{fmt} @var{addr}
8079 For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
8080 number of units, add the expression @var{addr} as a memory address to
8081 be examined each time your program stops. Examining means in effect
8082 doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
8083 @end table
8084
8085 For example, @samp{display/i $pc} can be helpful, to see the machine
8086 instruction about to be executed each time execution stops (@samp{$pc}
8087 is a common name for the program counter; @pxref{Registers, ,Registers}).
8088
8089 @table @code
8090 @kindex delete display
8091 @kindex undisplay
8092 @item undisplay @var{dnums}@dots{}
8093 @itemx delete display @var{dnums}@dots{}
8094 Remove items from the list of expressions to display. Specify the
8095 numbers of the displays that you want affected with the command
8096 argument @var{dnums}. It can be a single display number, one of the
8097 numbers shown in the first field of the @samp{info display} display;
8098 or it could be a range of display numbers, as in @code{2-4}.
8099
8100 @code{undisplay} does not repeat if you press @key{RET} after using it.
8101 (Otherwise you would just get the error @samp{No display number @dots{}}.)
8102
8103 @kindex disable display
8104 @item disable display @var{dnums}@dots{}
8105 Disable the display of item numbers @var{dnums}. A disabled display
8106 item is not printed automatically, but is not forgotten. It may be
8107 enabled again later. Specify the numbers of the displays that you
8108 want affected with the command argument @var{dnums}. It can be a
8109 single display number, one of the numbers shown in the first field of
8110 the @samp{info display} display; or it could be a range of display
8111 numbers, as in @code{2-4}.
8112
8113 @kindex enable display
8114 @item enable display @var{dnums}@dots{}
8115 Enable display of item numbers @var{dnums}. It becomes effective once
8116 again in auto display of its expression, until you specify otherwise.
8117 Specify the numbers of the displays that you want affected with the
8118 command argument @var{dnums}. It can be a single display number, one
8119 of the numbers shown in the first field of the @samp{info display}
8120 display; or it could be a range of display numbers, as in @code{2-4}.
8121
8122 @item display
8123 Display the current values of the expressions on the list, just as is
8124 done when your program stops.
8125
8126 @kindex info display
8127 @item info display
8128 Print the list of expressions previously set up to display
8129 automatically, each one with its item number, but without showing the
8130 values. This includes disabled expressions, which are marked as such.
8131 It also includes expressions which would not be displayed right now
8132 because they refer to automatic variables not currently available.
8133 @end table
8134
8135 @cindex display disabled out of scope
8136 If a display expression refers to local variables, then it does not make
8137 sense outside the lexical context for which it was set up. Such an
8138 expression is disabled when execution enters a context where one of its
8139 variables is not defined. For example, if you give the command
8140 @code{display last_char} while inside a function with an argument
8141 @code{last_char}, @value{GDBN} displays this argument while your program
8142 continues to stop inside that function. When it stops elsewhere---where
8143 there is no variable @code{last_char}---the display is disabled
8144 automatically. The next time your program stops where @code{last_char}
8145 is meaningful, you can enable the display expression once again.
8146
8147 @node Print Settings
8148 @section Print Settings
8149
8150 @cindex format options
8151 @cindex print settings
8152 @value{GDBN} provides the following ways to control how arrays, structures,
8153 and symbols are printed.
8154
8155 @noindent
8156 These settings are useful for debugging programs in any language:
8157
8158 @table @code
8159 @kindex set print
8160 @item set print address
8161 @itemx set print address on
8162 @cindex print/don't print memory addresses
8163 @value{GDBN} prints memory addresses showing the location of stack
8164 traces, structure values, pointer values, breakpoints, and so forth,
8165 even when it also displays the contents of those addresses. The default
8166 is @code{on}. For example, this is what a stack frame display looks like with
8167 @code{set print address on}:
8168
8169 @smallexample
8170 @group
8171 (@value{GDBP}) f
8172 #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
8173 at input.c:530
8174 530 if (lquote != def_lquote)
8175 @end group
8176 @end smallexample
8177
8178 @item set print address off
8179 Do not print addresses when displaying their contents. For example,
8180 this is the same stack frame displayed with @code{set print address off}:
8181
8182 @smallexample
8183 @group
8184 (@value{GDBP}) set print addr off
8185 (@value{GDBP}) f
8186 #0 set_quotes (lq="<<", rq=">>") at input.c:530
8187 530 if (lquote != def_lquote)
8188 @end group
8189 @end smallexample
8190
8191 You can use @samp{set print address off} to eliminate all machine
8192 dependent displays from the @value{GDBN} interface. For example, with
8193 @code{print address off}, you should get the same text for backtraces on
8194 all machines---whether or not they involve pointer arguments.
8195
8196 @kindex show print
8197 @item show print address
8198 Show whether or not addresses are to be printed.
8199 @end table
8200
8201 When @value{GDBN} prints a symbolic address, it normally prints the
8202 closest earlier symbol plus an offset. If that symbol does not uniquely
8203 identify the address (for example, it is a name whose scope is a single
8204 source file), you may need to clarify. One way to do this is with
8205 @code{info line}, for example @samp{info line *0x4537}. Alternately,
8206 you can set @value{GDBN} to print the source file and line number when
8207 it prints a symbolic address:
8208
8209 @table @code
8210 @item set print symbol-filename on
8211 @cindex source file and line of a symbol
8212 @cindex symbol, source file and line
8213 Tell @value{GDBN} to print the source file name and line number of a
8214 symbol in the symbolic form of an address.
8215
8216 @item set print symbol-filename off
8217 Do not print source file name and line number of a symbol. This is the
8218 default.
8219
8220 @item show print symbol-filename
8221 Show whether or not @value{GDBN} will print the source file name and
8222 line number of a symbol in the symbolic form of an address.
8223 @end table
8224
8225 Another situation where it is helpful to show symbol filenames and line
8226 numbers is when disassembling code; @value{GDBN} shows you the line
8227 number and source file that corresponds to each instruction.
8228
8229 Also, you may wish to see the symbolic form only if the address being
8230 printed is reasonably close to the closest earlier symbol:
8231
8232 @table @code
8233 @item set print max-symbolic-offset @var{max-offset}
8234 @cindex maximum value for offset of closest symbol
8235 Tell @value{GDBN} to only display the symbolic form of an address if the
8236 offset between the closest earlier symbol and the address is less than
8237 @var{max-offset}. The default is 0, which tells @value{GDBN}
8238 to always print the symbolic form of an address if any symbol precedes it.
8239
8240 @item show print max-symbolic-offset
8241 Ask how large the maximum offset is that @value{GDBN} prints in a
8242 symbolic address.
8243 @end table
8244
8245 @cindex wild pointer, interpreting
8246 @cindex pointer, finding referent
8247 If you have a pointer and you are not sure where it points, try
8248 @samp{set print symbol-filename on}. Then you can determine the name
8249 and source file location of the variable where it points, using
8250 @samp{p/a @var{pointer}}. This interprets the address in symbolic form.
8251 For example, here @value{GDBN} shows that a variable @code{ptt} points
8252 at another variable @code{t}, defined in @file{hi2.c}:
8253
8254 @smallexample
8255 (@value{GDBP}) set print symbol-filename on
8256 (@value{GDBP}) p/a ptt
8257 $4 = 0xe008 <t in hi2.c>
8258 @end smallexample
8259
8260 @quotation
8261 @emph{Warning:} For pointers that point to a local variable, @samp{p/a}
8262 does not show the symbol name and filename of the referent, even with
8263 the appropriate @code{set print} options turned on.
8264 @end quotation
8265
8266 Other settings control how different kinds of objects are printed:
8267
8268 @table @code
8269 @item set print array
8270 @itemx set print array on
8271 @cindex pretty print arrays
8272 Pretty print arrays. This format is more convenient to read,
8273 but uses more space. The default is off.
8274
8275 @item set print array off
8276 Return to compressed format for arrays.
8277
8278 @item show print array
8279 Show whether compressed or pretty format is selected for displaying
8280 arrays.
8281
8282 @cindex print array indexes
8283 @item set print array-indexes
8284 @itemx set print array-indexes on
8285 Print the index of each element when displaying arrays. May be more
8286 convenient to locate a given element in the array or quickly find the
8287 index of a given element in that printed array. The default is off.
8288
8289 @item set print array-indexes off
8290 Stop printing element indexes when displaying arrays.
8291
8292 @item show print array-indexes
8293 Show whether the index of each element is printed when displaying
8294 arrays.
8295
8296 @item set print elements @var{number-of-elements}
8297 @cindex number of array elements to print
8298 @cindex limit on number of printed array elements
8299 Set a limit on how many elements of an array @value{GDBN} will print.
8300 If @value{GDBN} is printing a large array, it stops printing after it has
8301 printed the number of elements set by the @code{set print elements} command.
8302 This limit also applies to the display of strings.
8303 When @value{GDBN} starts, this limit is set to 200.
8304 Setting @var{number-of-elements} to zero means that the printing is unlimited.
8305
8306 @item show print elements
8307 Display the number of elements of a large array that @value{GDBN} will print.
8308 If the number is 0, then the printing is unlimited.
8309
8310 @item set print frame-arguments @var{value}
8311 @kindex set print frame-arguments
8312 @cindex printing frame argument values
8313 @cindex print all frame argument values
8314 @cindex print frame argument values for scalars only
8315 @cindex do not print frame argument values
8316 This command allows to control how the values of arguments are printed
8317 when the debugger prints a frame (@pxref{Frames}). The possible
8318 values are:
8319
8320 @table @code
8321 @item all
8322 The values of all arguments are printed.
8323
8324 @item scalars
8325 Print the value of an argument only if it is a scalar. The value of more
8326 complex arguments such as arrays, structures, unions, etc, is replaced
8327 by @code{@dots{}}. This is the default. Here is an example where
8328 only scalar arguments are shown:
8329
8330 @smallexample
8331 #1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
8332 at frame-args.c:23
8333 @end smallexample
8334
8335 @item none
8336 None of the argument values are printed. Instead, the value of each argument
8337 is replaced by @code{@dots{}}. In this case, the example above now becomes:
8338
8339 @smallexample
8340 #1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
8341 at frame-args.c:23
8342 @end smallexample
8343 @end table
8344
8345 By default, only scalar arguments are printed. This command can be used
8346 to configure the debugger to print the value of all arguments, regardless
8347 of their type. However, it is often advantageous to not print the value
8348 of more complex parameters. For instance, it reduces the amount of
8349 information printed in each frame, making the backtrace more readable.
8350 Also, it improves performance when displaying Ada frames, because
8351 the computation of large arguments can sometimes be CPU-intensive,
8352 especially in large applications. Setting @code{print frame-arguments}
8353 to @code{scalars} (the default) or @code{none} avoids this computation,
8354 thus speeding up the display of each Ada frame.
8355
8356 @item show print frame-arguments
8357 Show how the value of arguments should be displayed when printing a frame.
8358
8359 @anchor{set print entry-values}
8360 @item set print entry-values @var{value}
8361 @kindex set print entry-values
8362 Set printing of frame argument values at function entry. In some cases
8363 @value{GDBN} can determine the value of function argument which was passed by
8364 the function caller, even if the value was modified inside the called function
8365 and therefore is different. With optimized code, the current value could be
8366 unavailable, but the entry value may still be known.
8367
8368 The default value is @code{default} (see below for its description). Older
8369 @value{GDBN} behaved as with the setting @code{no}. Compilers not supporting
8370 this feature will behave in the @code{default} setting the same way as with the
8371 @code{no} setting.
8372
8373 This functionality is currently supported only by DWARF 2 debugging format and
8374 the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
8375 @value{NGCC}, you need to specify @option{-O -g} during compilation, to get
8376 this information.
8377
8378 The @var{value} parameter can be one of the following:
8379
8380 @table @code
8381 @item no
8382 Print only actual parameter values, never print values from function entry
8383 point.
8384 @smallexample
8385 #0 equal (val=5)
8386 #0 different (val=6)
8387 #0 lost (val=<optimized out>)
8388 #0 born (val=10)
8389 #0 invalid (val=<optimized out>)
8390 @end smallexample
8391
8392 @item only
8393 Print only parameter values from function entry point. The actual parameter
8394 values are never printed.
8395 @smallexample
8396 #0 equal (val@@entry=5)
8397 #0 different (val@@entry=5)
8398 #0 lost (val@@entry=5)
8399 #0 born (val@@entry=<optimized out>)
8400 #0 invalid (val@@entry=<optimized out>)
8401 @end smallexample
8402
8403 @item preferred
8404 Print only parameter values from function entry point. If value from function
8405 entry point is not known while the actual value is known, print the actual
8406 value for such parameter.
8407 @smallexample
8408 #0 equal (val@@entry=5)
8409 #0 different (val@@entry=5)
8410 #0 lost (val@@entry=5)
8411 #0 born (val=10)
8412 #0 invalid (val@@entry=<optimized out>)
8413 @end smallexample
8414
8415 @item if-needed
8416 Print actual parameter values. If actual parameter value is not known while
8417 value from function entry point is known, print the entry point value for such
8418 parameter.
8419 @smallexample
8420 #0 equal (val=5)
8421 #0 different (val=6)
8422 #0 lost (val@@entry=5)
8423 #0 born (val=10)
8424 #0 invalid (val=<optimized out>)
8425 @end smallexample
8426
8427 @item both
8428 Always print both the actual parameter value and its value from function entry
8429 point, even if values of one or both are not available due to compiler
8430 optimizations.
8431 @smallexample
8432 #0 equal (val=5, val@@entry=5)
8433 #0 different (val=6, val@@entry=5)
8434 #0 lost (val=<optimized out>, val@@entry=5)
8435 #0 born (val=10, val@@entry=<optimized out>)
8436 #0 invalid (val=<optimized out>, val@@entry=<optimized out>)
8437 @end smallexample
8438
8439 @item compact
8440 Print the actual parameter value if it is known and also its value from
8441 function entry point if it is known. If neither is known, print for the actual
8442 value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both
8443 values are known and identical, print the shortened
8444 @code{param=param@@entry=VALUE} notation.
8445 @smallexample
8446 #0 equal (val=val@@entry=5)
8447 #0 different (val=6, val@@entry=5)
8448 #0 lost (val@@entry=5)
8449 #0 born (val=10)
8450 #0 invalid (val=<optimized out>)
8451 @end smallexample
8452
8453 @item default
8454 Always print the actual parameter value. Print also its value from function
8455 entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and
8456 if both values are known and identical, print the shortened
8457 @code{param=param@@entry=VALUE} notation.
8458 @smallexample
8459 #0 equal (val=val@@entry=5)
8460 #0 different (val=6, val@@entry=5)
8461 #0 lost (val=<optimized out>, val@@entry=5)
8462 #0 born (val=10)
8463 #0 invalid (val=<optimized out>)
8464 @end smallexample
8465 @end table
8466
8467 For analysis messages on possible failures of frame argument values at function
8468 entry resolution see @ref{set debug entry-values}.
8469
8470 @item show print entry-values
8471 Show the method being used for printing of frame argument values at function
8472 entry.
8473
8474 @item set print repeats
8475 @cindex repeated array elements
8476 Set the threshold for suppressing display of repeated array
8477 elements. When the number of consecutive identical elements of an
8478 array exceeds the threshold, @value{GDBN} prints the string
8479 @code{"<repeats @var{n} times>"}, where @var{n} is the number of
8480 identical repetitions, instead of displaying the identical elements
8481 themselves. Setting the threshold to zero will cause all elements to
8482 be individually printed. The default threshold is 10.
8483
8484 @item show print repeats
8485 Display the current threshold for printing repeated identical
8486 elements.
8487
8488 @item set print null-stop
8489 @cindex @sc{null} elements in arrays
8490 Cause @value{GDBN} to stop printing the characters of an array when the first
8491 @sc{null} is encountered. This is useful when large arrays actually
8492 contain only short strings.
8493 The default is off.
8494
8495 @item show print null-stop
8496 Show whether @value{GDBN} stops printing an array on the first
8497 @sc{null} character.
8498
8499 @item set print pretty on
8500 @cindex print structures in indented form
8501 @cindex indentation in structure display
8502 Cause @value{GDBN} to print structures in an indented format with one member
8503 per line, like this:
8504
8505 @smallexample
8506 @group
8507 $1 = @{
8508 next = 0x0,
8509 flags = @{
8510 sweet = 1,
8511 sour = 1
8512 @},
8513 meat = 0x54 "Pork"
8514 @}
8515 @end group
8516 @end smallexample
8517
8518 @item set print pretty off
8519 Cause @value{GDBN} to print structures in a compact format, like this:
8520
8521 @smallexample
8522 @group
8523 $1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
8524 meat = 0x54 "Pork"@}
8525 @end group
8526 @end smallexample
8527
8528 @noindent
8529 This is the default format.
8530
8531 @item show print pretty
8532 Show which format @value{GDBN} is using to print structures.
8533
8534 @item set print sevenbit-strings on
8535 @cindex eight-bit characters in strings
8536 @cindex octal escapes in strings
8537 Print using only seven-bit characters; if this option is set,
8538 @value{GDBN} displays any eight-bit characters (in strings or
8539 character values) using the notation @code{\}@var{nnn}. This setting is
8540 best if you are working in English (@sc{ascii}) and you use the
8541 high-order bit of characters as a marker or ``meta'' bit.
8542
8543 @item set print sevenbit-strings off
8544 Print full eight-bit characters. This allows the use of more
8545 international character sets, and is the default.
8546
8547 @item show print sevenbit-strings
8548 Show whether or not @value{GDBN} is printing only seven-bit characters.
8549
8550 @item set print union on
8551 @cindex unions in structures, printing
8552 Tell @value{GDBN} to print unions which are contained in structures
8553 and other unions. This is the default setting.
8554
8555 @item set print union off
8556 Tell @value{GDBN} not to print unions which are contained in
8557 structures and other unions. @value{GDBN} will print @code{"@{...@}"}
8558 instead.
8559
8560 @item show print union
8561 Ask @value{GDBN} whether or not it will print unions which are contained in
8562 structures and other unions.
8563
8564 For example, given the declarations
8565
8566 @smallexample
8567 typedef enum @{Tree, Bug@} Species;
8568 typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
8569 typedef enum @{Caterpillar, Cocoon, Butterfly@}
8570 Bug_forms;
8571
8572 struct thing @{
8573 Species it;
8574 union @{
8575 Tree_forms tree;
8576 Bug_forms bug;
8577 @} form;
8578 @};
8579
8580 struct thing foo = @{Tree, @{Acorn@}@};
8581 @end smallexample
8582
8583 @noindent
8584 with @code{set print union on} in effect @samp{p foo} would print
8585
8586 @smallexample
8587 $1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
8588 @end smallexample
8589
8590 @noindent
8591 and with @code{set print union off} in effect it would print
8592
8593 @smallexample
8594 $1 = @{it = Tree, form = @{...@}@}
8595 @end smallexample
8596
8597 @noindent
8598 @code{set print union} affects programs written in C-like languages
8599 and in Pascal.
8600 @end table
8601
8602 @need 1000
8603 @noindent
8604 These settings are of interest when debugging C@t{++} programs:
8605
8606 @table @code
8607 @cindex demangling C@t{++} names
8608 @item set print demangle
8609 @itemx set print demangle on
8610 Print C@t{++} names in their source form rather than in the encoded
8611 (``mangled'') form passed to the assembler and linker for type-safe
8612 linkage. The default is on.
8613
8614 @item show print demangle
8615 Show whether C@t{++} names are printed in mangled or demangled form.
8616
8617 @item set print asm-demangle
8618 @itemx set print asm-demangle on
8619 Print C@t{++} names in their source form rather than their mangled form, even
8620 in assembler code printouts such as instruction disassemblies.
8621 The default is off.
8622
8623 @item show print asm-demangle
8624 Show whether C@t{++} names in assembly listings are printed in mangled
8625 or demangled form.
8626
8627 @cindex C@t{++} symbol decoding style
8628 @cindex symbol decoding style, C@t{++}
8629 @kindex set demangle-style
8630 @item set demangle-style @var{style}
8631 Choose among several encoding schemes used by different compilers to
8632 represent C@t{++} names. The choices for @var{style} are currently:
8633
8634 @table @code
8635 @item auto
8636 Allow @value{GDBN} to choose a decoding style by inspecting your program.
8637
8638 @item gnu
8639 Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
8640 This is the default.
8641
8642 @item hp
8643 Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
8644
8645 @item lucid
8646 Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
8647
8648 @item arm
8649 Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
8650 @strong{Warning:} this setting alone is not sufficient to allow
8651 debugging @code{cfront}-generated executables. @value{GDBN} would
8652 require further enhancement to permit that.
8653
8654 @end table
8655 If you omit @var{style}, you will see a list of possible formats.
8656
8657 @item show demangle-style
8658 Display the encoding style currently in use for decoding C@t{++} symbols.
8659
8660 @item set print object
8661 @itemx set print object on
8662 @cindex derived type of an object, printing
8663 @cindex display derived types
8664 When displaying a pointer to an object, identify the @emph{actual}
8665 (derived) type of the object rather than the @emph{declared} type, using
8666 the virtual function table. Note that the virtual function table is
8667 required---this feature can only work for objects that have run-time
8668 type identification; a single virtual method in the object's declared
8669 type is sufficient.
8670
8671 @item set print object off
8672 Display only the declared type of objects, without reference to the
8673 virtual function table. This is the default setting.
8674
8675 @item show print object
8676 Show whether actual, or declared, object types are displayed.
8677
8678 @item set print static-members
8679 @itemx set print static-members on
8680 @cindex static members of C@t{++} objects
8681 Print static members when displaying a C@t{++} object. The default is on.
8682
8683 @item set print static-members off
8684 Do not print static members when displaying a C@t{++} object.
8685
8686 @item show print static-members
8687 Show whether C@t{++} static members are printed or not.
8688
8689 @item set print pascal_static-members
8690 @itemx set print pascal_static-members on
8691 @cindex static members of Pascal objects
8692 @cindex Pascal objects, static members display
8693 Print static members when displaying a Pascal object. The default is on.
8694
8695 @item set print pascal_static-members off
8696 Do not print static members when displaying a Pascal object.
8697
8698 @item show print pascal_static-members
8699 Show whether Pascal static members are printed or not.
8700
8701 @c These don't work with HP ANSI C++ yet.
8702 @item set print vtbl
8703 @itemx set print vtbl on
8704 @cindex pretty print C@t{++} virtual function tables
8705 @cindex virtual functions (C@t{++}) display
8706 @cindex VTBL display
8707 Pretty print C@t{++} virtual function tables. The default is off.
8708 (The @code{vtbl} commands do not work on programs compiled with the HP
8709 ANSI C@t{++} compiler (@code{aCC}).)
8710
8711 @item set print vtbl off
8712 Do not pretty print C@t{++} virtual function tables.
8713
8714 @item show print vtbl
8715 Show whether C@t{++} virtual function tables are pretty printed, or not.
8716 @end table
8717
8718 @node Pretty Printing
8719 @section Pretty Printing
8720
8721 @value{GDBN} provides a mechanism to allow pretty-printing of values using
8722 Python code. It greatly simplifies the display of complex objects. This
8723 mechanism works for both MI and the CLI.
8724
8725 @menu
8726 * Pretty-Printer Introduction:: Introduction to pretty-printers
8727 * Pretty-Printer Example:: An example pretty-printer
8728 * Pretty-Printer Commands:: Pretty-printer commands
8729 @end menu
8730
8731 @node Pretty-Printer Introduction
8732 @subsection Pretty-Printer Introduction
8733
8734 When @value{GDBN} prints a value, it first sees if there is a pretty-printer
8735 registered for the value. If there is then @value{GDBN} invokes the
8736 pretty-printer to print the value. Otherwise the value is printed normally.
8737
8738 Pretty-printers are normally named. This makes them easy to manage.
8739 The @samp{info pretty-printer} command will list all the installed
8740 pretty-printers with their names.
8741 If a pretty-printer can handle multiple data types, then its
8742 @dfn{subprinters} are the printers for the individual data types.
8743 Each such subprinter has its own name.
8744 The format of the name is @var{printer-name};@var{subprinter-name}.
8745
8746 Pretty-printers are installed by @dfn{registering} them with @value{GDBN}.
8747 Typically they are automatically loaded and registered when the corresponding
8748 debug information is loaded, thus making them available without having to
8749 do anything special.
8750
8751 There are three places where a pretty-printer can be registered.
8752
8753 @itemize @bullet
8754 @item
8755 Pretty-printers registered globally are available when debugging
8756 all inferiors.
8757
8758 @item
8759 Pretty-printers registered with a program space are available only
8760 when debugging that program.
8761 @xref{Progspaces In Python}, for more details on program spaces in Python.
8762
8763 @item
8764 Pretty-printers registered with an objfile are loaded and unloaded
8765 with the corresponding objfile (e.g., shared library).
8766 @xref{Objfiles In Python}, for more details on objfiles in Python.
8767 @end itemize
8768
8769 @xref{Selecting Pretty-Printers}, for further information on how
8770 pretty-printers are selected,
8771
8772 @xref{Writing a Pretty-Printer}, for implementing pretty printers
8773 for new types.
8774
8775 @node Pretty-Printer Example
8776 @subsection Pretty-Printer Example
8777
8778 Here is how a C@t{++} @code{std::string} looks without a pretty-printer:
8779
8780 @smallexample
8781 (@value{GDBP}) print s
8782 $1 = @{
8783 static npos = 4294967295,
8784 _M_dataplus = @{
8785 <std::allocator<char>> = @{
8786 <__gnu_cxx::new_allocator<char>> = @{
8787 <No data fields>@}, <No data fields>
8788 @},
8789 members of std::basic_string<char, std::char_traits<char>,
8790 std::allocator<char> >::_Alloc_hider:
8791 _M_p = 0x804a014 "abcd"
8792 @}
8793 @}
8794 @end smallexample
8795
8796 With a pretty-printer for @code{std::string} only the contents are printed:
8797
8798 @smallexample
8799 (@value{GDBP}) print s
8800 $2 = "abcd"
8801 @end smallexample
8802
8803 @node Pretty-Printer Commands
8804 @subsection Pretty-Printer Commands
8805 @cindex pretty-printer commands
8806
8807 @table @code
8808 @kindex info pretty-printer
8809 @item info pretty-printer [@var{object-regexp} [@var{name-regexp}]]
8810 Print the list of installed pretty-printers.
8811 This includes disabled pretty-printers, which are marked as such.
8812
8813 @var{object-regexp} is a regular expression matching the objects
8814 whose pretty-printers to list.
8815 Objects can be @code{global}, the program space's file
8816 (@pxref{Progspaces In Python}),
8817 and the object files within that program space (@pxref{Objfiles In Python}).
8818 @xref{Selecting Pretty-Printers}, for details on how @value{GDBN}
8819 looks up a printer from these three objects.
8820
8821 @var{name-regexp} is a regular expression matching the name of the printers
8822 to list.
8823
8824 @kindex disable pretty-printer
8825 @item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
8826 Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
8827 A disabled pretty-printer is not forgotten, it may be enabled again later.
8828
8829 @kindex enable pretty-printer
8830 @item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
8831 Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
8832 @end table
8833
8834 Example:
8835
8836 Suppose we have three pretty-printers installed: one from library1.so
8837 named @code{foo} that prints objects of type @code{foo}, and
8838 another from library2.so named @code{bar} that prints two types of objects,
8839 @code{bar1} and @code{bar2}.
8840
8841 @smallexample
8842 (gdb) info pretty-printer
8843 library1.so:
8844 foo
8845 library2.so:
8846 bar
8847 bar1
8848 bar2
8849 (gdb) info pretty-printer library2
8850 library2.so:
8851 bar
8852 bar1
8853 bar2
8854 (gdb) disable pretty-printer library1
8855 1 printer disabled
8856 2 of 3 printers enabled
8857 (gdb) info pretty-printer
8858 library1.so:
8859 foo [disabled]
8860 library2.so:
8861 bar
8862 bar1
8863 bar2
8864 (gdb) disable pretty-printer library2 bar:bar1
8865 1 printer disabled
8866 1 of 3 printers enabled
8867 (gdb) info pretty-printer library2
8868 library1.so:
8869 foo [disabled]
8870 library2.so:
8871 bar
8872 bar1 [disabled]
8873 bar2
8874 (gdb) disable pretty-printer library2 bar
8875 1 printer disabled
8876 0 of 3 printers enabled
8877 (gdb) info pretty-printer library2
8878 library1.so:
8879 foo [disabled]
8880 library2.so:
8881 bar [disabled]
8882 bar1 [disabled]
8883 bar2
8884 @end smallexample
8885
8886 Note that for @code{bar} the entire printer can be disabled,
8887 as can each individual subprinter.
8888
8889 @node Value History
8890 @section Value History
8891
8892 @cindex value history
8893 @cindex history of values printed by @value{GDBN}
8894 Values printed by the @code{print} command are saved in the @value{GDBN}
8895 @dfn{value history}. This allows you to refer to them in other expressions.
8896 Values are kept until the symbol table is re-read or discarded
8897 (for example with the @code{file} or @code{symbol-file} commands).
8898 When the symbol table changes, the value history is discarded,
8899 since the values may contain pointers back to the types defined in the
8900 symbol table.
8901
8902 @cindex @code{$}
8903 @cindex @code{$$}
8904 @cindex history number
8905 The values printed are given @dfn{history numbers} by which you can
8906 refer to them. These are successive integers starting with one.
8907 @code{print} shows you the history number assigned to a value by
8908 printing @samp{$@var{num} = } before the value; here @var{num} is the
8909 history number.
8910
8911 To refer to any previous value, use @samp{$} followed by the value's
8912 history number. The way @code{print} labels its output is designed to
8913 remind you of this. Just @code{$} refers to the most recent value in
8914 the history, and @code{$$} refers to the value before that.
8915 @code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
8916 is the value just prior to @code{$$}, @code{$$1} is equivalent to
8917 @code{$$}, and @code{$$0} is equivalent to @code{$}.
8918
8919 For example, suppose you have just printed a pointer to a structure and
8920 want to see the contents of the structure. It suffices to type
8921
8922 @smallexample
8923 p *$
8924 @end smallexample
8925
8926 If you have a chain of structures where the component @code{next} points
8927 to the next one, you can print the contents of the next one with this:
8928
8929 @smallexample
8930 p *$.next
8931 @end smallexample
8932
8933 @noindent
8934 You can print successive links in the chain by repeating this
8935 command---which you can do by just typing @key{RET}.
8936
8937 Note that the history records values, not expressions. If the value of
8938 @code{x} is 4 and you type these commands:
8939
8940 @smallexample
8941 print x
8942 set x=5
8943 @end smallexample
8944
8945 @noindent
8946 then the value recorded in the value history by the @code{print} command
8947 remains 4 even though the value of @code{x} has changed.
8948
8949 @table @code
8950 @kindex show values
8951 @item show values
8952 Print the last ten values in the value history, with their item numbers.
8953 This is like @samp{p@ $$9} repeated ten times, except that @code{show
8954 values} does not change the history.
8955
8956 @item show values @var{n}
8957 Print ten history values centered on history item number @var{n}.
8958
8959 @item show values +
8960 Print ten history values just after the values last printed. If no more
8961 values are available, @code{show values +} produces no display.
8962 @end table
8963
8964 Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
8965 same effect as @samp{show values +}.
8966
8967 @node Convenience Vars
8968 @section Convenience Variables
8969
8970 @cindex convenience variables
8971 @cindex user-defined variables
8972 @value{GDBN} provides @dfn{convenience variables} that you can use within
8973 @value{GDBN} to hold on to a value and refer to it later. These variables
8974 exist entirely within @value{GDBN}; they are not part of your program, and
8975 setting a convenience variable has no direct effect on further execution
8976 of your program. That is why you can use them freely.
8977
8978 Convenience variables are prefixed with @samp{$}. Any name preceded by
8979 @samp{$} can be used for a convenience variable, unless it is one of
8980 the predefined machine-specific register names (@pxref{Registers, ,Registers}).
8981 (Value history references, in contrast, are @emph{numbers} preceded
8982 by @samp{$}. @xref{Value History, ,Value History}.)
8983
8984 You can save a value in a convenience variable with an assignment
8985 expression, just as you would set a variable in your program.
8986 For example:
8987
8988 @smallexample
8989 set $foo = *object_ptr
8990 @end smallexample
8991
8992 @noindent
8993 would save in @code{$foo} the value contained in the object pointed to by
8994 @code{object_ptr}.
8995
8996 Using a convenience variable for the first time creates it, but its
8997 value is @code{void} until you assign a new value. You can alter the
8998 value with another assignment at any time.
8999
9000 Convenience variables have no fixed types. You can assign a convenience
9001 variable any type of value, including structures and arrays, even if
9002 that variable already has a value of a different type. The convenience
9003 variable, when used as an expression, has the type of its current value.
9004
9005 @table @code
9006 @kindex show convenience
9007 @cindex show all user variables
9008 @item show convenience
9009 Print a list of convenience variables used so far, and their values.
9010 Abbreviated @code{show conv}.
9011
9012 @kindex init-if-undefined
9013 @cindex convenience variables, initializing
9014 @item init-if-undefined $@var{variable} = @var{expression}
9015 Set a convenience variable if it has not already been set. This is useful
9016 for user-defined commands that keep some state. It is similar, in concept,
9017 to using local static variables with initializers in C (except that
9018 convenience variables are global). It can also be used to allow users to
9019 override default values used in a command script.
9020
9021 If the variable is already defined then the expression is not evaluated so
9022 any side-effects do not occur.
9023 @end table
9024
9025 One of the ways to use a convenience variable is as a counter to be
9026 incremented or a pointer to be advanced. For example, to print
9027 a field from successive elements of an array of structures:
9028
9029 @smallexample
9030 set $i = 0
9031 print bar[$i++]->contents
9032 @end smallexample
9033
9034 @noindent
9035 Repeat that command by typing @key{RET}.
9036
9037 Some convenience variables are created automatically by @value{GDBN} and given
9038 values likely to be useful.
9039
9040 @table @code
9041 @vindex $_@r{, convenience variable}
9042 @item $_
9043 The variable @code{$_} is automatically set by the @code{x} command to
9044 the last address examined (@pxref{Memory, ,Examining Memory}). Other
9045 commands which provide a default address for @code{x} to examine also
9046 set @code{$_} to that address; these commands include @code{info line}
9047 and @code{info breakpoint}. The type of @code{$_} is @code{void *}
9048 except when set by the @code{x} command, in which case it is a pointer
9049 to the type of @code{$__}.
9050
9051 @vindex $__@r{, convenience variable}
9052 @item $__
9053 The variable @code{$__} is automatically set by the @code{x} command
9054 to the value found in the last address examined. Its type is chosen
9055 to match the format in which the data was printed.
9056
9057 @item $_exitcode
9058 @vindex $_exitcode@r{, convenience variable}
9059 The variable @code{$_exitcode} is automatically set to the exit code when
9060 the program being debugged terminates.
9061
9062 @item $_sdata
9063 @vindex $_sdata@r{, inspect, convenience variable}
9064 The variable @code{$_sdata} contains extra collected static tracepoint
9065 data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that
9066 @code{$_sdata} could be empty, if not inspecting a trace buffer, or
9067 if extra static tracepoint data has not been collected.
9068
9069 @item $_siginfo
9070 @vindex $_siginfo@r{, convenience variable}
9071 The variable @code{$_siginfo} contains extra signal information
9072 (@pxref{extra signal information}). Note that @code{$_siginfo}
9073 could be empty, if the application has not yet received any signals.
9074 For example, it will be empty before you execute the @code{run} command.
9075
9076 @item $_tlb
9077 @vindex $_tlb@r{, convenience variable}
9078 The variable @code{$_tlb} is automatically set when debugging
9079 applications running on MS-Windows in native mode or connected to
9080 gdbserver that supports the @code{qGetTIBAddr} request.
9081 @xref{General Query Packets}.
9082 This variable contains the address of the thread information block.
9083
9084 @end table
9085
9086 On HP-UX systems, if you refer to a function or variable name that
9087 begins with a dollar sign, @value{GDBN} searches for a user or system
9088 name first, before it searches for a convenience variable.
9089
9090 @cindex convenience functions
9091 @value{GDBN} also supplies some @dfn{convenience functions}. These
9092 have a syntax similar to convenience variables. A convenience
9093 function can be used in an expression just like an ordinary function;
9094 however, a convenience function is implemented internally to
9095 @value{GDBN}.
9096
9097 @table @code
9098 @item help function
9099 @kindex help function
9100 @cindex show all convenience functions
9101 Print a list of all convenience functions.
9102 @end table
9103
9104 @node Registers
9105 @section Registers
9106
9107 @cindex registers
9108 You can refer to machine register contents, in expressions, as variables
9109 with names starting with @samp{$}. The names of registers are different
9110 for each machine; use @code{info registers} to see the names used on
9111 your machine.
9112
9113 @table @code
9114 @kindex info registers
9115 @item info registers
9116 Print the names and values of all registers except floating-point
9117 and vector registers (in the selected stack frame).
9118
9119 @kindex info all-registers
9120 @cindex floating point registers
9121 @item info all-registers
9122 Print the names and values of all registers, including floating-point
9123 and vector registers (in the selected stack frame).
9124
9125 @item info registers @var{regname} @dots{}
9126 Print the @dfn{relativized} value of each specified register @var{regname}.
9127 As discussed in detail below, register values are normally relative to
9128 the selected stack frame. @var{regname} may be any register name valid on
9129 the machine you are using, with or without the initial @samp{$}.
9130 @end table
9131
9132 @cindex stack pointer register
9133 @cindex program counter register
9134 @cindex process status register
9135 @cindex frame pointer register
9136 @cindex standard registers
9137 @value{GDBN} has four ``standard'' register names that are available (in
9138 expressions) on most machines---whenever they do not conflict with an
9139 architecture's canonical mnemonics for registers. The register names
9140 @code{$pc} and @code{$sp} are used for the program counter register and
9141 the stack pointer. @code{$fp} is used for a register that contains a
9142 pointer to the current stack frame, and @code{$ps} is used for a
9143 register that contains the processor status. For example,
9144 you could print the program counter in hex with
9145
9146 @smallexample
9147 p/x $pc
9148 @end smallexample
9149
9150 @noindent
9151 or print the instruction to be executed next with
9152
9153 @smallexample
9154 x/i $pc
9155 @end smallexample
9156
9157 @noindent
9158 or add four to the stack pointer@footnote{This is a way of removing
9159 one word from the stack, on machines where stacks grow downward in
9160 memory (most machines, nowadays). This assumes that the innermost
9161 stack frame is selected; setting @code{$sp} is not allowed when other
9162 stack frames are selected. To pop entire frames off the stack,
9163 regardless of machine architecture, use @code{return};
9164 see @ref{Returning, ,Returning from a Function}.} with
9165
9166 @smallexample
9167 set $sp += 4
9168 @end smallexample
9169
9170 Whenever possible, these four standard register names are available on
9171 your machine even though the machine has different canonical mnemonics,
9172 so long as there is no conflict. The @code{info registers} command
9173 shows the canonical names. For example, on the SPARC, @code{info
9174 registers} displays the processor status register as @code{$psr} but you
9175 can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
9176 is an alias for the @sc{eflags} register.
9177
9178 @value{GDBN} always considers the contents of an ordinary register as an
9179 integer when the register is examined in this way. Some machines have
9180 special registers which can hold nothing but floating point; these
9181 registers are considered to have floating point values. There is no way
9182 to refer to the contents of an ordinary register as floating point value
9183 (although you can @emph{print} it as a floating point value with
9184 @samp{print/f $@var{regname}}).
9185
9186 Some registers have distinct ``raw'' and ``virtual'' data formats. This
9187 means that the data format in which the register contents are saved by
9188 the operating system is not the same one that your program normally
9189 sees. For example, the registers of the 68881 floating point
9190 coprocessor are always saved in ``extended'' (raw) format, but all C
9191 programs expect to work with ``double'' (virtual) format. In such
9192 cases, @value{GDBN} normally works with the virtual format only (the format
9193 that makes sense for your program), but the @code{info registers} command
9194 prints the data in both formats.
9195
9196 @cindex SSE registers (x86)
9197 @cindex MMX registers (x86)
9198 Some machines have special registers whose contents can be interpreted
9199 in several different ways. For example, modern x86-based machines
9200 have SSE and MMX registers that can hold several values packed
9201 together in several different formats. @value{GDBN} refers to such
9202 registers in @code{struct} notation:
9203
9204 @smallexample
9205 (@value{GDBP}) print $xmm1
9206 $1 = @{
9207 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
9208 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
9209 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
9210 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
9211 v4_int32 = @{0, 20657912, 11, 13@},
9212 v2_int64 = @{88725056443645952, 55834574859@},
9213 uint128 = 0x0000000d0000000b013b36f800000000
9214 @}
9215 @end smallexample
9216
9217 @noindent
9218 To set values of such registers, you need to tell @value{GDBN} which
9219 view of the register you wish to change, as if you were assigning
9220 value to a @code{struct} member:
9221
9222 @smallexample
9223 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
9224 @end smallexample
9225
9226 Normally, register values are relative to the selected stack frame
9227 (@pxref{Selection, ,Selecting a Frame}). This means that you get the
9228 value that the register would contain if all stack frames farther in
9229 were exited and their saved registers restored. In order to see the
9230 true contents of hardware registers, you must select the innermost
9231 frame (with @samp{frame 0}).
9232
9233 However, @value{GDBN} must deduce where registers are saved, from the machine
9234 code generated by your compiler. If some registers are not saved, or if
9235 @value{GDBN} is unable to locate the saved registers, the selected stack
9236 frame makes no difference.
9237
9238 @node Floating Point Hardware
9239 @section Floating Point Hardware
9240 @cindex floating point
9241
9242 Depending on the configuration, @value{GDBN} may be able to give
9243 you more information about the status of the floating point hardware.
9244
9245 @table @code
9246 @kindex info float
9247 @item info float
9248 Display hardware-dependent information about the floating
9249 point unit. The exact contents and layout vary depending on the
9250 floating point chip. Currently, @samp{info float} is supported on
9251 the ARM and x86 machines.
9252 @end table
9253
9254 @node Vector Unit
9255 @section Vector Unit
9256 @cindex vector unit
9257
9258 Depending on the configuration, @value{GDBN} may be able to give you
9259 more information about the status of the vector unit.
9260
9261 @table @code
9262 @kindex info vector
9263 @item info vector
9264 Display information about the vector unit. The exact contents and
9265 layout vary depending on the hardware.
9266 @end table
9267
9268 @node OS Information
9269 @section Operating System Auxiliary Information
9270 @cindex OS information
9271
9272 @value{GDBN} provides interfaces to useful OS facilities that can help
9273 you debug your program.
9274
9275 @cindex @code{ptrace} system call
9276 @cindex @code{struct user} contents
9277 When @value{GDBN} runs on a @dfn{Posix system} (such as GNU or Unix
9278 machines), it interfaces with the inferior via the @code{ptrace}
9279 system call. The operating system creates a special sata structure,
9280 called @code{struct user}, for this interface. You can use the
9281 command @code{info udot} to display the contents of this data
9282 structure.
9283
9284 @table @code
9285 @item info udot
9286 @kindex info udot
9287 Display the contents of the @code{struct user} maintained by the OS
9288 kernel for the program being debugged. @value{GDBN} displays the
9289 contents of @code{struct user} as a list of hex numbers, similar to
9290 the @code{examine} command.
9291 @end table
9292
9293 @cindex auxiliary vector
9294 @cindex vector, auxiliary
9295 Some operating systems supply an @dfn{auxiliary vector} to programs at
9296 startup. This is akin to the arguments and environment that you
9297 specify for a program, but contains a system-dependent variety of
9298 binary values that tell system libraries important details about the
9299 hardware, operating system, and process. Each value's purpose is
9300 identified by an integer tag; the meanings are well-known but system-specific.
9301 Depending on the configuration and operating system facilities,
9302 @value{GDBN} may be able to show you this information. For remote
9303 targets, this functionality may further depend on the remote stub's
9304 support of the @samp{qXfer:auxv:read} packet, see
9305 @ref{qXfer auxiliary vector read}.
9306
9307 @table @code
9308 @kindex info auxv
9309 @item info auxv
9310 Display the auxiliary vector of the inferior, which can be either a
9311 live process or a core dump file. @value{GDBN} prints each tag value
9312 numerically, and also shows names and text descriptions for recognized
9313 tags. Some values in the vector are numbers, some bit masks, and some
9314 pointers to strings or other data. @value{GDBN} displays each value in the
9315 most appropriate form for a recognized tag, and in hexadecimal for
9316 an unrecognized tag.
9317 @end table
9318
9319 On some targets, @value{GDBN} can access operating-system-specific information
9320 and display it to user, without interpretation. For remote targets,
9321 this functionality depends on the remote stub's support of the
9322 @samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
9323
9324 @table @code
9325 @kindex info os
9326 @item info os
9327 List the types of OS information available for the target. If the
9328 target does not return a list of possible types, this command will
9329 report an error.
9330
9331 @kindex info os processes
9332 @item info os processes
9333 Display the list of processes on the target. For each process,
9334 @value{GDBN} prints the process identifier, the name of the user, and
9335 the command corresponding to the process.
9336 @end table
9337
9338 @node Memory Region Attributes
9339 @section Memory Region Attributes
9340 @cindex memory region attributes
9341
9342 @dfn{Memory region attributes} allow you to describe special handling
9343 required by regions of your target's memory. @value{GDBN} uses
9344 attributes to determine whether to allow certain types of memory
9345 accesses; whether to use specific width accesses; and whether to cache
9346 target memory. By default the description of memory regions is
9347 fetched from the target (if the current target supports this), but the
9348 user can override the fetched regions.
9349
9350 Defined memory regions can be individually enabled and disabled. When a
9351 memory region is disabled, @value{GDBN} uses the default attributes when
9352 accessing memory in that region. Similarly, if no memory regions have
9353 been defined, @value{GDBN} uses the default attributes when accessing
9354 all memory.
9355
9356 When a memory region is defined, it is given a number to identify it;
9357 to enable, disable, or remove a memory region, you specify that number.
9358
9359 @table @code
9360 @kindex mem
9361 @item mem @var{lower} @var{upper} @var{attributes}@dots{}
9362 Define a memory region bounded by @var{lower} and @var{upper} with
9363 attributes @var{attributes}@dots{}, and add it to the list of regions
9364 monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
9365 case: it is treated as the target's maximum memory address.
9366 (0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
9367
9368 @item mem auto
9369 Discard any user changes to the memory regions and use target-supplied
9370 regions, if available, or no regions if the target does not support.
9371
9372 @kindex delete mem
9373 @item delete mem @var{nums}@dots{}
9374 Remove memory regions @var{nums}@dots{} from the list of regions
9375 monitored by @value{GDBN}.
9376
9377 @kindex disable mem
9378 @item disable mem @var{nums}@dots{}
9379 Disable monitoring of memory regions @var{nums}@dots{}.
9380 A disabled memory region is not forgotten.
9381 It may be enabled again later.
9382
9383 @kindex enable mem
9384 @item enable mem @var{nums}@dots{}
9385 Enable monitoring of memory regions @var{nums}@dots{}.
9386
9387 @kindex info mem
9388 @item info mem
9389 Print a table of all defined memory regions, with the following columns
9390 for each region:
9391
9392 @table @emph
9393 @item Memory Region Number
9394 @item Enabled or Disabled.
9395 Enabled memory regions are marked with @samp{y}.
9396 Disabled memory regions are marked with @samp{n}.
9397
9398 @item Lo Address
9399 The address defining the inclusive lower bound of the memory region.
9400
9401 @item Hi Address
9402 The address defining the exclusive upper bound of the memory region.
9403
9404 @item Attributes
9405 The list of attributes set for this memory region.
9406 @end table
9407 @end table
9408
9409
9410 @subsection Attributes
9411
9412 @subsubsection Memory Access Mode
9413 The access mode attributes set whether @value{GDBN} may make read or
9414 write accesses to a memory region.
9415
9416 While these attributes prevent @value{GDBN} from performing invalid
9417 memory accesses, they do nothing to prevent the target system, I/O DMA,
9418 etc.@: from accessing memory.
9419
9420 @table @code
9421 @item ro
9422 Memory is read only.
9423 @item wo
9424 Memory is write only.
9425 @item rw
9426 Memory is read/write. This is the default.
9427 @end table
9428
9429 @subsubsection Memory Access Size
9430 The access size attribute tells @value{GDBN} to use specific sized
9431 accesses in the memory region. Often memory mapped device registers
9432 require specific sized accesses. If no access size attribute is
9433 specified, @value{GDBN} may use accesses of any size.
9434
9435 @table @code
9436 @item 8
9437 Use 8 bit memory accesses.
9438 @item 16
9439 Use 16 bit memory accesses.
9440 @item 32
9441 Use 32 bit memory accesses.
9442 @item 64
9443 Use 64 bit memory accesses.
9444 @end table
9445
9446 @c @subsubsection Hardware/Software Breakpoints
9447 @c The hardware/software breakpoint attributes set whether @value{GDBN}
9448 @c will use hardware or software breakpoints for the internal breakpoints
9449 @c used by the step, next, finish, until, etc. commands.
9450 @c
9451 @c @table @code
9452 @c @item hwbreak
9453 @c Always use hardware breakpoints
9454 @c @item swbreak (default)
9455 @c @end table
9456
9457 @subsubsection Data Cache
9458 The data cache attributes set whether @value{GDBN} will cache target
9459 memory. While this generally improves performance by reducing debug
9460 protocol overhead, it can lead to incorrect results because @value{GDBN}
9461 does not know about volatile variables or memory mapped device
9462 registers.
9463
9464 @table @code
9465 @item cache
9466 Enable @value{GDBN} to cache target memory.
9467 @item nocache
9468 Disable @value{GDBN} from caching target memory. This is the default.
9469 @end table
9470
9471 @subsection Memory Access Checking
9472 @value{GDBN} can be instructed to refuse accesses to memory that is
9473 not explicitly described. This can be useful if accessing such
9474 regions has undesired effects for a specific target, or to provide
9475 better error checking. The following commands control this behaviour.
9476
9477 @table @code
9478 @kindex set mem inaccessible-by-default
9479 @item set mem inaccessible-by-default [on|off]
9480 If @code{on} is specified, make @value{GDBN} treat memory not
9481 explicitly described by the memory ranges as non-existent and refuse accesses
9482 to such memory. The checks are only performed if there's at least one
9483 memory range defined. If @code{off} is specified, make @value{GDBN}
9484 treat the memory not explicitly described by the memory ranges as RAM.
9485 The default value is @code{on}.
9486 @kindex show mem inaccessible-by-default
9487 @item show mem inaccessible-by-default
9488 Show the current handling of accesses to unknown memory.
9489 @end table
9490
9491
9492 @c @subsubsection Memory Write Verification
9493 @c The memory write verification attributes set whether @value{GDBN}
9494 @c will re-reads data after each write to verify the write was successful.
9495 @c
9496 @c @table @code
9497 @c @item verify
9498 @c @item noverify (default)
9499 @c @end table
9500
9501 @node Dump/Restore Files
9502 @section Copy Between Memory and a File
9503 @cindex dump/restore files
9504 @cindex append data to a file
9505 @cindex dump data to a file
9506 @cindex restore data from a file
9507
9508 You can use the commands @code{dump}, @code{append}, and
9509 @code{restore} to copy data between target memory and a file. The
9510 @code{dump} and @code{append} commands write data to a file, and the
9511 @code{restore} command reads data from a file back into the inferior's
9512 memory. Files may be in binary, Motorola S-record, Intel hex, or
9513 Tektronix Hex format; however, @value{GDBN} can only append to binary
9514 files.
9515
9516 @table @code
9517
9518 @kindex dump
9519 @item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9520 @itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
9521 Dump the contents of memory from @var{start_addr} to @var{end_addr},
9522 or the value of @var{expr}, to @var{filename} in the given format.
9523
9524 The @var{format} parameter may be any one of:
9525 @table @code
9526 @item binary
9527 Raw binary form.
9528 @item ihex
9529 Intel hex format.
9530 @item srec
9531 Motorola S-record format.
9532 @item tekhex
9533 Tektronix Hex format.
9534 @end table
9535
9536 @value{GDBN} uses the same definitions of these formats as the
9537 @sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
9538 @var{format} is omitted, @value{GDBN} dumps the data in raw binary
9539 form.
9540
9541 @kindex append
9542 @item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9543 @itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
9544 Append the contents of memory from @var{start_addr} to @var{end_addr},
9545 or the value of @var{expr}, to the file @var{filename}, in raw binary form.
9546 (@value{GDBN} can only append data to files in raw binary form.)
9547
9548 @kindex restore
9549 @item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
9550 Restore the contents of file @var{filename} into memory. The
9551 @code{restore} command can automatically recognize any known @sc{bfd}
9552 file format, except for raw binary. To restore a raw binary file you
9553 must specify the optional keyword @code{binary} after the filename.
9554
9555 If @var{bias} is non-zero, its value will be added to the addresses
9556 contained in the file. Binary files always start at address zero, so
9557 they will be restored at address @var{bias}. Other bfd files have
9558 a built-in location; they will be restored at offset @var{bias}
9559 from that location.
9560
9561 If @var{start} and/or @var{end} are non-zero, then only data between
9562 file offset @var{start} and file offset @var{end} will be restored.
9563 These offsets are relative to the addresses in the file, before
9564 the @var{bias} argument is applied.
9565
9566 @end table
9567
9568 @node Core File Generation
9569 @section How to Produce a Core File from Your Program
9570 @cindex dump core from inferior
9571
9572 A @dfn{core file} or @dfn{core dump} is a file that records the memory
9573 image of a running process and its process status (register values
9574 etc.). Its primary use is post-mortem debugging of a program that
9575 crashed while it ran outside a debugger. A program that crashes
9576 automatically produces a core file, unless this feature is disabled by
9577 the user. @xref{Files}, for information on invoking @value{GDBN} in
9578 the post-mortem debugging mode.
9579
9580 Occasionally, you may wish to produce a core file of the program you
9581 are debugging in order to preserve a snapshot of its state.
9582 @value{GDBN} has a special command for that.
9583
9584 @table @code
9585 @kindex gcore
9586 @kindex generate-core-file
9587 @item generate-core-file [@var{file}]
9588 @itemx gcore [@var{file}]
9589 Produce a core dump of the inferior process. The optional argument
9590 @var{file} specifies the file name where to put the core dump. If not
9591 specified, the file name defaults to @file{core.@var{pid}}, where
9592 @var{pid} is the inferior process ID.
9593
9594 Note that this command is implemented only for some systems (as of
9595 this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
9596 @end table
9597
9598 @node Character Sets
9599 @section Character Sets
9600 @cindex character sets
9601 @cindex charset
9602 @cindex translating between character sets
9603 @cindex host character set
9604 @cindex target character set
9605
9606 If the program you are debugging uses a different character set to
9607 represent characters and strings than the one @value{GDBN} uses itself,
9608 @value{GDBN} can automatically translate between the character sets for
9609 you. The character set @value{GDBN} uses we call the @dfn{host
9610 character set}; the one the inferior program uses we call the
9611 @dfn{target character set}.
9612
9613 For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
9614 uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
9615 remote protocol (@pxref{Remote Debugging}) to debug a program
9616 running on an IBM mainframe, which uses the @sc{ebcdic} character set,
9617 then the host character set is Latin-1, and the target character set is
9618 @sc{ebcdic}. If you give @value{GDBN} the command @code{set
9619 target-charset EBCDIC-US}, then @value{GDBN} translates between
9620 @sc{ebcdic} and Latin 1 as you print character or string values, or use
9621 character and string literals in expressions.
9622
9623 @value{GDBN} has no way to automatically recognize which character set
9624 the inferior program uses; you must tell it, using the @code{set
9625 target-charset} command, described below.
9626
9627 Here are the commands for controlling @value{GDBN}'s character set
9628 support:
9629
9630 @table @code
9631 @item set target-charset @var{charset}
9632 @kindex set target-charset
9633 Set the current target character set to @var{charset}. To display the
9634 list of supported target character sets, type
9635 @kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
9636
9637 @item set host-charset @var{charset}
9638 @kindex set host-charset
9639 Set the current host character set to @var{charset}.
9640
9641 By default, @value{GDBN} uses a host character set appropriate to the
9642 system it is running on; you can override that default using the
9643 @code{set host-charset} command. On some systems, @value{GDBN} cannot
9644 automatically determine the appropriate host character set. In this
9645 case, @value{GDBN} uses @samp{UTF-8}.
9646
9647 @value{GDBN} can only use certain character sets as its host character
9648 set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}},
9649 @value{GDBN} will list the host character sets it supports.
9650
9651 @item set charset @var{charset}
9652 @kindex set charset
9653 Set the current host and target character sets to @var{charset}. As
9654 above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
9655 @value{GDBN} will list the names of the character sets that can be used
9656 for both host and target.
9657
9658 @item show charset
9659 @kindex show charset
9660 Show the names of the current host and target character sets.
9661
9662 @item show host-charset
9663 @kindex show host-charset
9664 Show the name of the current host character set.
9665
9666 @item show target-charset
9667 @kindex show target-charset
9668 Show the name of the current target character set.
9669
9670 @item set target-wide-charset @var{charset}
9671 @kindex set target-wide-charset
9672 Set the current target's wide character set to @var{charset}. This is
9673 the character set used by the target's @code{wchar_t} type. To
9674 display the list of supported wide character sets, type
9675 @kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
9676
9677 @item show target-wide-charset
9678 @kindex show target-wide-charset
9679 Show the name of the current target's wide character set.
9680 @end table
9681
9682 Here is an example of @value{GDBN}'s character set support in action.
9683 Assume that the following source code has been placed in the file
9684 @file{charset-test.c}:
9685
9686 @smallexample
9687 #include <stdio.h>
9688
9689 char ascii_hello[]
9690 = @{72, 101, 108, 108, 111, 44, 32, 119,
9691 111, 114, 108, 100, 33, 10, 0@};
9692 char ibm1047_hello[]
9693 = @{200, 133, 147, 147, 150, 107, 64, 166,
9694 150, 153, 147, 132, 90, 37, 0@};
9695
9696 main ()
9697 @{
9698 printf ("Hello, world!\n");
9699 @}
9700 @end smallexample
9701
9702 In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
9703 containing the string @samp{Hello, world!} followed by a newline,
9704 encoded in the @sc{ascii} and @sc{ibm1047} character sets.
9705
9706 We compile the program, and invoke the debugger on it:
9707
9708 @smallexample
9709 $ gcc -g charset-test.c -o charset-test
9710 $ gdb -nw charset-test
9711 GNU gdb 2001-12-19-cvs
9712 Copyright 2001 Free Software Foundation, Inc.
9713 @dots{}
9714 (@value{GDBP})
9715 @end smallexample
9716
9717 We can use the @code{show charset} command to see what character sets
9718 @value{GDBN} is currently using to interpret and display characters and
9719 strings:
9720
9721 @smallexample
9722 (@value{GDBP}) show charset
9723 The current host and target character set is `ISO-8859-1'.
9724 (@value{GDBP})
9725 @end smallexample
9726
9727 For the sake of printing this manual, let's use @sc{ascii} as our
9728 initial character set:
9729 @smallexample
9730 (@value{GDBP}) set charset ASCII
9731 (@value{GDBP}) show charset
9732 The current host and target character set is `ASCII'.
9733 (@value{GDBP})
9734 @end smallexample
9735
9736 Let's assume that @sc{ascii} is indeed the correct character set for our
9737 host system --- in other words, let's assume that if @value{GDBN} prints
9738 characters using the @sc{ascii} character set, our terminal will display
9739 them properly. Since our current target character set is also
9740 @sc{ascii}, the contents of @code{ascii_hello} print legibly:
9741
9742 @smallexample
9743 (@value{GDBP}) print ascii_hello
9744 $1 = 0x401698 "Hello, world!\n"
9745 (@value{GDBP}) print ascii_hello[0]
9746 $2 = 72 'H'
9747 (@value{GDBP})
9748 @end smallexample
9749
9750 @value{GDBN} uses the target character set for character and string
9751 literals you use in expressions:
9752
9753 @smallexample
9754 (@value{GDBP}) print '+'
9755 $3 = 43 '+'
9756 (@value{GDBP})
9757 @end smallexample
9758
9759 The @sc{ascii} character set uses the number 43 to encode the @samp{+}
9760 character.
9761
9762 @value{GDBN} relies on the user to tell it which character set the
9763 target program uses. If we print @code{ibm1047_hello} while our target
9764 character set is still @sc{ascii}, we get jibberish:
9765
9766 @smallexample
9767 (@value{GDBP}) print ibm1047_hello
9768 $4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
9769 (@value{GDBP}) print ibm1047_hello[0]
9770 $5 = 200 '\310'
9771 (@value{GDBP})
9772 @end smallexample
9773
9774 If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
9775 @value{GDBN} tells us the character sets it supports:
9776
9777 @smallexample
9778 (@value{GDBP}) set target-charset
9779 ASCII EBCDIC-US IBM1047 ISO-8859-1
9780 (@value{GDBP}) set target-charset
9781 @end smallexample
9782
9783 We can select @sc{ibm1047} as our target character set, and examine the
9784 program's strings again. Now the @sc{ascii} string is wrong, but
9785 @value{GDBN} translates the contents of @code{ibm1047_hello} from the
9786 target character set, @sc{ibm1047}, to the host character set,
9787 @sc{ascii}, and they display correctly:
9788
9789 @smallexample
9790 (@value{GDBP}) set target-charset IBM1047
9791 (@value{GDBP}) show charset
9792 The current host character set is `ASCII'.
9793 The current target character set is `IBM1047'.
9794 (@value{GDBP}) print ascii_hello
9795 $6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
9796 (@value{GDBP}) print ascii_hello[0]
9797 $7 = 72 '\110'
9798 (@value{GDBP}) print ibm1047_hello
9799 $8 = 0x4016a8 "Hello, world!\n"
9800 (@value{GDBP}) print ibm1047_hello[0]
9801 $9 = 200 'H'
9802 (@value{GDBP})
9803 @end smallexample
9804
9805 As above, @value{GDBN} uses the target character set for character and
9806 string literals you use in expressions:
9807
9808 @smallexample
9809 (@value{GDBP}) print '+'
9810 $10 = 78 '+'
9811 (@value{GDBP})
9812 @end smallexample
9813
9814 The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
9815 character.
9816
9817 @node Caching Remote Data
9818 @section Caching Data of Remote Targets
9819 @cindex caching data of remote targets
9820
9821 @value{GDBN} caches data exchanged between the debugger and a
9822 remote target (@pxref{Remote Debugging}). Such caching generally improves
9823 performance, because it reduces the overhead of the remote protocol by
9824 bundling memory reads and writes into large chunks. Unfortunately, simply
9825 caching everything would lead to incorrect results, since @value{GDBN}
9826 does not necessarily know anything about volatile values, memory-mapped I/O
9827 addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
9828 memory can be changed @emph{while} a gdb command is executing.
9829 Therefore, by default, @value{GDBN} only caches data
9830 known to be on the stack@footnote{In non-stop mode, it is moderately
9831 rare for a running thread to modify the stack of a stopped thread
9832 in a way that would interfere with a backtrace, and caching of
9833 stack reads provides a significant speed up of remote backtraces.}.
9834 Other regions of memory can be explicitly marked as
9835 cacheable; see @pxref{Memory Region Attributes}.
9836
9837 @table @code
9838 @kindex set remotecache
9839 @item set remotecache on
9840 @itemx set remotecache off
9841 This option no longer does anything; it exists for compatibility
9842 with old scripts.
9843
9844 @kindex show remotecache
9845 @item show remotecache
9846 Show the current state of the obsolete remotecache flag.
9847
9848 @kindex set stack-cache
9849 @item set stack-cache on
9850 @itemx set stack-cache off
9851 Enable or disable caching of stack accesses. When @code{ON}, use
9852 caching. By default, this option is @code{ON}.
9853
9854 @kindex show stack-cache
9855 @item show stack-cache
9856 Show the current state of data caching for memory accesses.
9857
9858 @kindex info dcache
9859 @item info dcache @r{[}line@r{]}
9860 Print the information about the data cache performance. The
9861 information displayed includes the dcache width and depth, and for
9862 each cache line, its number, address, and how many times it was
9863 referenced. This command is useful for debugging the data cache
9864 operation.
9865
9866 If a line number is specified, the contents of that line will be
9867 printed in hex.
9868
9869 @item set dcache size @var{size}
9870 @cindex dcache size
9871 @kindex set dcache size
9872 Set maximum number of entries in dcache (dcache depth above).
9873
9874 @item set dcache line-size @var{line-size}
9875 @cindex dcache line-size
9876 @kindex set dcache line-size
9877 Set number of bytes each dcache entry caches (dcache width above).
9878 Must be a power of 2.
9879
9880 @item show dcache size
9881 @kindex show dcache size
9882 Show maximum number of dcache entries. See also @ref{Caching Remote Data, info dcache}.
9883
9884 @item show dcache line-size
9885 @kindex show dcache line-size
9886 Show default size of dcache lines. See also @ref{Caching Remote Data, info dcache}.
9887
9888 @end table
9889
9890 @node Searching Memory
9891 @section Search Memory
9892 @cindex searching memory
9893
9894 Memory can be searched for a particular sequence of bytes with the
9895 @code{find} command.
9896
9897 @table @code
9898 @kindex find
9899 @item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
9900 @itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
9901 Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
9902 etc. The search begins at address @var{start_addr} and continues for either
9903 @var{len} bytes or through to @var{end_addr} inclusive.
9904 @end table
9905
9906 @var{s} and @var{n} are optional parameters.
9907 They may be specified in either order, apart or together.
9908
9909 @table @r
9910 @item @var{s}, search query size
9911 The size of each search query value.
9912
9913 @table @code
9914 @item b
9915 bytes
9916 @item h
9917 halfwords (two bytes)
9918 @item w
9919 words (four bytes)
9920 @item g
9921 giant words (eight bytes)
9922 @end table
9923
9924 All values are interpreted in the current language.
9925 This means, for example, that if the current source language is C/C@t{++}
9926 then searching for the string ``hello'' includes the trailing '\0'.
9927
9928 If the value size is not specified, it is taken from the
9929 value's type in the current language.
9930 This is useful when one wants to specify the search
9931 pattern as a mixture of types.
9932 Note that this means, for example, that in the case of C-like languages
9933 a search for an untyped 0x42 will search for @samp{(int) 0x42}
9934 which is typically four bytes.
9935
9936 @item @var{n}, maximum number of finds
9937 The maximum number of matches to print. The default is to print all finds.
9938 @end table
9939
9940 You can use strings as search values. Quote them with double-quotes
9941 (@code{"}).
9942 The string value is copied into the search pattern byte by byte,
9943 regardless of the endianness of the target and the size specification.
9944
9945 The address of each match found is printed as well as a count of the
9946 number of matches found.
9947
9948 The address of the last value found is stored in convenience variable
9949 @samp{$_}.
9950 A count of the number of matches is stored in @samp{$numfound}.
9951
9952 For example, if stopped at the @code{printf} in this function:
9953
9954 @smallexample
9955 void
9956 hello ()
9957 @{
9958 static char hello[] = "hello-hello";
9959 static struct @{ char c; short s; int i; @}
9960 __attribute__ ((packed)) mixed
9961 = @{ 'c', 0x1234, 0x87654321 @};
9962 printf ("%s\n", hello);
9963 @}
9964 @end smallexample
9965
9966 @noindent
9967 you get during debugging:
9968
9969 @smallexample
9970 (gdb) find &hello[0], +sizeof(hello), "hello"
9971 0x804956d <hello.1620+6>
9972 1 pattern found
9973 (gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
9974 0x8049567 <hello.1620>
9975 0x804956d <hello.1620+6>
9976 2 patterns found
9977 (gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
9978 0x8049567 <hello.1620>
9979 1 pattern found
9980 (gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
9981 0x8049560 <mixed.1625>
9982 1 pattern found
9983 (gdb) print $numfound
9984 $1 = 1
9985 (gdb) print $_
9986 $2 = (void *) 0x8049560
9987 @end smallexample
9988
9989 @node Optimized Code
9990 @chapter Debugging Optimized Code
9991 @cindex optimized code, debugging
9992 @cindex debugging optimized code
9993
9994 Almost all compilers support optimization. With optimization
9995 disabled, the compiler generates assembly code that corresponds
9996 directly to your source code, in a simplistic way. As the compiler
9997 applies more powerful optimizations, the generated assembly code
9998 diverges from your original source code. With help from debugging
9999 information generated by the compiler, @value{GDBN} can map from
10000 the running program back to constructs from your original source.
10001
10002 @value{GDBN} is more accurate with optimization disabled. If you
10003 can recompile without optimization, it is easier to follow the
10004 progress of your program during debugging. But, there are many cases
10005 where you may need to debug an optimized version.
10006
10007 When you debug a program compiled with @samp{-g -O}, remember that the
10008 optimizer has rearranged your code; the debugger shows you what is
10009 really there. Do not be too surprised when the execution path does not
10010 exactly match your source file! An extreme example: if you define a
10011 variable, but never use it, @value{GDBN} never sees that
10012 variable---because the compiler optimizes it out of existence.
10013
10014 Some things do not work as well with @samp{-g -O} as with just
10015 @samp{-g}, particularly on machines with instruction scheduling. If in
10016 doubt, recompile with @samp{-g} alone, and if this fixes the problem,
10017 please report it to us as a bug (including a test case!).
10018 @xref{Variables}, for more information about debugging optimized code.
10019
10020 @menu
10021 * Inline Functions:: How @value{GDBN} presents inlining
10022 * Tail Call Frames:: @value{GDBN} analysis of jumps to functions
10023 @end menu
10024
10025 @node Inline Functions
10026 @section Inline Functions
10027 @cindex inline functions, debugging
10028
10029 @dfn{Inlining} is an optimization that inserts a copy of the function
10030 body directly at each call site, instead of jumping to a shared
10031 routine. @value{GDBN} displays inlined functions just like
10032 non-inlined functions. They appear in backtraces. You can view their
10033 arguments and local variables, step into them with @code{step}, skip
10034 them with @code{next}, and escape from them with @code{finish}.
10035 You can check whether a function was inlined by using the
10036 @code{info frame} command.
10037
10038 For @value{GDBN} to support inlined functions, the compiler must
10039 record information about inlining in the debug information ---
10040 @value{NGCC} using the @sc{dwarf 2} format does this, and several
10041 other compilers do also. @value{GDBN} only supports inlined functions
10042 when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
10043 do not emit two required attributes (@samp{DW_AT_call_file} and
10044 @samp{DW_AT_call_line}); @value{GDBN} does not display inlined
10045 function calls with earlier versions of @value{NGCC}. It instead
10046 displays the arguments and local variables of inlined functions as
10047 local variables in the caller.
10048
10049 The body of an inlined function is directly included at its call site;
10050 unlike a non-inlined function, there are no instructions devoted to
10051 the call. @value{GDBN} still pretends that the call site and the
10052 start of the inlined function are different instructions. Stepping to
10053 the call site shows the call site, and then stepping again shows
10054 the first line of the inlined function, even though no additional
10055 instructions are executed.
10056
10057 This makes source-level debugging much clearer; you can see both the
10058 context of the call and then the effect of the call. Only stepping by
10059 a single instruction using @code{stepi} or @code{nexti} does not do
10060 this; single instruction steps always show the inlined body.
10061
10062 There are some ways that @value{GDBN} does not pretend that inlined
10063 function calls are the same as normal calls:
10064
10065 @itemize @bullet
10066 @item
10067 Setting breakpoints at the call site of an inlined function may not
10068 work, because the call site does not contain any code. @value{GDBN}
10069 may incorrectly move the breakpoint to the next line of the enclosing
10070 function, after the call. This limitation will be removed in a future
10071 version of @value{GDBN}; until then, set a breakpoint on an earlier line
10072 or inside the inlined function instead.
10073
10074 @item
10075 @value{GDBN} cannot locate the return value of inlined calls after
10076 using the @code{finish} command. This is a limitation of compiler-generated
10077 debugging information; after @code{finish}, you can step to the next line
10078 and print a variable where your program stored the return value.
10079
10080 @end itemize
10081
10082 @node Tail Call Frames
10083 @section Tail Call Frames
10084 @cindex tail call frames, debugging
10085
10086 Function @code{B} can call function @code{C} in its very last statement. In
10087 unoptimized compilation the call of @code{C} is immediately followed by return
10088 instruction at the end of @code{B} code. Optimizing compiler may replace the
10089 call and return in function @code{B} into one jump to function @code{C}
10090 instead. Such use of a jump instruction is called @dfn{tail call}.
10091
10092 During execution of function @code{C}, there will be no indication in the
10093 function call stack frames that it was tail-called from @code{B}. If function
10094 @code{A} regularly calls function @code{B} which tail-calls function @code{C},
10095 then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in
10096 some cases @value{GDBN} can determine that @code{C} was tail-called from
10097 @code{B}, and it will then create fictitious call frame for that, with the
10098 return address set up as if @code{B} called @code{C} normally.
10099
10100 This functionality is currently supported only by DWARF 2 debugging format and
10101 the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
10102 @value{NGCC}, you need to specify @option{-O -g} during compilation, to get
10103 this information.
10104
10105 @kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame
10106 kind by text @code{tail call frame} such as in this sample @value{GDBN} output:
10107
10108 @smallexample
10109 (gdb) x/i $pc - 2
10110 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)>
10111 (gdb) info frame
10112 Stack level 1, frame at 0x7fffffffda30:
10113 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5
10114 tail call frame, caller of frame at 0x7fffffffda30
10115 source language c++.
10116 Arglist at unknown address.
10117 Locals at unknown address, Previous frame's sp is 0x7fffffffda30
10118 @end smallexample
10119
10120 The detection of all the possible code path executions can find them ambiguous.
10121 There is no execution history stored (possible @ref{Reverse Execution} is never
10122 used for this purpose) and the last known caller could have reached the known
10123 callee by multiple different jump sequences. In such case @value{GDBN} still
10124 tries to show at least all the unambiguous top tail callers and all the
10125 unambiguous bottom tail calees, if any.
10126
10127 @table @code
10128 @anchor{set debug entry-values}
10129 @item set debug entry-values
10130 @kindex set debug entry-values
10131 When set to on, enables printing of analysis messages for both frame argument
10132 values at function entry and tail calls. It will show all the possible valid
10133 tail calls code paths it has considered. It will also print the intersection
10134 of them with the final unambiguous (possibly partial or even empty) code path
10135 result.
10136
10137 @item show debug entry-values
10138 @kindex show debug entry-values
10139 Show the current state of analysis messages printing for both frame argument
10140 values at function entry and tail calls.
10141 @end table
10142
10143 The analysis messages for tail calls can for example show why the virtual tail
10144 call frame for function @code{c} has not been recognized (due to the indirect
10145 reference by variable @code{x}):
10146
10147 @smallexample
10148 static void __attribute__((noinline, noclone)) c (void);
10149 void (*x) (void) = c;
10150 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10151 static void __attribute__((noinline, noclone)) c (void) @{ a (); @}
10152 int main (void) @{ x (); return 0; @}
10153
10154 Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find
10155 DW_TAG_GNU_call_site 0x40039a in main
10156 a () at t.c:3
10157 3 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10158 (gdb) bt
10159 #0 a () at t.c:3
10160 #1 0x000000000040039a in main () at t.c:5
10161 @end smallexample
10162
10163 Another possibility is an ambiguous virtual tail call frames resolution:
10164
10165 @smallexample
10166 int i;
10167 static void __attribute__((noinline, noclone)) f (void) @{ i++; @}
10168 static void __attribute__((noinline, noclone)) e (void) @{ f (); @}
10169 static void __attribute__((noinline, noclone)) d (void) @{ f (); @}
10170 static void __attribute__((noinline, noclone)) c (void) @{ d (); @}
10171 static void __attribute__((noinline, noclone)) b (void)
10172 @{ if (i) c (); else e (); @}
10173 static void __attribute__((noinline, noclone)) a (void) @{ b (); @}
10174 int main (void) @{ a (); return 0; @}
10175
10176 tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d)
10177 tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e)
10178 tailcall: reduced: 0x4004d2(a) |
10179 (gdb) bt
10180 #0 f () at t.c:2
10181 #1 0x00000000004004d2 in a () at t.c:8
10182 #2 0x0000000000400395 in main () at t.c:9
10183 @end smallexample
10184
10185 @set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f}
10186 @set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f}
10187
10188 @c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK.
10189 @ifset HAVE_MAKEINFO_CLICK
10190 @set ARROW @click{}
10191 @set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}}
10192 @set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}}
10193 @end ifset
10194 @ifclear HAVE_MAKEINFO_CLICK
10195 @set ARROW ->
10196 @set CALLSEQ1B @value{CALLSEQ1A}
10197 @set CALLSEQ2B @value{CALLSEQ2A}
10198 @end ifclear
10199
10200 Frames #0 and #2 are real, #1 is a virtual tail call frame.
10201 The code can have possible execution paths @value{CALLSEQ1B} or
10202 @value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state.
10203
10204 @code{initial:} state shows some random possible calling sequence @value{GDBN}
10205 has found. It then finds another possible calling sequcen - that one is
10206 prefixed by @code{compare:}. The non-ambiguous intersection of these two is
10207 printed as the @code{reduced:} calling sequence. That one could have many
10208 futher @code{compare:} and @code{reduced:} statements as long as there remain
10209 any non-ambiguous sequence entries.
10210
10211 For the frame of function @code{b} in both cases there are different possible
10212 @code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is
10213 also ambigous. The only non-ambiguous frame is the one for function @code{a},
10214 therefore this one is displayed to the user while the ambiguous frames are
10215 omitted.
10216
10217 There can be also reasons why printing of frame argument values at function
10218 entry may fail:
10219
10220 @smallexample
10221 int v;
10222 static void __attribute__((noinline, noclone)) c (int i) @{ v++; @}
10223 static void __attribute__((noinline, noclone)) a (int i);
10224 static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @}
10225 static void __attribute__((noinline, noclone)) a (int i)
10226 @{ if (i) b (i - 1); else c (0); @}
10227 int main (void) @{ a (5); return 0; @}
10228
10229 (gdb) bt
10230 #0 c (i=i@@entry=0) at t.c:2
10231 #1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found
10232 function "a" at 0x400420 can call itself via tail calls
10233 i=<optimized out>) at t.c:6
10234 #2 0x000000000040036e in main () at t.c:7
10235 @end smallexample
10236
10237 @value{GDBN} cannot find out from the inferior state if and how many times did
10238 function @code{a} call itself (via function @code{b}) as these calls would be
10239 tail calls. Such tail calls would modify thue @code{i} variable, therefore
10240 @value{GDBN} cannot be sure the value it knows would be right - @value{GDBN}
10241 prints @code{<optimized out>} instead.
10242
10243 @node Macros
10244 @chapter C Preprocessor Macros
10245
10246 Some languages, such as C and C@t{++}, provide a way to define and invoke
10247 ``preprocessor macros'' which expand into strings of tokens.
10248 @value{GDBN} can evaluate expressions containing macro invocations, show
10249 the result of macro expansion, and show a macro's definition, including
10250 where it was defined.
10251
10252 You may need to compile your program specially to provide @value{GDBN}
10253 with information about preprocessor macros. Most compilers do not
10254 include macros in their debugging information, even when you compile
10255 with the @option{-g} flag. @xref{Compilation}.
10256
10257 A program may define a macro at one point, remove that definition later,
10258 and then provide a different definition after that. Thus, at different
10259 points in the program, a macro may have different definitions, or have
10260 no definition at all. If there is a current stack frame, @value{GDBN}
10261 uses the macros in scope at that frame's source code line. Otherwise,
10262 @value{GDBN} uses the macros in scope at the current listing location;
10263 see @ref{List}.
10264
10265 Whenever @value{GDBN} evaluates an expression, it always expands any
10266 macro invocations present in the expression. @value{GDBN} also provides
10267 the following commands for working with macros explicitly.
10268
10269 @table @code
10270
10271 @kindex macro expand
10272 @cindex macro expansion, showing the results of preprocessor
10273 @cindex preprocessor macro expansion, showing the results of
10274 @cindex expanding preprocessor macros
10275 @item macro expand @var{expression}
10276 @itemx macro exp @var{expression}
10277 Show the results of expanding all preprocessor macro invocations in
10278 @var{expression}. Since @value{GDBN} simply expands macros, but does
10279 not parse the result, @var{expression} need not be a valid expression;
10280 it can be any string of tokens.
10281
10282 @kindex macro exp1
10283 @item macro expand-once @var{expression}
10284 @itemx macro exp1 @var{expression}
10285 @cindex expand macro once
10286 @i{(This command is not yet implemented.)} Show the results of
10287 expanding those preprocessor macro invocations that appear explicitly in
10288 @var{expression}. Macro invocations appearing in that expansion are
10289 left unchanged. This command allows you to see the effect of a
10290 particular macro more clearly, without being confused by further
10291 expansions. Since @value{GDBN} simply expands macros, but does not
10292 parse the result, @var{expression} need not be a valid expression; it
10293 can be any string of tokens.
10294
10295 @kindex info macro
10296 @cindex macro definition, showing
10297 @cindex definition of a macro, showing
10298 @cindex macros, from debug info
10299 @item info macro [-a|-all] [--] @var{macro}
10300 Show the current definition or all definitions of the named @var{macro},
10301 and describe the source location or compiler command-line where that
10302 definition was established. The optional double dash is to signify the end of
10303 argument processing and the beginning of @var{macro} for non C-like macros where
10304 the macro may begin with a hyphen.
10305
10306 @kindex info macros
10307 @item info macros @var{linespec}
10308 Show all macro definitions that are in effect at the location specified
10309 by @var{linespec}, and describe the source location or compiler
10310 command-line where those definitions were established.
10311
10312 @kindex macro define
10313 @cindex user-defined macros
10314 @cindex defining macros interactively
10315 @cindex macros, user-defined
10316 @item macro define @var{macro} @var{replacement-list}
10317 @itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
10318 Introduce a definition for a preprocessor macro named @var{macro},
10319 invocations of which are replaced by the tokens given in
10320 @var{replacement-list}. The first form of this command defines an
10321 ``object-like'' macro, which takes no arguments; the second form
10322 defines a ``function-like'' macro, which takes the arguments given in
10323 @var{arglist}.
10324
10325 A definition introduced by this command is in scope in every
10326 expression evaluated in @value{GDBN}, until it is removed with the
10327 @code{macro undef} command, described below. The definition overrides
10328 all definitions for @var{macro} present in the program being debugged,
10329 as well as any previous user-supplied definition.
10330
10331 @kindex macro undef
10332 @item macro undef @var{macro}
10333 Remove any user-supplied definition for the macro named @var{macro}.
10334 This command only affects definitions provided with the @code{macro
10335 define} command, described above; it cannot remove definitions present
10336 in the program being debugged.
10337
10338 @kindex macro list
10339 @item macro list
10340 List all the macros defined using the @code{macro define} command.
10341 @end table
10342
10343 @cindex macros, example of debugging with
10344 Here is a transcript showing the above commands in action. First, we
10345 show our source files:
10346
10347 @smallexample
10348 $ cat sample.c
10349 #include <stdio.h>
10350 #include "sample.h"
10351
10352 #define M 42
10353 #define ADD(x) (M + x)
10354
10355 main ()
10356 @{
10357 #define N 28
10358 printf ("Hello, world!\n");
10359 #undef N
10360 printf ("We're so creative.\n");
10361 #define N 1729
10362 printf ("Goodbye, world!\n");
10363 @}
10364 $ cat sample.h
10365 #define Q <
10366 $
10367 @end smallexample
10368
10369 Now, we compile the program using the @sc{gnu} C compiler,
10370 @value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the
10371 minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3}
10372 and @option{-gdwarf-4}; we recommend always choosing the most recent
10373 version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler
10374 includes information about preprocessor macros in the debugging
10375 information.
10376
10377 @smallexample
10378 $ gcc -gdwarf-2 -g3 sample.c -o sample
10379 $
10380 @end smallexample
10381
10382 Now, we start @value{GDBN} on our sample program:
10383
10384 @smallexample
10385 $ gdb -nw sample
10386 GNU gdb 2002-05-06-cvs
10387 Copyright 2002 Free Software Foundation, Inc.
10388 GDB is free software, @dots{}
10389 (@value{GDBP})
10390 @end smallexample
10391
10392 We can expand macros and examine their definitions, even when the
10393 program is not running. @value{GDBN} uses the current listing position
10394 to decide which macro definitions are in scope:
10395
10396 @smallexample
10397 (@value{GDBP}) list main
10398 3
10399 4 #define M 42
10400 5 #define ADD(x) (M + x)
10401 6
10402 7 main ()
10403 8 @{
10404 9 #define N 28
10405 10 printf ("Hello, world!\n");
10406 11 #undef N
10407 12 printf ("We're so creative.\n");
10408 (@value{GDBP}) info macro ADD
10409 Defined at /home/jimb/gdb/macros/play/sample.c:5
10410 #define ADD(x) (M + x)
10411 (@value{GDBP}) info macro Q
10412 Defined at /home/jimb/gdb/macros/play/sample.h:1
10413 included at /home/jimb/gdb/macros/play/sample.c:2
10414 #define Q <
10415 (@value{GDBP}) macro expand ADD(1)
10416 expands to: (42 + 1)
10417 (@value{GDBP}) macro expand-once ADD(1)
10418 expands to: once (M + 1)
10419 (@value{GDBP})
10420 @end smallexample
10421
10422 In the example above, note that @code{macro expand-once} expands only
10423 the macro invocation explicit in the original text --- the invocation of
10424 @code{ADD} --- but does not expand the invocation of the macro @code{M},
10425 which was introduced by @code{ADD}.
10426
10427 Once the program is running, @value{GDBN} uses the macro definitions in
10428 force at the source line of the current stack frame:
10429
10430 @smallexample
10431 (@value{GDBP}) break main
10432 Breakpoint 1 at 0x8048370: file sample.c, line 10.
10433 (@value{GDBP}) run
10434 Starting program: /home/jimb/gdb/macros/play/sample
10435
10436 Breakpoint 1, main () at sample.c:10
10437 10 printf ("Hello, world!\n");
10438 (@value{GDBP})
10439 @end smallexample
10440
10441 At line 10, the definition of the macro @code{N} at line 9 is in force:
10442
10443 @smallexample
10444 (@value{GDBP}) info macro N
10445 Defined at /home/jimb/gdb/macros/play/sample.c:9
10446 #define N 28
10447 (@value{GDBP}) macro expand N Q M
10448 expands to: 28 < 42
10449 (@value{GDBP}) print N Q M
10450 $1 = 1
10451 (@value{GDBP})
10452 @end smallexample
10453
10454 As we step over directives that remove @code{N}'s definition, and then
10455 give it a new definition, @value{GDBN} finds the definition (or lack
10456 thereof) in force at each point:
10457
10458 @smallexample
10459 (@value{GDBP}) next
10460 Hello, world!
10461 12 printf ("We're so creative.\n");
10462 (@value{GDBP}) info macro N
10463 The symbol `N' has no definition as a C/C++ preprocessor macro
10464 at /home/jimb/gdb/macros/play/sample.c:12
10465 (@value{GDBP}) next
10466 We're so creative.
10467 14 printf ("Goodbye, world!\n");
10468 (@value{GDBP}) info macro N
10469 Defined at /home/jimb/gdb/macros/play/sample.c:13
10470 #define N 1729
10471 (@value{GDBP}) macro expand N Q M
10472 expands to: 1729 < 42
10473 (@value{GDBP}) print N Q M
10474 $2 = 0
10475 (@value{GDBP})
10476 @end smallexample
10477
10478 In addition to source files, macros can be defined on the compilation command
10479 line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
10480 such a way, @value{GDBN} displays the location of their definition as line zero
10481 of the source file submitted to the compiler.
10482
10483 @smallexample
10484 (@value{GDBP}) info macro __STDC__
10485 Defined at /home/jimb/gdb/macros/play/sample.c:0
10486 -D__STDC__=1
10487 (@value{GDBP})
10488 @end smallexample
10489
10490
10491 @node Tracepoints
10492 @chapter Tracepoints
10493 @c This chapter is based on the documentation written by Michael
10494 @c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
10495
10496 @cindex tracepoints
10497 In some applications, it is not feasible for the debugger to interrupt
10498 the program's execution long enough for the developer to learn
10499 anything helpful about its behavior. If the program's correctness
10500 depends on its real-time behavior, delays introduced by a debugger
10501 might cause the program to change its behavior drastically, or perhaps
10502 fail, even when the code itself is correct. It is useful to be able
10503 to observe the program's behavior without interrupting it.
10504
10505 Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
10506 specify locations in the program, called @dfn{tracepoints}, and
10507 arbitrary expressions to evaluate when those tracepoints are reached.
10508 Later, using the @code{tfind} command, you can examine the values
10509 those expressions had when the program hit the tracepoints. The
10510 expressions may also denote objects in memory---structures or arrays,
10511 for example---whose values @value{GDBN} should record; while visiting
10512 a particular tracepoint, you may inspect those objects as if they were
10513 in memory at that moment. However, because @value{GDBN} records these
10514 values without interacting with you, it can do so quickly and
10515 unobtrusively, hopefully not disturbing the program's behavior.
10516
10517 The tracepoint facility is currently available only for remote
10518 targets. @xref{Targets}. In addition, your remote target must know
10519 how to collect trace data. This functionality is implemented in the
10520 remote stub; however, none of the stubs distributed with @value{GDBN}
10521 support tracepoints as of this writing. The format of the remote
10522 packets used to implement tracepoints are described in @ref{Tracepoint
10523 Packets}.
10524
10525 It is also possible to get trace data from a file, in a manner reminiscent
10526 of corefiles; you specify the filename, and use @code{tfind} to search
10527 through the file. @xref{Trace Files}, for more details.
10528
10529 This chapter describes the tracepoint commands and features.
10530
10531 @menu
10532 * Set Tracepoints::
10533 * Analyze Collected Data::
10534 * Tracepoint Variables::
10535 * Trace Files::
10536 @end menu
10537
10538 @node Set Tracepoints
10539 @section Commands to Set Tracepoints
10540
10541 Before running such a @dfn{trace experiment}, an arbitrary number of
10542 tracepoints can be set. A tracepoint is actually a special type of
10543 breakpoint (@pxref{Set Breaks}), so you can manipulate it using
10544 standard breakpoint commands. For instance, as with breakpoints,
10545 tracepoint numbers are successive integers starting from one, and many
10546 of the commands associated with tracepoints take the tracepoint number
10547 as their argument, to identify which tracepoint to work on.
10548
10549 For each tracepoint, you can specify, in advance, some arbitrary set
10550 of data that you want the target to collect in the trace buffer when
10551 it hits that tracepoint. The collected data can include registers,
10552 local variables, or global data. Later, you can use @value{GDBN}
10553 commands to examine the values these data had at the time the
10554 tracepoint was hit.
10555
10556 Tracepoints do not support every breakpoint feature. Ignore counts on
10557 tracepoints have no effect, and tracepoints cannot run @value{GDBN}
10558 commands when they are hit. Tracepoints may not be thread-specific
10559 either.
10560
10561 @cindex fast tracepoints
10562 Some targets may support @dfn{fast tracepoints}, which are inserted in
10563 a different way (such as with a jump instead of a trap), that is
10564 faster but possibly restricted in where they may be installed.
10565
10566 @cindex static tracepoints
10567 @cindex markers, static tracepoints
10568 @cindex probing markers, static tracepoints
10569 Regular and fast tracepoints are dynamic tracing facilities, meaning
10570 that they can be used to insert tracepoints at (almost) any location
10571 in the target. Some targets may also support controlling @dfn{static
10572 tracepoints} from @value{GDBN}. With static tracing, a set of
10573 instrumentation points, also known as @dfn{markers}, are embedded in
10574 the target program, and can be activated or deactivated by name or
10575 address. These are usually placed at locations which facilitate
10576 investigating what the target is actually doing. @value{GDBN}'s
10577 support for static tracing includes being able to list instrumentation
10578 points, and attach them with @value{GDBN} defined high level
10579 tracepoints that expose the whole range of convenience of
10580 @value{GDBN}'s tracepoints support. Namely, support for collecting
10581 registers values and values of global or local (to the instrumentation
10582 point) variables; tracepoint conditions and trace state variables.
10583 The act of installing a @value{GDBN} static tracepoint on an
10584 instrumentation point, or marker, is referred to as @dfn{probing} a
10585 static tracepoint marker.
10586
10587 @code{gdbserver} supports tracepoints on some target systems.
10588 @xref{Server,,Tracepoints support in @code{gdbserver}}.
10589
10590 This section describes commands to set tracepoints and associated
10591 conditions and actions.
10592
10593 @menu
10594 * Create and Delete Tracepoints::
10595 * Enable and Disable Tracepoints::
10596 * Tracepoint Passcounts::
10597 * Tracepoint Conditions::
10598 * Trace State Variables::
10599 * Tracepoint Actions::
10600 * Listing Tracepoints::
10601 * Listing Static Tracepoint Markers::
10602 * Starting and Stopping Trace Experiments::
10603 * Tracepoint Restrictions::
10604 @end menu
10605
10606 @node Create and Delete Tracepoints
10607 @subsection Create and Delete Tracepoints
10608
10609 @table @code
10610 @cindex set tracepoint
10611 @kindex trace
10612 @item trace @var{location}
10613 The @code{trace} command is very similar to the @code{break} command.
10614 Its argument @var{location} can be a source line, a function name, or
10615 an address in the target program. @xref{Specify Location}. The
10616 @code{trace} command defines a tracepoint, which is a point in the
10617 target program where the debugger will briefly stop, collect some
10618 data, and then allow the program to continue. Setting a tracepoint or
10619 changing its actions takes effect immediately if the remote stub
10620 supports the @samp{InstallInTrace} feature (@pxref{install tracepoint
10621 in tracing}).
10622 If remote stub doesn't support the @samp{InstallInTrace} feature, all
10623 these changes don't take effect until the next @code{tstart}
10624 command, and once a trace experiment is running, further changes will
10625 not have any effect until the next trace experiment starts. In addition,
10626 @value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose
10627 address is not yet resolved. (This is similar to pending breakpoints.)
10628 Pending tracepoints are not downloaded to the target and not installed
10629 until they are resolved. The resolution of pending tracepoints requires
10630 @value{GDBN} support---when debugging with the remote target, and
10631 @value{GDBN} disconnects from the remote stub (@pxref{disconnected
10632 tracing}), pending tracepoints can not be resolved (and downloaded to
10633 the remote stub) while @value{GDBN} is disconnected.
10634
10635 Here are some examples of using the @code{trace} command:
10636
10637 @smallexample
10638 (@value{GDBP}) @b{trace foo.c:121} // a source file and line number
10639
10640 (@value{GDBP}) @b{trace +2} // 2 lines forward
10641
10642 (@value{GDBP}) @b{trace my_function} // first source line of function
10643
10644 (@value{GDBP}) @b{trace *my_function} // EXACT start address of function
10645
10646 (@value{GDBP}) @b{trace *0x2117c4} // an address
10647 @end smallexample
10648
10649 @noindent
10650 You can abbreviate @code{trace} as @code{tr}.
10651
10652 @item trace @var{location} if @var{cond}
10653 Set a tracepoint with condition @var{cond}; evaluate the expression
10654 @var{cond} each time the tracepoint is reached, and collect data only
10655 if the value is nonzero---that is, if @var{cond} evaluates as true.
10656 @xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
10657 information on tracepoint conditions.
10658
10659 @item ftrace @var{location} [ if @var{cond} ]
10660 @cindex set fast tracepoint
10661 @cindex fast tracepoints, setting
10662 @kindex ftrace
10663 The @code{ftrace} command sets a fast tracepoint. For targets that
10664 support them, fast tracepoints will use a more efficient but possibly
10665 less general technique to trigger data collection, such as a jump
10666 instruction instead of a trap, or some sort of hardware support. It
10667 may not be possible to create a fast tracepoint at the desired
10668 location, in which case the command will exit with an explanatory
10669 message.
10670
10671 @value{GDBN} handles arguments to @code{ftrace} exactly as for
10672 @code{trace}.
10673
10674 On 32-bit x86-architecture systems, fast tracepoints normally need to
10675 be placed at an instruction that is 5 bytes or longer, but can be
10676 placed at 4-byte instructions if the low 64K of memory of the target
10677 program is available to install trampolines. Some Unix-type systems,
10678 such as @sc{gnu}/Linux, exclude low addresses from the program's
10679 address space; but for instance with the Linux kernel it is possible
10680 to let @value{GDBN} use this area by doing a @command{sysctl} command
10681 to set the @code{mmap_min_addr} kernel parameter, as in
10682
10683 @example
10684 sudo sysctl -w vm.mmap_min_addr=32768
10685 @end example
10686
10687 @noindent
10688 which sets the low address to 32K, which leaves plenty of room for
10689 trampolines. The minimum address should be set to a page boundary.
10690
10691 @item strace @var{location} [ if @var{cond} ]
10692 @cindex set static tracepoint
10693 @cindex static tracepoints, setting
10694 @cindex probe static tracepoint marker
10695 @kindex strace
10696 The @code{strace} command sets a static tracepoint. For targets that
10697 support it, setting a static tracepoint probes a static
10698 instrumentation point, or marker, found at @var{location}. It may not
10699 be possible to set a static tracepoint at the desired location, in
10700 which case the command will exit with an explanatory message.
10701
10702 @value{GDBN} handles arguments to @code{strace} exactly as for
10703 @code{trace}, with the addition that the user can also specify
10704 @code{-m @var{marker}} as @var{location}. This probes the marker
10705 identified by the @var{marker} string identifier. This identifier
10706 depends on the static tracepoint backend library your program is
10707 using. You can find all the marker identifiers in the @samp{ID} field
10708 of the @code{info static-tracepoint-markers} command output.
10709 @xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint
10710 Markers}. For example, in the following small program using the UST
10711 tracing engine:
10712
10713 @smallexample
10714 main ()
10715 @{
10716 trace_mark(ust, bar33, "str %s", "FOOBAZ");
10717 @}
10718 @end smallexample
10719
10720 @noindent
10721 the marker id is composed of joining the first two arguments to the
10722 @code{trace_mark} call with a slash, which translates to:
10723
10724 @smallexample
10725 (@value{GDBP}) info static-tracepoint-markers
10726 Cnt Enb ID Address What
10727 1 n ust/bar33 0x0000000000400ddc in main at stexample.c:22
10728 Data: "str %s"
10729 [etc...]
10730 @end smallexample
10731
10732 @noindent
10733 so you may probe the marker above with:
10734
10735 @smallexample
10736 (@value{GDBP}) strace -m ust/bar33
10737 @end smallexample
10738
10739 Static tracepoints accept an extra collect action --- @code{collect
10740 $_sdata}. This collects arbitrary user data passed in the probe point
10741 call to the tracing library. In the UST example above, you'll see
10742 that the third argument to @code{trace_mark} is a printf-like format
10743 string. The user data is then the result of running that formating
10744 string against the following arguments. Note that @code{info
10745 static-tracepoint-markers} command output lists that format string in
10746 the @samp{Data:} field.
10747
10748 You can inspect this data when analyzing the trace buffer, by printing
10749 the $_sdata variable like any other variable available to
10750 @value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}.
10751
10752 @vindex $tpnum
10753 @cindex last tracepoint number
10754 @cindex recent tracepoint number
10755 @cindex tracepoint number
10756 The convenience variable @code{$tpnum} records the tracepoint number
10757 of the most recently set tracepoint.
10758
10759 @kindex delete tracepoint
10760 @cindex tracepoint deletion
10761 @item delete tracepoint @r{[}@var{num}@r{]}
10762 Permanently delete one or more tracepoints. With no argument, the
10763 default is to delete all tracepoints. Note that the regular
10764 @code{delete} command can remove tracepoints also.
10765
10766 Examples:
10767
10768 @smallexample
10769 (@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
10770
10771 (@value{GDBP}) @b{delete trace} // remove all tracepoints
10772 @end smallexample
10773
10774 @noindent
10775 You can abbreviate this command as @code{del tr}.
10776 @end table
10777
10778 @node Enable and Disable Tracepoints
10779 @subsection Enable and Disable Tracepoints
10780
10781 These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
10782
10783 @table @code
10784 @kindex disable tracepoint
10785 @item disable tracepoint @r{[}@var{num}@r{]}
10786 Disable tracepoint @var{num}, or all tracepoints if no argument
10787 @var{num} is given. A disabled tracepoint will have no effect during
10788 a trace experiment, but it is not forgotten. You can re-enable
10789 a disabled tracepoint using the @code{enable tracepoint} command.
10790 If the command is issued during a trace experiment and the debug target
10791 has support for disabling tracepoints during a trace experiment, then the
10792 change will be effective immediately. Otherwise, it will be applied to the
10793 next trace experiment.
10794
10795 @kindex enable tracepoint
10796 @item enable tracepoint @r{[}@var{num}@r{]}
10797 Enable tracepoint @var{num}, or all tracepoints. If this command is
10798 issued during a trace experiment and the debug target supports enabling
10799 tracepoints during a trace experiment, then the enabled tracepoints will
10800 become effective immediately. Otherwise, they will become effective the
10801 next time a trace experiment is run.
10802 @end table
10803
10804 @node Tracepoint Passcounts
10805 @subsection Tracepoint Passcounts
10806
10807 @table @code
10808 @kindex passcount
10809 @cindex tracepoint pass count
10810 @item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
10811 Set the @dfn{passcount} of a tracepoint. The passcount is a way to
10812 automatically stop a trace experiment. If a tracepoint's passcount is
10813 @var{n}, then the trace experiment will be automatically stopped on
10814 the @var{n}'th time that tracepoint is hit. If the tracepoint number
10815 @var{num} is not specified, the @code{passcount} command sets the
10816 passcount of the most recently defined tracepoint. If no passcount is
10817 given, the trace experiment will run until stopped explicitly by the
10818 user.
10819
10820 Examples:
10821
10822 @smallexample
10823 (@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
10824 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
10825
10826 (@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
10827 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
10828 (@value{GDBP}) @b{trace foo}
10829 (@value{GDBP}) @b{pass 3}
10830 (@value{GDBP}) @b{trace bar}
10831 (@value{GDBP}) @b{pass 2}
10832 (@value{GDBP}) @b{trace baz}
10833 (@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
10834 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
10835 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
10836 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
10837 @end smallexample
10838 @end table
10839
10840 @node Tracepoint Conditions
10841 @subsection Tracepoint Conditions
10842 @cindex conditional tracepoints
10843 @cindex tracepoint conditions
10844
10845 The simplest sort of tracepoint collects data every time your program
10846 reaches a specified place. You can also specify a @dfn{condition} for
10847 a tracepoint. A condition is just a Boolean expression in your
10848 programming language (@pxref{Expressions, ,Expressions}). A
10849 tracepoint with a condition evaluates the expression each time your
10850 program reaches it, and data collection happens only if the condition
10851 is true.
10852
10853 Tracepoint conditions can be specified when a tracepoint is set, by
10854 using @samp{if} in the arguments to the @code{trace} command.
10855 @xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
10856 also be set or changed at any time with the @code{condition} command,
10857 just as with breakpoints.
10858
10859 Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
10860 the conditional expression itself. Instead, @value{GDBN} encodes the
10861 expression into an agent expression (@pxref{Agent Expressions})
10862 suitable for execution on the target, independently of @value{GDBN}.
10863 Global variables become raw memory locations, locals become stack
10864 accesses, and so forth.
10865
10866 For instance, suppose you have a function that is usually called
10867 frequently, but should not be called after an error has occurred. You
10868 could use the following tracepoint command to collect data about calls
10869 of that function that happen while the error code is propagating
10870 through the program; an unconditional tracepoint could end up
10871 collecting thousands of useless trace frames that you would have to
10872 search through.
10873
10874 @smallexample
10875 (@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
10876 @end smallexample
10877
10878 @node Trace State Variables
10879 @subsection Trace State Variables
10880 @cindex trace state variables
10881
10882 A @dfn{trace state variable} is a special type of variable that is
10883 created and managed by target-side code. The syntax is the same as
10884 that for GDB's convenience variables (a string prefixed with ``$''),
10885 but they are stored on the target. They must be created explicitly,
10886 using a @code{tvariable} command. They are always 64-bit signed
10887 integers.
10888
10889 Trace state variables are remembered by @value{GDBN}, and downloaded
10890 to the target along with tracepoint information when the trace
10891 experiment starts. There are no intrinsic limits on the number of
10892 trace state variables, beyond memory limitations of the target.
10893
10894 @cindex convenience variables, and trace state variables
10895 Although trace state variables are managed by the target, you can use
10896 them in print commands and expressions as if they were convenience
10897 variables; @value{GDBN} will get the current value from the target
10898 while the trace experiment is running. Trace state variables share
10899 the same namespace as other ``$'' variables, which means that you
10900 cannot have trace state variables with names like @code{$23} or
10901 @code{$pc}, nor can you have a trace state variable and a convenience
10902 variable with the same name.
10903
10904 @table @code
10905
10906 @item tvariable $@var{name} [ = @var{expression} ]
10907 @kindex tvariable
10908 The @code{tvariable} command creates a new trace state variable named
10909 @code{$@var{name}}, and optionally gives it an initial value of
10910 @var{expression}. @var{expression} is evaluated when this command is
10911 entered; the result will be converted to an integer if possible,
10912 otherwise @value{GDBN} will report an error. A subsequent
10913 @code{tvariable} command specifying the same name does not create a
10914 variable, but instead assigns the supplied initial value to the
10915 existing variable of that name, overwriting any previous initial
10916 value. The default initial value is 0.
10917
10918 @item info tvariables
10919 @kindex info tvariables
10920 List all the trace state variables along with their initial values.
10921 Their current values may also be displayed, if the trace experiment is
10922 currently running.
10923
10924 @item delete tvariable @r{[} $@var{name} @dots{} @r{]}
10925 @kindex delete tvariable
10926 Delete the given trace state variables, or all of them if no arguments
10927 are specified.
10928
10929 @end table
10930
10931 @node Tracepoint Actions
10932 @subsection Tracepoint Action Lists
10933
10934 @table @code
10935 @kindex actions
10936 @cindex tracepoint actions
10937 @item actions @r{[}@var{num}@r{]}
10938 This command will prompt for a list of actions to be taken when the
10939 tracepoint is hit. If the tracepoint number @var{num} is not
10940 specified, this command sets the actions for the one that was most
10941 recently defined (so that you can define a tracepoint and then say
10942 @code{actions} without bothering about its number). You specify the
10943 actions themselves on the following lines, one action at a time, and
10944 terminate the actions list with a line containing just @code{end}. So
10945 far, the only defined actions are @code{collect}, @code{teval}, and
10946 @code{while-stepping}.
10947
10948 @code{actions} is actually equivalent to @code{commands} (@pxref{Break
10949 Commands, ,Breakpoint Command Lists}), except that only the defined
10950 actions are allowed; any other @value{GDBN} command is rejected.
10951
10952 @cindex remove actions from a tracepoint
10953 To remove all actions from a tracepoint, type @samp{actions @var{num}}
10954 and follow it immediately with @samp{end}.
10955
10956 @smallexample
10957 (@value{GDBP}) @b{collect @var{data}} // collect some data
10958
10959 (@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
10960
10961 (@value{GDBP}) @b{end} // signals the end of actions.
10962 @end smallexample
10963
10964 In the following example, the action list begins with @code{collect}
10965 commands indicating the things to be collected when the tracepoint is
10966 hit. Then, in order to single-step and collect additional data
10967 following the tracepoint, a @code{while-stepping} command is used,
10968 followed by the list of things to be collected after each step in a
10969 sequence of single steps. The @code{while-stepping} command is
10970 terminated by its own separate @code{end} command. Lastly, the action
10971 list is terminated by an @code{end} command.
10972
10973 @smallexample
10974 (@value{GDBP}) @b{trace foo}
10975 (@value{GDBP}) @b{actions}
10976 Enter actions for tracepoint 1, one per line:
10977 > collect bar,baz
10978 > collect $regs
10979 > while-stepping 12
10980 > collect $pc, arr[i]
10981 > end
10982 end
10983 @end smallexample
10984
10985 @kindex collect @r{(tracepoints)}
10986 @item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{}
10987 Collect values of the given expressions when the tracepoint is hit.
10988 This command accepts a comma-separated list of any valid expressions.
10989 In addition to global, static, or local variables, the following
10990 special arguments are supported:
10991
10992 @table @code
10993 @item $regs
10994 Collect all registers.
10995
10996 @item $args
10997 Collect all function arguments.
10998
10999 @item $locals
11000 Collect all local variables.
11001
11002 @item $_ret
11003 Collect the return address. This is helpful if you want to see more
11004 of a backtrace.
11005
11006 @item $_sdata
11007 @vindex $_sdata@r{, collect}
11008 Collect static tracepoint marker specific data. Only available for
11009 static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action
11010 Lists}. On the UST static tracepoints library backend, an
11011 instrumentation point resembles a @code{printf} function call. The
11012 tracing library is able to collect user specified data formatted to a
11013 character string using the format provided by the programmer that
11014 instrumented the program. Other backends have similar mechanisms.
11015 Here's an example of a UST marker call:
11016
11017 @smallexample
11018 const char master_name[] = "$your_name";
11019 trace_mark(channel1, marker1, "hello %s", master_name)
11020 @end smallexample
11021
11022 In this case, collecting @code{$_sdata} collects the string
11023 @samp{hello $yourname}. When analyzing the trace buffer, you can
11024 inspect @samp{$_sdata} like any other variable available to
11025 @value{GDBN}.
11026 @end table
11027
11028 You can give several consecutive @code{collect} commands, each one
11029 with a single argument, or one @code{collect} command with several
11030 arguments separated by commas; the effect is the same.
11031
11032 The optional @var{mods} changes the usual handling of the arguments.
11033 @code{s} requests that pointers to chars be handled as strings, in
11034 particular collecting the contents of the memory being pointed at, up
11035 to the first zero. The upper bound is by default the value of the
11036 @code{print elements} variable; if @code{s} is followed by a decimal
11037 number, that is the upper bound instead. So for instance
11038 @samp{collect/s25 mystr} collects as many as 25 characters at
11039 @samp{mystr}.
11040
11041 The command @code{info scope} (@pxref{Symbols, info scope}) is
11042 particularly useful for figuring out what data to collect.
11043
11044 @kindex teval @r{(tracepoints)}
11045 @item teval @var{expr1}, @var{expr2}, @dots{}
11046 Evaluate the given expressions when the tracepoint is hit. This
11047 command accepts a comma-separated list of expressions. The results
11048 are discarded, so this is mainly useful for assigning values to trace
11049 state variables (@pxref{Trace State Variables}) without adding those
11050 values to the trace buffer, as would be the case if the @code{collect}
11051 action were used.
11052
11053 @kindex while-stepping @r{(tracepoints)}
11054 @item while-stepping @var{n}
11055 Perform @var{n} single-step instruction traces after the tracepoint,
11056 collecting new data after each step. The @code{while-stepping}
11057 command is followed by the list of what to collect while stepping
11058 (followed by its own @code{end} command):
11059
11060 @smallexample
11061 > while-stepping 12
11062 > collect $regs, myglobal
11063 > end
11064 >
11065 @end smallexample
11066
11067 @noindent
11068 Note that @code{$pc} is not automatically collected by
11069 @code{while-stepping}; you need to explicitly collect that register if
11070 you need it. You may abbreviate @code{while-stepping} as @code{ws} or
11071 @code{stepping}.
11072
11073 @item set default-collect @var{expr1}, @var{expr2}, @dots{}
11074 @kindex set default-collect
11075 @cindex default collection action
11076 This variable is a list of expressions to collect at each tracepoint
11077 hit. It is effectively an additional @code{collect} action prepended
11078 to every tracepoint action list. The expressions are parsed
11079 individually for each tracepoint, so for instance a variable named
11080 @code{xyz} may be interpreted as a global for one tracepoint, and a
11081 local for another, as appropriate to the tracepoint's location.
11082
11083 @item show default-collect
11084 @kindex show default-collect
11085 Show the list of expressions that are collected by default at each
11086 tracepoint hit.
11087
11088 @end table
11089
11090 @node Listing Tracepoints
11091 @subsection Listing Tracepoints
11092
11093 @table @code
11094 @kindex info tracepoints @r{[}@var{n}@dots{}@r{]}
11095 @kindex info tp @r{[}@var{n}@dots{}@r{]}
11096 @cindex information about tracepoints
11097 @item info tracepoints @r{[}@var{num}@dots{}@r{]}
11098 Display information about the tracepoint @var{num}. If you don't
11099 specify a tracepoint number, displays information about all the
11100 tracepoints defined so far. The format is similar to that used for
11101 @code{info breakpoints}; in fact, @code{info tracepoints} is the same
11102 command, simply restricting itself to tracepoints.
11103
11104 A tracepoint's listing may include additional information specific to
11105 tracing:
11106
11107 @itemize @bullet
11108 @item
11109 its passcount as given by the @code{passcount @var{n}} command
11110 @end itemize
11111
11112 @smallexample
11113 (@value{GDBP}) @b{info trace}
11114 Num Type Disp Enb Address What
11115 1 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
11116 while-stepping 20
11117 collect globfoo, $regs
11118 end
11119 collect globfoo2
11120 end
11121 pass count 1200
11122 (@value{GDBP})
11123 @end smallexample
11124
11125 @noindent
11126 This command can be abbreviated @code{info tp}.
11127 @end table
11128
11129 @node Listing Static Tracepoint Markers
11130 @subsection Listing Static Tracepoint Markers
11131
11132 @table @code
11133 @kindex info static-tracepoint-markers
11134 @cindex information about static tracepoint markers
11135 @item info static-tracepoint-markers
11136 Display information about all static tracepoint markers defined in the
11137 program.
11138
11139 For each marker, the following columns are printed:
11140
11141 @table @emph
11142 @item Count
11143 An incrementing counter, output to help readability. This is not a
11144 stable identifier.
11145 @item ID
11146 The marker ID, as reported by the target.
11147 @item Enabled or Disabled
11148 Probed markers are tagged with @samp{y}. @samp{n} identifies marks
11149 that are not enabled.
11150 @item Address
11151 Where the marker is in your program, as a memory address.
11152 @item What
11153 Where the marker is in the source for your program, as a file and line
11154 number. If the debug information included in the program does not
11155 allow @value{GDBN} to locate the source of the marker, this column
11156 will be left blank.
11157 @end table
11158
11159 @noindent
11160 In addition, the following information may be printed for each marker:
11161
11162 @table @emph
11163 @item Data
11164 User data passed to the tracing library by the marker call. In the
11165 UST backend, this is the format string passed as argument to the
11166 marker call.
11167 @item Static tracepoints probing the marker
11168 The list of static tracepoints attached to the marker.
11169 @end table
11170
11171 @smallexample
11172 (@value{GDBP}) info static-tracepoint-markers
11173 Cnt ID Enb Address What
11174 1 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25
11175 Data: number1 %d number2 %d
11176 Probed by static tracepoints: #2
11177 2 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24
11178 Data: str %s
11179 (@value{GDBP})
11180 @end smallexample
11181 @end table
11182
11183 @node Starting and Stopping Trace Experiments
11184 @subsection Starting and Stopping Trace Experiments
11185
11186 @table @code
11187 @kindex tstart [ @var{notes} ]
11188 @cindex start a new trace experiment
11189 @cindex collected data discarded
11190 @item tstart
11191 This command starts the trace experiment, and begins collecting data.
11192 It has the side effect of discarding all the data collected in the
11193 trace buffer during the previous trace experiment. If any arguments
11194 are supplied, they are taken as a note and stored with the trace
11195 experiment's state. The notes may be arbitrary text, and are
11196 especially useful with disconnected tracing in a multi-user context;
11197 the notes can explain what the trace is doing, supply user contact
11198 information, and so forth.
11199
11200 @kindex tstop [ @var{notes} ]
11201 @cindex stop a running trace experiment
11202 @item tstop
11203 This command stops the trace experiment. If any arguments are
11204 supplied, they are recorded with the experiment as a note. This is
11205 useful if you are stopping a trace started by someone else, for
11206 instance if the trace is interfering with the system's behavior and
11207 needs to be stopped quickly.
11208
11209 @strong{Note}: a trace experiment and data collection may stop
11210 automatically if any tracepoint's passcount is reached
11211 (@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
11212
11213 @kindex tstatus
11214 @cindex status of trace data collection
11215 @cindex trace experiment, status of
11216 @item tstatus
11217 This command displays the status of the current trace data
11218 collection.
11219 @end table
11220
11221 Here is an example of the commands we described so far:
11222
11223 @smallexample
11224 (@value{GDBP}) @b{trace gdb_c_test}
11225 (@value{GDBP}) @b{actions}
11226 Enter actions for tracepoint #1, one per line.
11227 > collect $regs,$locals,$args
11228 > while-stepping 11
11229 > collect $regs
11230 > end
11231 > end
11232 (@value{GDBP}) @b{tstart}
11233 [time passes @dots{}]
11234 (@value{GDBP}) @b{tstop}
11235 @end smallexample
11236
11237 @anchor{disconnected tracing}
11238 @cindex disconnected tracing
11239 You can choose to continue running the trace experiment even if
11240 @value{GDBN} disconnects from the target, voluntarily or
11241 involuntarily. For commands such as @code{detach}, the debugger will
11242 ask what you want to do with the trace. But for unexpected
11243 terminations (@value{GDBN} crash, network outage), it would be
11244 unfortunate to lose hard-won trace data, so the variable
11245 @code{disconnected-tracing} lets you decide whether the trace should
11246 continue running without @value{GDBN}.
11247
11248 @table @code
11249 @item set disconnected-tracing on
11250 @itemx set disconnected-tracing off
11251 @kindex set disconnected-tracing
11252 Choose whether a tracing run should continue to run if @value{GDBN}
11253 has disconnected from the target. Note that @code{detach} or
11254 @code{quit} will ask you directly what to do about a running trace no
11255 matter what this variable's setting, so the variable is mainly useful
11256 for handling unexpected situations, such as loss of the network.
11257
11258 @item show disconnected-tracing
11259 @kindex show disconnected-tracing
11260 Show the current choice for disconnected tracing.
11261
11262 @end table
11263
11264 When you reconnect to the target, the trace experiment may or may not
11265 still be running; it might have filled the trace buffer in the
11266 meantime, or stopped for one of the other reasons. If it is running,
11267 it will continue after reconnection.
11268
11269 Upon reconnection, the target will upload information about the
11270 tracepoints in effect. @value{GDBN} will then compare that
11271 information to the set of tracepoints currently defined, and attempt
11272 to match them up, allowing for the possibility that the numbers may
11273 have changed due to creation and deletion in the meantime. If one of
11274 the target's tracepoints does not match any in @value{GDBN}, the
11275 debugger will create a new tracepoint, so that you have a number with
11276 which to specify that tracepoint. This matching-up process is
11277 necessarily heuristic, and it may result in useless tracepoints being
11278 created; you may simply delete them if they are of no use.
11279
11280 @cindex circular trace buffer
11281 If your target agent supports a @dfn{circular trace buffer}, then you
11282 can run a trace experiment indefinitely without filling the trace
11283 buffer; when space runs out, the agent deletes already-collected trace
11284 frames, oldest first, until there is enough room to continue
11285 collecting. This is especially useful if your tracepoints are being
11286 hit too often, and your trace gets terminated prematurely because the
11287 buffer is full. To ask for a circular trace buffer, simply set
11288 @samp{circular-trace-buffer} to on. You can set this at any time,
11289 including during tracing; if the agent can do it, it will change
11290 buffer handling on the fly, otherwise it will not take effect until
11291 the next run.
11292
11293 @table @code
11294 @item set circular-trace-buffer on
11295 @itemx set circular-trace-buffer off
11296 @kindex set circular-trace-buffer
11297 Choose whether a tracing run should use a linear or circular buffer
11298 for trace data. A linear buffer will not lose any trace data, but may
11299 fill up prematurely, while a circular buffer will discard old trace
11300 data, but it will have always room for the latest tracepoint hits.
11301
11302 @item show circular-trace-buffer
11303 @kindex show circular-trace-buffer
11304 Show the current choice for the trace buffer. Note that this may not
11305 match the agent's current buffer handling, nor is it guaranteed to
11306 match the setting that might have been in effect during a past run,
11307 for instance if you are looking at frames from a trace file.
11308
11309 @end table
11310
11311 @table @code
11312 @item set trace-user @var{text}
11313 @kindex set trace-user
11314
11315 @item show trace-user
11316 @kindex show trace-user
11317
11318 @item set trace-notes @var{text}
11319 @kindex set trace-notes
11320 Set the trace run's notes.
11321
11322 @item show trace-notes
11323 @kindex show trace-notes
11324 Show the trace run's notes.
11325
11326 @item set trace-stop-notes @var{text}
11327 @kindex set trace-stop-notes
11328 Set the trace run's stop notes. The handling of the note is as for
11329 @code{tstop} arguments; the set command is convenient way to fix a
11330 stop note that is mistaken or incomplete.
11331
11332 @item show trace-stop-notes
11333 @kindex show trace-stop-notes
11334 Show the trace run's stop notes.
11335
11336 @end table
11337
11338 @node Tracepoint Restrictions
11339 @subsection Tracepoint Restrictions
11340
11341 @cindex tracepoint restrictions
11342 There are a number of restrictions on the use of tracepoints. As
11343 described above, tracepoint data gathering occurs on the target
11344 without interaction from @value{GDBN}. Thus the full capabilities of
11345 the debugger are not available during data gathering, and then at data
11346 examination time, you will be limited by only having what was
11347 collected. The following items describe some common problems, but it
11348 is not exhaustive, and you may run into additional difficulties not
11349 mentioned here.
11350
11351 @itemize @bullet
11352
11353 @item
11354 Tracepoint expressions are intended to gather objects (lvalues). Thus
11355 the full flexibility of GDB's expression evaluator is not available.
11356 You cannot call functions, cast objects to aggregate types, access
11357 convenience variables or modify values (except by assignment to trace
11358 state variables). Some language features may implicitly call
11359 functions (for instance Objective-C fields with accessors), and therefore
11360 cannot be collected either.
11361
11362 @item
11363 Collection of local variables, either individually or in bulk with
11364 @code{$locals} or @code{$args}, during @code{while-stepping} may
11365 behave erratically. The stepping action may enter a new scope (for
11366 instance by stepping into a function), or the location of the variable
11367 may change (for instance it is loaded into a register). The
11368 tracepoint data recorded uses the location information for the
11369 variables that is correct for the tracepoint location. When the
11370 tracepoint is created, it is not possible, in general, to determine
11371 where the steps of a @code{while-stepping} sequence will advance the
11372 program---particularly if a conditional branch is stepped.
11373
11374 @item
11375 Collection of an incompletely-initialized or partially-destroyed object
11376 may result in something that @value{GDBN} cannot display, or displays
11377 in a misleading way.
11378
11379 @item
11380 When @value{GDBN} displays a pointer to character it automatically
11381 dereferences the pointer to also display characters of the string
11382 being pointed to. However, collecting the pointer during tracing does
11383 not automatically collect the string. You need to explicitly
11384 dereference the pointer and provide size information if you want to
11385 collect not only the pointer, but the memory pointed to. For example,
11386 @code{*ptr@@50} can be used to collect the 50 element array pointed to
11387 by @code{ptr}.
11388
11389 @item
11390 It is not possible to collect a complete stack backtrace at a
11391 tracepoint. Instead, you may collect the registers and a few hundred
11392 bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300}
11393 (adjust to use the name of the actual stack pointer register on your
11394 target architecture, and the amount of stack you wish to capture).
11395 Then the @code{backtrace} command will show a partial backtrace when
11396 using a trace frame. The number of stack frames that can be examined
11397 depends on the sizes of the frames in the collected stack. Note that
11398 if you ask for a block so large that it goes past the bottom of the
11399 stack, the target agent may report an error trying to read from an
11400 invalid address.
11401
11402 @item
11403 If you do not collect registers at a tracepoint, @value{GDBN} can
11404 infer that the value of @code{$pc} must be the same as the address of
11405 the tracepoint and use that when you are looking at a trace frame
11406 for that tracepoint. However, this cannot work if the tracepoint has
11407 multiple locations (for instance if it was set in a function that was
11408 inlined), or if it has a @code{while-stepping} loop. In those cases
11409 @value{GDBN} will warn you that it can't infer @code{$pc}, and default
11410 it to zero.
11411
11412 @end itemize
11413
11414 @node Analyze Collected Data
11415 @section Using the Collected Data
11416
11417 After the tracepoint experiment ends, you use @value{GDBN} commands
11418 for examining the trace data. The basic idea is that each tracepoint
11419 collects a trace @dfn{snapshot} every time it is hit and another
11420 snapshot every time it single-steps. All these snapshots are
11421 consecutively numbered from zero and go into a buffer, and you can
11422 examine them later. The way you examine them is to @dfn{focus} on a
11423 specific trace snapshot. When the remote stub is focused on a trace
11424 snapshot, it will respond to all @value{GDBN} requests for memory and
11425 registers by reading from the buffer which belongs to that snapshot,
11426 rather than from @emph{real} memory or registers of the program being
11427 debugged. This means that @strong{all} @value{GDBN} commands
11428 (@code{print}, @code{info registers}, @code{backtrace}, etc.) will
11429 behave as if we were currently debugging the program state as it was
11430 when the tracepoint occurred. Any requests for data that are not in
11431 the buffer will fail.
11432
11433 @menu
11434 * tfind:: How to select a trace snapshot
11435 * tdump:: How to display all data for a snapshot
11436 * save tracepoints:: How to save tracepoints for a future run
11437 @end menu
11438
11439 @node tfind
11440 @subsection @code{tfind @var{n}}
11441
11442 @kindex tfind
11443 @cindex select trace snapshot
11444 @cindex find trace snapshot
11445 The basic command for selecting a trace snapshot from the buffer is
11446 @code{tfind @var{n}}, which finds trace snapshot number @var{n},
11447 counting from zero. If no argument @var{n} is given, the next
11448 snapshot is selected.
11449
11450 Here are the various forms of using the @code{tfind} command.
11451
11452 @table @code
11453 @item tfind start
11454 Find the first snapshot in the buffer. This is a synonym for
11455 @code{tfind 0} (since 0 is the number of the first snapshot).
11456
11457 @item tfind none
11458 Stop debugging trace snapshots, resume @emph{live} debugging.
11459
11460 @item tfind end
11461 Same as @samp{tfind none}.
11462
11463 @item tfind
11464 No argument means find the next trace snapshot.
11465
11466 @item tfind -
11467 Find the previous trace snapshot before the current one. This permits
11468 retracing earlier steps.
11469
11470 @item tfind tracepoint @var{num}
11471 Find the next snapshot associated with tracepoint @var{num}. Search
11472 proceeds forward from the last examined trace snapshot. If no
11473 argument @var{num} is given, it means find the next snapshot collected
11474 for the same tracepoint as the current snapshot.
11475
11476 @item tfind pc @var{addr}
11477 Find the next snapshot associated with the value @var{addr} of the
11478 program counter. Search proceeds forward from the last examined trace
11479 snapshot. If no argument @var{addr} is given, it means find the next
11480 snapshot with the same value of PC as the current snapshot.
11481
11482 @item tfind outside @var{addr1}, @var{addr2}
11483 Find the next snapshot whose PC is outside the given range of
11484 addresses (exclusive).
11485
11486 @item tfind range @var{addr1}, @var{addr2}
11487 Find the next snapshot whose PC is between @var{addr1} and
11488 @var{addr2} (inclusive).
11489
11490 @item tfind line @r{[}@var{file}:@r{]}@var{n}
11491 Find the next snapshot associated with the source line @var{n}. If
11492 the optional argument @var{file} is given, refer to line @var{n} in
11493 that source file. Search proceeds forward from the last examined
11494 trace snapshot. If no argument @var{n} is given, it means find the
11495 next line other than the one currently being examined; thus saying
11496 @code{tfind line} repeatedly can appear to have the same effect as
11497 stepping from line to line in a @emph{live} debugging session.
11498 @end table
11499
11500 The default arguments for the @code{tfind} commands are specifically
11501 designed to make it easy to scan through the trace buffer. For
11502 instance, @code{tfind} with no argument selects the next trace
11503 snapshot, and @code{tfind -} with no argument selects the previous
11504 trace snapshot. So, by giving one @code{tfind} command, and then
11505 simply hitting @key{RET} repeatedly you can examine all the trace
11506 snapshots in order. Or, by saying @code{tfind -} and then hitting
11507 @key{RET} repeatedly you can examine the snapshots in reverse order.
11508 The @code{tfind line} command with no argument selects the snapshot
11509 for the next source line executed. The @code{tfind pc} command with
11510 no argument selects the next snapshot with the same program counter
11511 (PC) as the current frame. The @code{tfind tracepoint} command with
11512 no argument selects the next trace snapshot collected by the same
11513 tracepoint as the current one.
11514
11515 In addition to letting you scan through the trace buffer manually,
11516 these commands make it easy to construct @value{GDBN} scripts that
11517 scan through the trace buffer and print out whatever collected data
11518 you are interested in. Thus, if we want to examine the PC, FP, and SP
11519 registers from each trace frame in the buffer, we can say this:
11520
11521 @smallexample
11522 (@value{GDBP}) @b{tfind start}
11523 (@value{GDBP}) @b{while ($trace_frame != -1)}
11524 > printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
11525 $trace_frame, $pc, $sp, $fp
11526 > tfind
11527 > end
11528
11529 Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
11530 Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
11531 Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
11532 Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
11533 Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
11534 Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
11535 Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
11536 Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
11537 Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
11538 Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
11539 Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
11540 @end smallexample
11541
11542 Or, if we want to examine the variable @code{X} at each source line in
11543 the buffer:
11544
11545 @smallexample
11546 (@value{GDBP}) @b{tfind start}
11547 (@value{GDBP}) @b{while ($trace_frame != -1)}
11548 > printf "Frame %d, X == %d\n", $trace_frame, X
11549 > tfind line
11550 > end
11551
11552 Frame 0, X = 1
11553 Frame 7, X = 2
11554 Frame 13, X = 255
11555 @end smallexample
11556
11557 @node tdump
11558 @subsection @code{tdump}
11559 @kindex tdump
11560 @cindex dump all data collected at tracepoint
11561 @cindex tracepoint data, display
11562
11563 This command takes no arguments. It prints all the data collected at
11564 the current trace snapshot.
11565
11566 @smallexample
11567 (@value{GDBP}) @b{trace 444}
11568 (@value{GDBP}) @b{actions}
11569 Enter actions for tracepoint #2, one per line:
11570 > collect $regs, $locals, $args, gdb_long_test
11571 > end
11572
11573 (@value{GDBP}) @b{tstart}
11574
11575 (@value{GDBP}) @b{tfind line 444}
11576 #0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
11577 at gdb_test.c:444
11578 444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
11579
11580 (@value{GDBP}) @b{tdump}
11581 Data collected at tracepoint 2, trace frame 1:
11582 d0 0xc4aa0085 -995491707
11583 d1 0x18 24
11584 d2 0x80 128
11585 d3 0x33 51
11586 d4 0x71aea3d 119204413
11587 d5 0x22 34
11588 d6 0xe0 224
11589 d7 0x380035 3670069
11590 a0 0x19e24a 1696330
11591 a1 0x3000668 50333288
11592 a2 0x100 256
11593 a3 0x322000 3284992
11594 a4 0x3000698 50333336
11595 a5 0x1ad3cc 1758156
11596 fp 0x30bf3c 0x30bf3c
11597 sp 0x30bf34 0x30bf34
11598 ps 0x0 0
11599 pc 0x20b2c8 0x20b2c8
11600 fpcontrol 0x0 0
11601 fpstatus 0x0 0
11602 fpiaddr 0x0 0
11603 p = 0x20e5b4 "gdb-test"
11604 p1 = (void *) 0x11
11605 p2 = (void *) 0x22
11606 p3 = (void *) 0x33
11607 p4 = (void *) 0x44
11608 p5 = (void *) 0x55
11609 p6 = (void *) 0x66
11610 gdb_long_test = 17 '\021'
11611
11612 (@value{GDBP})
11613 @end smallexample
11614
11615 @code{tdump} works by scanning the tracepoint's current collection
11616 actions and printing the value of each expression listed. So
11617 @code{tdump} can fail, if after a run, you change the tracepoint's
11618 actions to mention variables that were not collected during the run.
11619
11620 Also, for tracepoints with @code{while-stepping} loops, @code{tdump}
11621 uses the collected value of @code{$pc} to distinguish between trace
11622 frames that were collected at the tracepoint hit, and frames that were
11623 collected while stepping. This allows it to correctly choose whether
11624 to display the basic list of collections, or the collections from the
11625 body of the while-stepping loop. However, if @code{$pc} was not collected,
11626 then @code{tdump} will always attempt to dump using the basic collection
11627 list, and may fail if a while-stepping frame does not include all the
11628 same data that is collected at the tracepoint hit.
11629 @c This is getting pretty arcane, example would be good.
11630
11631 @node save tracepoints
11632 @subsection @code{save tracepoints @var{filename}}
11633 @kindex save tracepoints
11634 @kindex save-tracepoints
11635 @cindex save tracepoints for future sessions
11636
11637 This command saves all current tracepoint definitions together with
11638 their actions and passcounts, into a file @file{@var{filename}}
11639 suitable for use in a later debugging session. To read the saved
11640 tracepoint definitions, use the @code{source} command (@pxref{Command
11641 Files}). The @w{@code{save-tracepoints}} command is a deprecated
11642 alias for @w{@code{save tracepoints}}
11643
11644 @node Tracepoint Variables
11645 @section Convenience Variables for Tracepoints
11646 @cindex tracepoint variables
11647 @cindex convenience variables for tracepoints
11648
11649 @table @code
11650 @vindex $trace_frame
11651 @item (int) $trace_frame
11652 The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
11653 snapshot is selected.
11654
11655 @vindex $tracepoint
11656 @item (int) $tracepoint
11657 The tracepoint for the current trace snapshot.
11658
11659 @vindex $trace_line
11660 @item (int) $trace_line
11661 The line number for the current trace snapshot.
11662
11663 @vindex $trace_file
11664 @item (char []) $trace_file
11665 The source file for the current trace snapshot.
11666
11667 @vindex $trace_func
11668 @item (char []) $trace_func
11669 The name of the function containing @code{$tracepoint}.
11670 @end table
11671
11672 Note: @code{$trace_file} is not suitable for use in @code{printf},
11673 use @code{output} instead.
11674
11675 Here's a simple example of using these convenience variables for
11676 stepping through all the trace snapshots and printing some of their
11677 data. Note that these are not the same as trace state variables,
11678 which are managed by the target.
11679
11680 @smallexample
11681 (@value{GDBP}) @b{tfind start}
11682
11683 (@value{GDBP}) @b{while $trace_frame != -1}
11684 > output $trace_file
11685 > printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
11686 > tfind
11687 > end
11688 @end smallexample
11689
11690 @node Trace Files
11691 @section Using Trace Files
11692 @cindex trace files
11693
11694 In some situations, the target running a trace experiment may no
11695 longer be available; perhaps it crashed, or the hardware was needed
11696 for a different activity. To handle these cases, you can arrange to
11697 dump the trace data into a file, and later use that file as a source
11698 of trace data, via the @code{target tfile} command.
11699
11700 @table @code
11701
11702 @kindex tsave
11703 @item tsave [ -r ] @var{filename}
11704 Save the trace data to @var{filename}. By default, this command
11705 assumes that @var{filename} refers to the host filesystem, so if
11706 necessary @value{GDBN} will copy raw trace data up from the target and
11707 then save it. If the target supports it, you can also supply the
11708 optional argument @code{-r} (``remote'') to direct the target to save
11709 the data directly into @var{filename} in its own filesystem, which may be
11710 more efficient if the trace buffer is very large. (Note, however, that
11711 @code{target tfile} can only read from files accessible to the host.)
11712
11713 @kindex target tfile
11714 @kindex tfile
11715 @item target tfile @var{filename}
11716 Use the file named @var{filename} as a source of trace data. Commands
11717 that examine data work as they do with a live target, but it is not
11718 possible to run any new trace experiments. @code{tstatus} will report
11719 the state of the trace run at the moment the data was saved, as well
11720 as the current trace frame you are examining. @var{filename} must be
11721 on a filesystem accessible to the host.
11722
11723 @end table
11724
11725 @node Overlays
11726 @chapter Debugging Programs That Use Overlays
11727 @cindex overlays
11728
11729 If your program is too large to fit completely in your target system's
11730 memory, you can sometimes use @dfn{overlays} to work around this
11731 problem. @value{GDBN} provides some support for debugging programs that
11732 use overlays.
11733
11734 @menu
11735 * How Overlays Work:: A general explanation of overlays.
11736 * Overlay Commands:: Managing overlays in @value{GDBN}.
11737 * Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
11738 mapped by asking the inferior.
11739 * Overlay Sample Program:: A sample program using overlays.
11740 @end menu
11741
11742 @node How Overlays Work
11743 @section How Overlays Work
11744 @cindex mapped overlays
11745 @cindex unmapped overlays
11746 @cindex load address, overlay's
11747 @cindex mapped address
11748 @cindex overlay area
11749
11750 Suppose you have a computer whose instruction address space is only 64
11751 kilobytes long, but which has much more memory which can be accessed by
11752 other means: special instructions, segment registers, or memory
11753 management hardware, for example. Suppose further that you want to
11754 adapt a program which is larger than 64 kilobytes to run on this system.
11755
11756 One solution is to identify modules of your program which are relatively
11757 independent, and need not call each other directly; call these modules
11758 @dfn{overlays}. Separate the overlays from the main program, and place
11759 their machine code in the larger memory. Place your main program in
11760 instruction memory, but leave at least enough space there to hold the
11761 largest overlay as well.
11762
11763 Now, to call a function located in an overlay, you must first copy that
11764 overlay's machine code from the large memory into the space set aside
11765 for it in the instruction memory, and then jump to its entry point
11766 there.
11767
11768 @c NB: In the below the mapped area's size is greater or equal to the
11769 @c size of all overlays. This is intentional to remind the developer
11770 @c that overlays don't necessarily need to be the same size.
11771
11772 @smallexample
11773 @group
11774 Data Instruction Larger
11775 Address Space Address Space Address Space
11776 +-----------+ +-----------+ +-----------+
11777 | | | | | |
11778 +-----------+ +-----------+ +-----------+<-- overlay 1
11779 | program | | main | .----| overlay 1 | load address
11780 | variables | | program | | +-----------+
11781 | and heap | | | | | |
11782 +-----------+ | | | +-----------+<-- overlay 2
11783 | | +-----------+ | | | load address
11784 +-----------+ | | | .-| overlay 2 |
11785 | | | | | |
11786 mapped --->+-----------+ | | +-----------+
11787 address | | | | | |
11788 | overlay | <-' | | |
11789 | area | <---' +-----------+<-- overlay 3
11790 | | <---. | | load address
11791 +-----------+ `--| overlay 3 |
11792 | | | |
11793 +-----------+ | |
11794 +-----------+
11795 | |
11796 +-----------+
11797
11798 @anchor{A code overlay}A code overlay
11799 @end group
11800 @end smallexample
11801
11802 The diagram (@pxref{A code overlay}) shows a system with separate data
11803 and instruction address spaces. To map an overlay, the program copies
11804 its code from the larger address space to the instruction address space.
11805 Since the overlays shown here all use the same mapped address, only one
11806 may be mapped at a time. For a system with a single address space for
11807 data and instructions, the diagram would be similar, except that the
11808 program variables and heap would share an address space with the main
11809 program and the overlay area.
11810
11811 An overlay loaded into instruction memory and ready for use is called a
11812 @dfn{mapped} overlay; its @dfn{mapped address} is its address in the
11813 instruction memory. An overlay not present (or only partially present)
11814 in instruction memory is called @dfn{unmapped}; its @dfn{load address}
11815 is its address in the larger memory. The mapped address is also called
11816 the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
11817 called the @dfn{load memory address}, or @dfn{LMA}.
11818
11819 Unfortunately, overlays are not a completely transparent way to adapt a
11820 program to limited instruction memory. They introduce a new set of
11821 global constraints you must keep in mind as you design your program:
11822
11823 @itemize @bullet
11824
11825 @item
11826 Before calling or returning to a function in an overlay, your program
11827 must make sure that overlay is actually mapped. Otherwise, the call or
11828 return will transfer control to the right address, but in the wrong
11829 overlay, and your program will probably crash.
11830
11831 @item
11832 If the process of mapping an overlay is expensive on your system, you
11833 will need to choose your overlays carefully to minimize their effect on
11834 your program's performance.
11835
11836 @item
11837 The executable file you load onto your system must contain each
11838 overlay's instructions, appearing at the overlay's load address, not its
11839 mapped address. However, each overlay's instructions must be relocated
11840 and its symbols defined as if the overlay were at its mapped address.
11841 You can use GNU linker scripts to specify different load and relocation
11842 addresses for pieces of your program; see @ref{Overlay Description,,,
11843 ld.info, Using ld: the GNU linker}.
11844
11845 @item
11846 The procedure for loading executable files onto your system must be able
11847 to load their contents into the larger address space as well as the
11848 instruction and data spaces.
11849
11850 @end itemize
11851
11852 The overlay system described above is rather simple, and could be
11853 improved in many ways:
11854
11855 @itemize @bullet
11856
11857 @item
11858 If your system has suitable bank switch registers or memory management
11859 hardware, you could use those facilities to make an overlay's load area
11860 contents simply appear at their mapped address in instruction space.
11861 This would probably be faster than copying the overlay to its mapped
11862 area in the usual way.
11863
11864 @item
11865 If your overlays are small enough, you could set aside more than one
11866 overlay area, and have more than one overlay mapped at a time.
11867
11868 @item
11869 You can use overlays to manage data, as well as instructions. In
11870 general, data overlays are even less transparent to your design than
11871 code overlays: whereas code overlays only require care when you call or
11872 return to functions, data overlays require care every time you access
11873 the data. Also, if you change the contents of a data overlay, you
11874 must copy its contents back out to its load address before you can copy a
11875 different data overlay into the same mapped area.
11876
11877 @end itemize
11878
11879
11880 @node Overlay Commands
11881 @section Overlay Commands
11882
11883 To use @value{GDBN}'s overlay support, each overlay in your program must
11884 correspond to a separate section of the executable file. The section's
11885 virtual memory address and load memory address must be the overlay's
11886 mapped and load addresses. Identifying overlays with sections allows
11887 @value{GDBN} to determine the appropriate address of a function or
11888 variable, depending on whether the overlay is mapped or not.
11889
11890 @value{GDBN}'s overlay commands all start with the word @code{overlay};
11891 you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
11892
11893 @table @code
11894 @item overlay off
11895 @kindex overlay
11896 Disable @value{GDBN}'s overlay support. When overlay support is
11897 disabled, @value{GDBN} assumes that all functions and variables are
11898 always present at their mapped addresses. By default, @value{GDBN}'s
11899 overlay support is disabled.
11900
11901 @item overlay manual
11902 @cindex manual overlay debugging
11903 Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
11904 relies on you to tell it which overlays are mapped, and which are not,
11905 using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
11906 commands described below.
11907
11908 @item overlay map-overlay @var{overlay}
11909 @itemx overlay map @var{overlay}
11910 @cindex map an overlay
11911 Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
11912 be the name of the object file section containing the overlay. When an
11913 overlay is mapped, @value{GDBN} assumes it can find the overlay's
11914 functions and variables at their mapped addresses. @value{GDBN} assumes
11915 that any other overlays whose mapped ranges overlap that of
11916 @var{overlay} are now unmapped.
11917
11918 @item overlay unmap-overlay @var{overlay}
11919 @itemx overlay unmap @var{overlay}
11920 @cindex unmap an overlay
11921 Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
11922 must be the name of the object file section containing the overlay.
11923 When an overlay is unmapped, @value{GDBN} assumes it can find the
11924 overlay's functions and variables at their load addresses.
11925
11926 @item overlay auto
11927 Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
11928 consults a data structure the overlay manager maintains in the inferior
11929 to see which overlays are mapped. For details, see @ref{Automatic
11930 Overlay Debugging}.
11931
11932 @item overlay load-target
11933 @itemx overlay load
11934 @cindex reloading the overlay table
11935 Re-read the overlay table from the inferior. Normally, @value{GDBN}
11936 re-reads the table @value{GDBN} automatically each time the inferior
11937 stops, so this command should only be necessary if you have changed the
11938 overlay mapping yourself using @value{GDBN}. This command is only
11939 useful when using automatic overlay debugging.
11940
11941 @item overlay list-overlays
11942 @itemx overlay list
11943 @cindex listing mapped overlays
11944 Display a list of the overlays currently mapped, along with their mapped
11945 addresses, load addresses, and sizes.
11946
11947 @end table
11948
11949 Normally, when @value{GDBN} prints a code address, it includes the name
11950 of the function the address falls in:
11951
11952 @smallexample
11953 (@value{GDBP}) print main
11954 $3 = @{int ()@} 0x11a0 <main>
11955 @end smallexample
11956 @noindent
11957 When overlay debugging is enabled, @value{GDBN} recognizes code in
11958 unmapped overlays, and prints the names of unmapped functions with
11959 asterisks around them. For example, if @code{foo} is a function in an
11960 unmapped overlay, @value{GDBN} prints it this way:
11961
11962 @smallexample
11963 (@value{GDBP}) overlay list
11964 No sections are mapped.
11965 (@value{GDBP}) print foo
11966 $5 = @{int (int)@} 0x100000 <*foo*>
11967 @end smallexample
11968 @noindent
11969 When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
11970 name normally:
11971
11972 @smallexample
11973 (@value{GDBP}) overlay list
11974 Section .ov.foo.text, loaded at 0x100000 - 0x100034,
11975 mapped at 0x1016 - 0x104a
11976 (@value{GDBP}) print foo
11977 $6 = @{int (int)@} 0x1016 <foo>
11978 @end smallexample
11979
11980 When overlay debugging is enabled, @value{GDBN} can find the correct
11981 address for functions and variables in an overlay, whether or not the
11982 overlay is mapped. This allows most @value{GDBN} commands, like
11983 @code{break} and @code{disassemble}, to work normally, even on unmapped
11984 code. However, @value{GDBN}'s breakpoint support has some limitations:
11985
11986 @itemize @bullet
11987 @item
11988 @cindex breakpoints in overlays
11989 @cindex overlays, setting breakpoints in
11990 You can set breakpoints in functions in unmapped overlays, as long as
11991 @value{GDBN} can write to the overlay at its load address.
11992 @item
11993 @value{GDBN} can not set hardware or simulator-based breakpoints in
11994 unmapped overlays. However, if you set a breakpoint at the end of your
11995 overlay manager (and tell @value{GDBN} which overlays are now mapped, if
11996 you are using manual overlay management), @value{GDBN} will re-set its
11997 breakpoints properly.
11998 @end itemize
11999
12000
12001 @node Automatic Overlay Debugging
12002 @section Automatic Overlay Debugging
12003 @cindex automatic overlay debugging
12004
12005 @value{GDBN} can automatically track which overlays are mapped and which
12006 are not, given some simple co-operation from the overlay manager in the
12007 inferior. If you enable automatic overlay debugging with the
12008 @code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
12009 looks in the inferior's memory for certain variables describing the
12010 current state of the overlays.
12011
12012 Here are the variables your overlay manager must define to support
12013 @value{GDBN}'s automatic overlay debugging:
12014
12015 @table @asis
12016
12017 @item @code{_ovly_table}:
12018 This variable must be an array of the following structures:
12019
12020 @smallexample
12021 struct
12022 @{
12023 /* The overlay's mapped address. */
12024 unsigned long vma;
12025
12026 /* The size of the overlay, in bytes. */
12027 unsigned long size;
12028
12029 /* The overlay's load address. */
12030 unsigned long lma;
12031
12032 /* Non-zero if the overlay is currently mapped;
12033 zero otherwise. */
12034 unsigned long mapped;
12035 @}
12036 @end smallexample
12037
12038 @item @code{_novlys}:
12039 This variable must be a four-byte signed integer, holding the total
12040 number of elements in @code{_ovly_table}.
12041
12042 @end table
12043
12044 To decide whether a particular overlay is mapped or not, @value{GDBN}
12045 looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
12046 @code{lma} members equal the VMA and LMA of the overlay's section in the
12047 executable file. When @value{GDBN} finds a matching entry, it consults
12048 the entry's @code{mapped} member to determine whether the overlay is
12049 currently mapped.
12050
12051 In addition, your overlay manager may define a function called
12052 @code{_ovly_debug_event}. If this function is defined, @value{GDBN}
12053 will silently set a breakpoint there. If the overlay manager then
12054 calls this function whenever it has changed the overlay table, this
12055 will enable @value{GDBN} to accurately keep track of which overlays
12056 are in program memory, and update any breakpoints that may be set
12057 in overlays. This will allow breakpoints to work even if the
12058 overlays are kept in ROM or other non-writable memory while they
12059 are not being executed.
12060
12061 @node Overlay Sample Program
12062 @section Overlay Sample Program
12063 @cindex overlay example program
12064
12065 When linking a program which uses overlays, you must place the overlays
12066 at their load addresses, while relocating them to run at their mapped
12067 addresses. To do this, you must write a linker script (@pxref{Overlay
12068 Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
12069 since linker scripts are specific to a particular host system, target
12070 architecture, and target memory layout, this manual cannot provide
12071 portable sample code demonstrating @value{GDBN}'s overlay support.
12072
12073 However, the @value{GDBN} source distribution does contain an overlaid
12074 program, with linker scripts for a few systems, as part of its test
12075 suite. The program consists of the following files from
12076 @file{gdb/testsuite/gdb.base}:
12077
12078 @table @file
12079 @item overlays.c
12080 The main program file.
12081 @item ovlymgr.c
12082 A simple overlay manager, used by @file{overlays.c}.
12083 @item foo.c
12084 @itemx bar.c
12085 @itemx baz.c
12086 @itemx grbx.c
12087 Overlay modules, loaded and used by @file{overlays.c}.
12088 @item d10v.ld
12089 @itemx m32r.ld
12090 Linker scripts for linking the test program on the @code{d10v-elf}
12091 and @code{m32r-elf} targets.
12092 @end table
12093
12094 You can build the test program using the @code{d10v-elf} GCC
12095 cross-compiler like this:
12096
12097 @smallexample
12098 $ d10v-elf-gcc -g -c overlays.c
12099 $ d10v-elf-gcc -g -c ovlymgr.c
12100 $ d10v-elf-gcc -g -c foo.c
12101 $ d10v-elf-gcc -g -c bar.c
12102 $ d10v-elf-gcc -g -c baz.c
12103 $ d10v-elf-gcc -g -c grbx.c
12104 $ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
12105 baz.o grbx.o -Wl,-Td10v.ld -o overlays
12106 @end smallexample
12107
12108 The build process is identical for any other architecture, except that
12109 you must substitute the appropriate compiler and linker script for the
12110 target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
12111
12112
12113 @node Languages
12114 @chapter Using @value{GDBN} with Different Languages
12115 @cindex languages
12116
12117 Although programming languages generally have common aspects, they are
12118 rarely expressed in the same manner. For instance, in ANSI C,
12119 dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
12120 Modula-2, it is accomplished by @code{p^}. Values can also be
12121 represented (and displayed) differently. Hex numbers in C appear as
12122 @samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
12123
12124 @cindex working language
12125 Language-specific information is built into @value{GDBN} for some languages,
12126 allowing you to express operations like the above in your program's
12127 native language, and allowing @value{GDBN} to output values in a manner
12128 consistent with the syntax of your program's native language. The
12129 language you use to build expressions is called the @dfn{working
12130 language}.
12131
12132 @menu
12133 * Setting:: Switching between source languages
12134 * Show:: Displaying the language
12135 * Checks:: Type and range checks
12136 * Supported Languages:: Supported languages
12137 * Unsupported Languages:: Unsupported languages
12138 @end menu
12139
12140 @node Setting
12141 @section Switching Between Source Languages
12142
12143 There are two ways to control the working language---either have @value{GDBN}
12144 set it automatically, or select it manually yourself. You can use the
12145 @code{set language} command for either purpose. On startup, @value{GDBN}
12146 defaults to setting the language automatically. The working language is
12147 used to determine how expressions you type are interpreted, how values
12148 are printed, etc.
12149
12150 In addition to the working language, every source file that
12151 @value{GDBN} knows about has its own working language. For some object
12152 file formats, the compiler might indicate which language a particular
12153 source file is in. However, most of the time @value{GDBN} infers the
12154 language from the name of the file. The language of a source file
12155 controls whether C@t{++} names are demangled---this way @code{backtrace} can
12156 show each frame appropriately for its own language. There is no way to
12157 set the language of a source file from within @value{GDBN}, but you can
12158 set the language associated with a filename extension. @xref{Show, ,
12159 Displaying the Language}.
12160
12161 This is most commonly a problem when you use a program, such
12162 as @code{cfront} or @code{f2c}, that generates C but is written in
12163 another language. In that case, make the
12164 program use @code{#line} directives in its C output; that way
12165 @value{GDBN} will know the correct language of the source code of the original
12166 program, and will display that source code, not the generated C code.
12167
12168 @menu
12169 * Filenames:: Filename extensions and languages.
12170 * Manually:: Setting the working language manually
12171 * Automatically:: Having @value{GDBN} infer the source language
12172 @end menu
12173
12174 @node Filenames
12175 @subsection List of Filename Extensions and Languages
12176
12177 If a source file name ends in one of the following extensions, then
12178 @value{GDBN} infers that its language is the one indicated.
12179
12180 @table @file
12181 @item .ada
12182 @itemx .ads
12183 @itemx .adb
12184 @itemx .a
12185 Ada source file.
12186
12187 @item .c
12188 C source file
12189
12190 @item .C
12191 @itemx .cc
12192 @itemx .cp
12193 @itemx .cpp
12194 @itemx .cxx
12195 @itemx .c++
12196 C@t{++} source file
12197
12198 @item .d
12199 D source file
12200
12201 @item .m
12202 Objective-C source file
12203
12204 @item .f
12205 @itemx .F
12206 Fortran source file
12207
12208 @item .mod
12209 Modula-2 source file
12210
12211 @item .s
12212 @itemx .S
12213 Assembler source file. This actually behaves almost like C, but
12214 @value{GDBN} does not skip over function prologues when stepping.
12215 @end table
12216
12217 In addition, you may set the language associated with a filename
12218 extension. @xref{Show, , Displaying the Language}.
12219
12220 @node Manually
12221 @subsection Setting the Working Language
12222
12223 If you allow @value{GDBN} to set the language automatically,
12224 expressions are interpreted the same way in your debugging session and
12225 your program.
12226
12227 @kindex set language
12228 If you wish, you may set the language manually. To do this, issue the
12229 command @samp{set language @var{lang}}, where @var{lang} is the name of
12230 a language, such as
12231 @code{c} or @code{modula-2}.
12232 For a list of the supported languages, type @samp{set language}.
12233
12234 Setting the language manually prevents @value{GDBN} from updating the working
12235 language automatically. This can lead to confusion if you try
12236 to debug a program when the working language is not the same as the
12237 source language, when an expression is acceptable to both
12238 languages---but means different things. For instance, if the current
12239 source file were written in C, and @value{GDBN} was parsing Modula-2, a
12240 command such as:
12241
12242 @smallexample
12243 print a = b + c
12244 @end smallexample
12245
12246 @noindent
12247 might not have the effect you intended. In C, this means to add
12248 @code{b} and @code{c} and place the result in @code{a}. The result
12249 printed would be the value of @code{a}. In Modula-2, this means to compare
12250 @code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
12251
12252 @node Automatically
12253 @subsection Having @value{GDBN} Infer the Source Language
12254
12255 To have @value{GDBN} set the working language automatically, use
12256 @samp{set language local} or @samp{set language auto}. @value{GDBN}
12257 then infers the working language. That is, when your program stops in a
12258 frame (usually by encountering a breakpoint), @value{GDBN} sets the
12259 working language to the language recorded for the function in that
12260 frame. If the language for a frame is unknown (that is, if the function
12261 or block corresponding to the frame was defined in a source file that
12262 does not have a recognized extension), the current working language is
12263 not changed, and @value{GDBN} issues a warning.
12264
12265 This may not seem necessary for most programs, which are written
12266 entirely in one source language. However, program modules and libraries
12267 written in one source language can be used by a main program written in
12268 a different source language. Using @samp{set language auto} in this
12269 case frees you from having to set the working language manually.
12270
12271 @node Show
12272 @section Displaying the Language
12273
12274 The following commands help you find out which language is the
12275 working language, and also what language source files were written in.
12276
12277 @table @code
12278 @item show language
12279 @kindex show language
12280 Display the current working language. This is the
12281 language you can use with commands such as @code{print} to
12282 build and compute expressions that may involve variables in your program.
12283
12284 @item info frame
12285 @kindex info frame@r{, show the source language}
12286 Display the source language for this frame. This language becomes the
12287 working language if you use an identifier from this frame.
12288 @xref{Frame Info, ,Information about a Frame}, to identify the other
12289 information listed here.
12290
12291 @item info source
12292 @kindex info source@r{, show the source language}
12293 Display the source language of this source file.
12294 @xref{Symbols, ,Examining the Symbol Table}, to identify the other
12295 information listed here.
12296 @end table
12297
12298 In unusual circumstances, you may have source files with extensions
12299 not in the standard list. You can then set the extension associated
12300 with a language explicitly:
12301
12302 @table @code
12303 @item set extension-language @var{ext} @var{language}
12304 @kindex set extension-language
12305 Tell @value{GDBN} that source files with extension @var{ext} are to be
12306 assumed as written in the source language @var{language}.
12307
12308 @item info extensions
12309 @kindex info extensions
12310 List all the filename extensions and the associated languages.
12311 @end table
12312
12313 @node Checks
12314 @section Type and Range Checking
12315
12316 @quotation
12317 @emph{Warning:} In this release, the @value{GDBN} commands for type and range
12318 checking are included, but they do not yet have any effect. This
12319 section documents the intended facilities.
12320 @end quotation
12321 @c FIXME remove warning when type/range code added
12322
12323 Some languages are designed to guard you against making seemingly common
12324 errors through a series of compile- and run-time checks. These include
12325 checking the type of arguments to functions and operators, and making
12326 sure mathematical overflows are caught at run time. Checks such as
12327 these help to ensure a program's correctness once it has been compiled
12328 by eliminating type mismatches, and providing active checks for range
12329 errors when your program is running.
12330
12331 @value{GDBN} can check for conditions like the above if you wish.
12332 Although @value{GDBN} does not check the statements in your program,
12333 it can check expressions entered directly into @value{GDBN} for
12334 evaluation via the @code{print} command, for example. As with the
12335 working language, @value{GDBN} can also decide whether or not to check
12336 automatically based on your program's source language.
12337 @xref{Supported Languages, ,Supported Languages}, for the default
12338 settings of supported languages.
12339
12340 @menu
12341 * Type Checking:: An overview of type checking
12342 * Range Checking:: An overview of range checking
12343 @end menu
12344
12345 @cindex type checking
12346 @cindex checks, type
12347 @node Type Checking
12348 @subsection An Overview of Type Checking
12349
12350 Some languages, such as Modula-2, are strongly typed, meaning that the
12351 arguments to operators and functions have to be of the correct type,
12352 otherwise an error occurs. These checks prevent type mismatch
12353 errors from ever causing any run-time problems. For example,
12354
12355 @smallexample
12356 1 + 2 @result{} 3
12357 @exdent but
12358 @error{} 1 + 2.3
12359 @end smallexample
12360
12361 The second example fails because the @code{CARDINAL} 1 is not
12362 type-compatible with the @code{REAL} 2.3.
12363
12364 For the expressions you use in @value{GDBN} commands, you can tell the
12365 @value{GDBN} type checker to skip checking;
12366 to treat any mismatches as errors and abandon the expression;
12367 or to only issue warnings when type mismatches occur,
12368 but evaluate the expression anyway. When you choose the last of
12369 these, @value{GDBN} evaluates expressions like the second example above, but
12370 also issues a warning.
12371
12372 Even if you turn type checking off, there may be other reasons
12373 related to type that prevent @value{GDBN} from evaluating an expression.
12374 For instance, @value{GDBN} does not know how to add an @code{int} and
12375 a @code{struct foo}. These particular type errors have nothing to do
12376 with the language in use, and usually arise from expressions, such as
12377 the one described above, which make little sense to evaluate anyway.
12378
12379 Each language defines to what degree it is strict about type. For
12380 instance, both Modula-2 and C require the arguments to arithmetical
12381 operators to be numbers. In C, enumerated types and pointers can be
12382 represented as numbers, so that they are valid arguments to mathematical
12383 operators. @xref{Supported Languages, ,Supported Languages}, for further
12384 details on specific languages.
12385
12386 @value{GDBN} provides some additional commands for controlling the type checker:
12387
12388 @kindex set check type
12389 @kindex show check type
12390 @table @code
12391 @item set check type auto
12392 Set type checking on or off based on the current working language.
12393 @xref{Supported Languages, ,Supported Languages}, for the default settings for
12394 each language.
12395
12396 @item set check type on
12397 @itemx set check type off
12398 Set type checking on or off, overriding the default setting for the
12399 current working language. Issue a warning if the setting does not
12400 match the language default. If any type mismatches occur in
12401 evaluating an expression while type checking is on, @value{GDBN} prints a
12402 message and aborts evaluation of the expression.
12403
12404 @item set check type warn
12405 Cause the type checker to issue warnings, but to always attempt to
12406 evaluate the expression. Evaluating the expression may still
12407 be impossible for other reasons. For example, @value{GDBN} cannot add
12408 numbers and structures.
12409
12410 @item show type
12411 Show the current setting of the type checker, and whether or not @value{GDBN}
12412 is setting it automatically.
12413 @end table
12414
12415 @cindex range checking
12416 @cindex checks, range
12417 @node Range Checking
12418 @subsection An Overview of Range Checking
12419
12420 In some languages (such as Modula-2), it is an error to exceed the
12421 bounds of a type; this is enforced with run-time checks. Such range
12422 checking is meant to ensure program correctness by making sure
12423 computations do not overflow, or indices on an array element access do
12424 not exceed the bounds of the array.
12425
12426 For expressions you use in @value{GDBN} commands, you can tell
12427 @value{GDBN} to treat range errors in one of three ways: ignore them,
12428 always treat them as errors and abandon the expression, or issue
12429 warnings but evaluate the expression anyway.
12430
12431 A range error can result from numerical overflow, from exceeding an
12432 array index bound, or when you type a constant that is not a member
12433 of any type. Some languages, however, do not treat overflows as an
12434 error. In many implementations of C, mathematical overflow causes the
12435 result to ``wrap around'' to lower values---for example, if @var{m} is
12436 the largest integer value, and @var{s} is the smallest, then
12437
12438 @smallexample
12439 @var{m} + 1 @result{} @var{s}
12440 @end smallexample
12441
12442 This, too, is specific to individual languages, and in some cases
12443 specific to individual compilers or machines. @xref{Supported Languages, ,
12444 Supported Languages}, for further details on specific languages.
12445
12446 @value{GDBN} provides some additional commands for controlling the range checker:
12447
12448 @kindex set check range
12449 @kindex show check range
12450 @table @code
12451 @item set check range auto
12452 Set range checking on or off based on the current working language.
12453 @xref{Supported Languages, ,Supported Languages}, for the default settings for
12454 each language.
12455
12456 @item set check range on
12457 @itemx set check range off
12458 Set range checking on or off, overriding the default setting for the
12459 current working language. A warning is issued if the setting does not
12460 match the language default. If a range error occurs and range checking is on,
12461 then a message is printed and evaluation of the expression is aborted.
12462
12463 @item set check range warn
12464 Output messages when the @value{GDBN} range checker detects a range error,
12465 but attempt to evaluate the expression anyway. Evaluating the
12466 expression may still be impossible for other reasons, such as accessing
12467 memory that the process does not own (a typical example from many Unix
12468 systems).
12469
12470 @item show range
12471 Show the current setting of the range checker, and whether or not it is
12472 being set automatically by @value{GDBN}.
12473 @end table
12474
12475 @node Supported Languages
12476 @section Supported Languages
12477
12478 @value{GDBN} supports C, C@t{++}, D, Objective-C, Fortran, Java, OpenCL C, Pascal,
12479 assembly, Modula-2, and Ada.
12480 @c This is false ...
12481 Some @value{GDBN} features may be used in expressions regardless of the
12482 language you use: the @value{GDBN} @code{@@} and @code{::} operators,
12483 and the @samp{@{type@}addr} construct (@pxref{Expressions,
12484 ,Expressions}) can be used with the constructs of any supported
12485 language.
12486
12487 The following sections detail to what degree each source language is
12488 supported by @value{GDBN}. These sections are not meant to be language
12489 tutorials or references, but serve only as a reference guide to what the
12490 @value{GDBN} expression parser accepts, and what input and output
12491 formats should look like for different languages. There are many good
12492 books written on each of these languages; please look to these for a
12493 language reference or tutorial.
12494
12495 @menu
12496 * C:: C and C@t{++}
12497 * D:: D
12498 * Objective-C:: Objective-C
12499 * OpenCL C:: OpenCL C
12500 * Fortran:: Fortran
12501 * Pascal:: Pascal
12502 * Modula-2:: Modula-2
12503 * Ada:: Ada
12504 @end menu
12505
12506 @node C
12507 @subsection C and C@t{++}
12508
12509 @cindex C and C@t{++}
12510 @cindex expressions in C or C@t{++}
12511
12512 Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
12513 to both languages. Whenever this is the case, we discuss those languages
12514 together.
12515
12516 @cindex C@t{++}
12517 @cindex @code{g++}, @sc{gnu} C@t{++} compiler
12518 @cindex @sc{gnu} C@t{++}
12519 The C@t{++} debugging facilities are jointly implemented by the C@t{++}
12520 compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
12521 effectively, you must compile your C@t{++} programs with a supported
12522 C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
12523 compiler (@code{aCC}).
12524
12525 @menu
12526 * C Operators:: C and C@t{++} operators
12527 * C Constants:: C and C@t{++} constants
12528 * C Plus Plus Expressions:: C@t{++} expressions
12529 * C Defaults:: Default settings for C and C@t{++}
12530 * C Checks:: C and C@t{++} type and range checks
12531 * Debugging C:: @value{GDBN} and C
12532 * Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
12533 * Decimal Floating Point:: Numbers in Decimal Floating Point format
12534 @end menu
12535
12536 @node C Operators
12537 @subsubsection C and C@t{++} Operators
12538
12539 @cindex C and C@t{++} operators
12540
12541 Operators must be defined on values of specific types. For instance,
12542 @code{+} is defined on numbers, but not on structures. Operators are
12543 often defined on groups of types.
12544
12545 For the purposes of C and C@t{++}, the following definitions hold:
12546
12547 @itemize @bullet
12548
12549 @item
12550 @emph{Integral types} include @code{int} with any of its storage-class
12551 specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
12552
12553 @item
12554 @emph{Floating-point types} include @code{float}, @code{double}, and
12555 @code{long double} (if supported by the target platform).
12556
12557 @item
12558 @emph{Pointer types} include all types defined as @code{(@var{type} *)}.
12559
12560 @item
12561 @emph{Scalar types} include all of the above.
12562
12563 @end itemize
12564
12565 @noindent
12566 The following operators are supported. They are listed here
12567 in order of increasing precedence:
12568
12569 @table @code
12570 @item ,
12571 The comma or sequencing operator. Expressions in a comma-separated list
12572 are evaluated from left to right, with the result of the entire
12573 expression being the last expression evaluated.
12574
12575 @item =
12576 Assignment. The value of an assignment expression is the value
12577 assigned. Defined on scalar types.
12578
12579 @item @var{op}=
12580 Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
12581 and translated to @w{@code{@var{a} = @var{a op b}}}.
12582 @w{@code{@var{op}=}} and @code{=} have the same precedence.
12583 @var{op} is any one of the operators @code{|}, @code{^}, @code{&},
12584 @code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
12585
12586 @item ?:
12587 The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
12588 of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
12589 integral type.
12590
12591 @item ||
12592 Logical @sc{or}. Defined on integral types.
12593
12594 @item &&
12595 Logical @sc{and}. Defined on integral types.
12596
12597 @item |
12598 Bitwise @sc{or}. Defined on integral types.
12599
12600 @item ^
12601 Bitwise exclusive-@sc{or}. Defined on integral types.
12602
12603 @item &
12604 Bitwise @sc{and}. Defined on integral types.
12605
12606 @item ==@r{, }!=
12607 Equality and inequality. Defined on scalar types. The value of these
12608 expressions is 0 for false and non-zero for true.
12609
12610 @item <@r{, }>@r{, }<=@r{, }>=
12611 Less than, greater than, less than or equal, greater than or equal.
12612 Defined on scalar types. The value of these expressions is 0 for false
12613 and non-zero for true.
12614
12615 @item <<@r{, }>>
12616 left shift, and right shift. Defined on integral types.
12617
12618 @item @@
12619 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
12620
12621 @item +@r{, }-
12622 Addition and subtraction. Defined on integral types, floating-point types and
12623 pointer types.
12624
12625 @item *@r{, }/@r{, }%
12626 Multiplication, division, and modulus. Multiplication and division are
12627 defined on integral and floating-point types. Modulus is defined on
12628 integral types.
12629
12630 @item ++@r{, }--
12631 Increment and decrement. When appearing before a variable, the
12632 operation is performed before the variable is used in an expression;
12633 when appearing after it, the variable's value is used before the
12634 operation takes place.
12635
12636 @item *
12637 Pointer dereferencing. Defined on pointer types. Same precedence as
12638 @code{++}.
12639
12640 @item &
12641 Address operator. Defined on variables. Same precedence as @code{++}.
12642
12643 For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
12644 allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
12645 to examine the address
12646 where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
12647 stored.
12648
12649 @item -
12650 Negative. Defined on integral and floating-point types. Same
12651 precedence as @code{++}.
12652
12653 @item !
12654 Logical negation. Defined on integral types. Same precedence as
12655 @code{++}.
12656
12657 @item ~
12658 Bitwise complement operator. Defined on integral types. Same precedence as
12659 @code{++}.
12660
12661
12662 @item .@r{, }->
12663 Structure member, and pointer-to-structure member. For convenience,
12664 @value{GDBN} regards the two as equivalent, choosing whether to dereference a
12665 pointer based on the stored type information.
12666 Defined on @code{struct} and @code{union} data.
12667
12668 @item .*@r{, }->*
12669 Dereferences of pointers to members.
12670
12671 @item []
12672 Array indexing. @code{@var{a}[@var{i}]} is defined as
12673 @code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
12674
12675 @item ()
12676 Function parameter list. Same precedence as @code{->}.
12677
12678 @item ::
12679 C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
12680 and @code{class} types.
12681
12682 @item ::
12683 Doubled colons also represent the @value{GDBN} scope operator
12684 (@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
12685 above.
12686 @end table
12687
12688 If an operator is redefined in the user code, @value{GDBN} usually
12689 attempts to invoke the redefined version instead of using the operator's
12690 predefined meaning.
12691
12692 @node C Constants
12693 @subsubsection C and C@t{++} Constants
12694
12695 @cindex C and C@t{++} constants
12696
12697 @value{GDBN} allows you to express the constants of C and C@t{++} in the
12698 following ways:
12699
12700 @itemize @bullet
12701 @item
12702 Integer constants are a sequence of digits. Octal constants are
12703 specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
12704 by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
12705 @samp{l}, specifying that the constant should be treated as a
12706 @code{long} value.
12707
12708 @item
12709 Floating point constants are a sequence of digits, followed by a decimal
12710 point, followed by a sequence of digits, and optionally followed by an
12711 exponent. An exponent is of the form:
12712 @samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
12713 sequence of digits. The @samp{+} is optional for positive exponents.
12714 A floating-point constant may also end with a letter @samp{f} or
12715 @samp{F}, specifying that the constant should be treated as being of
12716 the @code{float} (as opposed to the default @code{double}) type; or with
12717 a letter @samp{l} or @samp{L}, which specifies a @code{long double}
12718 constant.
12719
12720 @item
12721 Enumerated constants consist of enumerated identifiers, or their
12722 integral equivalents.
12723
12724 @item
12725 Character constants are a single character surrounded by single quotes
12726 (@code{'}), or a number---the ordinal value of the corresponding character
12727 (usually its @sc{ascii} value). Within quotes, the single character may
12728 be represented by a letter or by @dfn{escape sequences}, which are of
12729 the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
12730 of the character's ordinal value; or of the form @samp{\@var{x}}, where
12731 @samp{@var{x}} is a predefined special character---for example,
12732 @samp{\n} for newline.
12733
12734 Wide character constants can be written by prefixing a character
12735 constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide
12736 form of @samp{x}. The target wide character set is used when
12737 computing the value of this constant (@pxref{Character Sets}).
12738
12739 @item
12740 String constants are a sequence of character constants surrounded by
12741 double quotes (@code{"}). Any valid character constant (as described
12742 above) may appear. Double quotes within the string must be preceded by
12743 a backslash, so for instance @samp{"a\"b'c"} is a string of five
12744 characters.
12745
12746 Wide string constants can be written by prefixing a string constant
12747 with @samp{L}, as in C. The target wide character set is used when
12748 computing the value of this constant (@pxref{Character Sets}).
12749
12750 @item
12751 Pointer constants are an integral value. You can also write pointers
12752 to constants using the C operator @samp{&}.
12753
12754 @item
12755 Array constants are comma-separated lists surrounded by braces @samp{@{}
12756 and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
12757 integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
12758 and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
12759 @end itemize
12760
12761 @node C Plus Plus Expressions
12762 @subsubsection C@t{++} Expressions
12763
12764 @cindex expressions in C@t{++}
12765 @value{GDBN} expression handling can interpret most C@t{++} expressions.
12766
12767 @cindex debugging C@t{++} programs
12768 @cindex C@t{++} compilers
12769 @cindex debug formats and C@t{++}
12770 @cindex @value{NGCC} and C@t{++}
12771 @quotation
12772 @emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use
12773 the proper compiler and the proper debug format. Currently,
12774 @value{GDBN} works best when debugging C@t{++} code that is compiled
12775 with the most recent version of @value{NGCC} possible. The DWARF
12776 debugging format is preferred; @value{NGCC} defaults to this on most
12777 popular platforms. Other compilers and/or debug formats are likely to
12778 work badly or not at all when using @value{GDBN} to debug C@t{++}
12779 code. @xref{Compilation}.
12780 @end quotation
12781
12782 @enumerate
12783
12784 @cindex member functions
12785 @item
12786 Member function calls are allowed; you can use expressions like
12787
12788 @smallexample
12789 count = aml->GetOriginal(x, y)
12790 @end smallexample
12791
12792 @vindex this@r{, inside C@t{++} member functions}
12793 @cindex namespace in C@t{++}
12794 @item
12795 While a member function is active (in the selected stack frame), your
12796 expressions have the same namespace available as the member function;
12797 that is, @value{GDBN} allows implicit references to the class instance
12798 pointer @code{this} following the same rules as C@t{++}. @code{using}
12799 declarations in the current scope are also respected by @value{GDBN}.
12800
12801 @cindex call overloaded functions
12802 @cindex overloaded functions, calling
12803 @cindex type conversions in C@t{++}
12804 @item
12805 You can call overloaded functions; @value{GDBN} resolves the function
12806 call to the right definition, with some restrictions. @value{GDBN} does not
12807 perform overload resolution involving user-defined type conversions,
12808 calls to constructors, or instantiations of templates that do not exist
12809 in the program. It also cannot handle ellipsis argument lists or
12810 default arguments.
12811
12812 It does perform integral conversions and promotions, floating-point
12813 promotions, arithmetic conversions, pointer conversions, conversions of
12814 class objects to base classes, and standard conversions such as those of
12815 functions or arrays to pointers; it requires an exact match on the
12816 number of function arguments.
12817
12818 Overload resolution is always performed, unless you have specified
12819 @code{set overload-resolution off}. @xref{Debugging C Plus Plus,
12820 ,@value{GDBN} Features for C@t{++}}.
12821
12822 You must specify @code{set overload-resolution off} in order to use an
12823 explicit function signature to call an overloaded function, as in
12824 @smallexample
12825 p 'foo(char,int)'('x', 13)
12826 @end smallexample
12827
12828 The @value{GDBN} command-completion facility can simplify this;
12829 see @ref{Completion, ,Command Completion}.
12830
12831 @cindex reference declarations
12832 @item
12833 @value{GDBN} understands variables declared as C@t{++} references; you can use
12834 them in expressions just as you do in C@t{++} source---they are automatically
12835 dereferenced.
12836
12837 In the parameter list shown when @value{GDBN} displays a frame, the values of
12838 reference variables are not displayed (unlike other variables); this
12839 avoids clutter, since references are often used for large structures.
12840 The @emph{address} of a reference variable is always shown, unless
12841 you have specified @samp{set print address off}.
12842
12843 @item
12844 @value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
12845 expressions can use it just as expressions in your program do. Since
12846 one scope may be defined in another, you can use @code{::} repeatedly if
12847 necessary, for example in an expression like
12848 @samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
12849 resolving name scope by reference to source files, in both C and C@t{++}
12850 debugging (@pxref{Variables, ,Program Variables}).
12851
12852 @item
12853 @value{GDBN} performs argument-dependent lookup, following the C@t{++}
12854 specification.
12855 @end enumerate
12856
12857 @node C Defaults
12858 @subsubsection C and C@t{++} Defaults
12859
12860 @cindex C and C@t{++} defaults
12861
12862 If you allow @value{GDBN} to set type and range checking automatically, they
12863 both default to @code{off} whenever the working language changes to
12864 C or C@t{++}. This happens regardless of whether you or @value{GDBN}
12865 selects the working language.
12866
12867 If you allow @value{GDBN} to set the language automatically, it
12868 recognizes source files whose names end with @file{.c}, @file{.C}, or
12869 @file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
12870 these files, it sets the working language to C or C@t{++}.
12871 @xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
12872 for further details.
12873
12874 @c Type checking is (a) primarily motivated by Modula-2, and (b)
12875 @c unimplemented. If (b) changes, it might make sense to let this node
12876 @c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
12877
12878 @node C Checks
12879 @subsubsection C and C@t{++} Type and Range Checks
12880
12881 @cindex C and C@t{++} checks
12882
12883 By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
12884 is not used. However, if you turn type checking on, @value{GDBN}
12885 considers two variables type equivalent if:
12886
12887 @itemize @bullet
12888 @item
12889 The two variables are structured and have the same structure, union, or
12890 enumerated tag.
12891
12892 @item
12893 The two variables have the same type name, or types that have been
12894 declared equivalent through @code{typedef}.
12895
12896 @ignore
12897 @c leaving this out because neither J Gilmore nor R Pesch understand it.
12898 @c FIXME--beers?
12899 @item
12900 The two @code{struct}, @code{union}, or @code{enum} variables are
12901 declared in the same declaration. (Note: this may not be true for all C
12902 compilers.)
12903 @end ignore
12904 @end itemize
12905
12906 Range checking, if turned on, is done on mathematical operations. Array
12907 indices are not checked, since they are often used to index a pointer
12908 that is not itself an array.
12909
12910 @node Debugging C
12911 @subsubsection @value{GDBN} and C
12912
12913 The @code{set print union} and @code{show print union} commands apply to
12914 the @code{union} type. When set to @samp{on}, any @code{union} that is
12915 inside a @code{struct} or @code{class} is also printed. Otherwise, it
12916 appears as @samp{@{...@}}.
12917
12918 The @code{@@} operator aids in the debugging of dynamic arrays, formed
12919 with pointers and a memory allocation function. @xref{Expressions,
12920 ,Expressions}.
12921
12922 @node Debugging C Plus Plus
12923 @subsubsection @value{GDBN} Features for C@t{++}
12924
12925 @cindex commands for C@t{++}
12926
12927 Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
12928 designed specifically for use with C@t{++}. Here is a summary:
12929
12930 @table @code
12931 @cindex break in overloaded functions
12932 @item @r{breakpoint menus}
12933 When you want a breakpoint in a function whose name is overloaded,
12934 @value{GDBN} has the capability to display a menu of possible breakpoint
12935 locations to help you specify which function definition you want.
12936 @xref{Ambiguous Expressions,,Ambiguous Expressions}.
12937
12938 @cindex overloading in C@t{++}
12939 @item rbreak @var{regex}
12940 Setting breakpoints using regular expressions is helpful for setting
12941 breakpoints on overloaded functions that are not members of any special
12942 classes.
12943 @xref{Set Breaks, ,Setting Breakpoints}.
12944
12945 @cindex C@t{++} exception handling
12946 @item catch throw
12947 @itemx catch catch
12948 Debug C@t{++} exception handling using these commands. @xref{Set
12949 Catchpoints, , Setting Catchpoints}.
12950
12951 @cindex inheritance
12952 @item ptype @var{typename}
12953 Print inheritance relationships as well as other information for type
12954 @var{typename}.
12955 @xref{Symbols, ,Examining the Symbol Table}.
12956
12957 @item info vtbl @var{expression}.
12958 The @code{info vtbl} command can be used to display the virtual
12959 method tables of the object computed by @var{expression}. This shows
12960 one entry per virtual table; there may be multiple virtual tables when
12961 multiple inheritance is in use.
12962
12963 @cindex C@t{++} symbol display
12964 @item set print demangle
12965 @itemx show print demangle
12966 @itemx set print asm-demangle
12967 @itemx show print asm-demangle
12968 Control whether C@t{++} symbols display in their source form, both when
12969 displaying code as C@t{++} source and when displaying disassemblies.
12970 @xref{Print Settings, ,Print Settings}.
12971
12972 @item set print object
12973 @itemx show print object
12974 Choose whether to print derived (actual) or declared types of objects.
12975 @xref{Print Settings, ,Print Settings}.
12976
12977 @item set print vtbl
12978 @itemx show print vtbl
12979 Control the format for printing virtual function tables.
12980 @xref{Print Settings, ,Print Settings}.
12981 (The @code{vtbl} commands do not work on programs compiled with the HP
12982 ANSI C@t{++} compiler (@code{aCC}).)
12983
12984 @kindex set overload-resolution
12985 @cindex overloaded functions, overload resolution
12986 @item set overload-resolution on
12987 Enable overload resolution for C@t{++} expression evaluation. The default
12988 is on. For overloaded functions, @value{GDBN} evaluates the arguments
12989 and searches for a function whose signature matches the argument types,
12990 using the standard C@t{++} conversion rules (see @ref{C Plus Plus
12991 Expressions, ,C@t{++} Expressions}, for details).
12992 If it cannot find a match, it emits a message.
12993
12994 @item set overload-resolution off
12995 Disable overload resolution for C@t{++} expression evaluation. For
12996 overloaded functions that are not class member functions, @value{GDBN}
12997 chooses the first function of the specified name that it finds in the
12998 symbol table, whether or not its arguments are of the correct type. For
12999 overloaded functions that are class member functions, @value{GDBN}
13000 searches for a function whose signature @emph{exactly} matches the
13001 argument types.
13002
13003 @kindex show overload-resolution
13004 @item show overload-resolution
13005 Show the current setting of overload resolution.
13006
13007 @item @r{Overloaded symbol names}
13008 You can specify a particular definition of an overloaded symbol, using
13009 the same notation that is used to declare such symbols in C@t{++}: type
13010 @code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
13011 also use the @value{GDBN} command-line word completion facilities to list the
13012 available choices, or to finish the type list for you.
13013 @xref{Completion,, Command Completion}, for details on how to do this.
13014 @end table
13015
13016 @node Decimal Floating Point
13017 @subsubsection Decimal Floating Point format
13018 @cindex decimal floating point format
13019
13020 @value{GDBN} can examine, set and perform computations with numbers in
13021 decimal floating point format, which in the C language correspond to the
13022 @code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
13023 specified by the extension to support decimal floating-point arithmetic.
13024
13025 There are two encodings in use, depending on the architecture: BID (Binary
13026 Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
13027 PowerPC. @value{GDBN} will use the appropriate encoding for the configured
13028 target.
13029
13030 Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
13031 to manipulate decimal floating point numbers, it is not possible to convert
13032 (using a cast, for example) integers wider than 32-bit to decimal float.
13033
13034 In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
13035 point computations, error checking in decimal float operations ignores
13036 underflow, overflow and divide by zero exceptions.
13037
13038 In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
13039 to inspect @code{_Decimal128} values stored in floating point registers.
13040 See @ref{PowerPC,,PowerPC} for more details.
13041
13042 @node D
13043 @subsection D
13044
13045 @cindex D
13046 @value{GDBN} can be used to debug programs written in D and compiled with
13047 GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D
13048 specific feature --- dynamic arrays.
13049
13050 @node Objective-C
13051 @subsection Objective-C
13052
13053 @cindex Objective-C
13054 This section provides information about some commands and command
13055 options that are useful for debugging Objective-C code. See also
13056 @ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
13057 few more commands specific to Objective-C support.
13058
13059 @menu
13060 * Method Names in Commands::
13061 * The Print Command with Objective-C::
13062 @end menu
13063
13064 @node Method Names in Commands
13065 @subsubsection Method Names in Commands
13066
13067 The following commands have been extended to accept Objective-C method
13068 names as line specifications:
13069
13070 @kindex clear@r{, and Objective-C}
13071 @kindex break@r{, and Objective-C}
13072 @kindex info line@r{, and Objective-C}
13073 @kindex jump@r{, and Objective-C}
13074 @kindex list@r{, and Objective-C}
13075 @itemize
13076 @item @code{clear}
13077 @item @code{break}
13078 @item @code{info line}
13079 @item @code{jump}
13080 @item @code{list}
13081 @end itemize
13082
13083 A fully qualified Objective-C method name is specified as
13084
13085 @smallexample
13086 -[@var{Class} @var{methodName}]
13087 @end smallexample
13088
13089 where the minus sign is used to indicate an instance method and a
13090 plus sign (not shown) is used to indicate a class method. The class
13091 name @var{Class} and method name @var{methodName} are enclosed in
13092 brackets, similar to the way messages are specified in Objective-C
13093 source code. For example, to set a breakpoint at the @code{create}
13094 instance method of class @code{Fruit} in the program currently being
13095 debugged, enter:
13096
13097 @smallexample
13098 break -[Fruit create]
13099 @end smallexample
13100
13101 To list ten program lines around the @code{initialize} class method,
13102 enter:
13103
13104 @smallexample
13105 list +[NSText initialize]
13106 @end smallexample
13107
13108 In the current version of @value{GDBN}, the plus or minus sign is
13109 required. In future versions of @value{GDBN}, the plus or minus
13110 sign will be optional, but you can use it to narrow the search. It
13111 is also possible to specify just a method name:
13112
13113 @smallexample
13114 break create
13115 @end smallexample
13116
13117 You must specify the complete method name, including any colons. If
13118 your program's source files contain more than one @code{create} method,
13119 you'll be presented with a numbered list of classes that implement that
13120 method. Indicate your choice by number, or type @samp{0} to exit if
13121 none apply.
13122
13123 As another example, to clear a breakpoint established at the
13124 @code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
13125
13126 @smallexample
13127 clear -[NSWindow makeKeyAndOrderFront:]
13128 @end smallexample
13129
13130 @node The Print Command with Objective-C
13131 @subsubsection The Print Command With Objective-C
13132 @cindex Objective-C, print objects
13133 @kindex print-object
13134 @kindex po @r{(@code{print-object})}
13135
13136 The print command has also been extended to accept methods. For example:
13137
13138 @smallexample
13139 print -[@var{object} hash]
13140 @end smallexample
13141
13142 @cindex print an Objective-C object description
13143 @cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
13144 @noindent
13145 will tell @value{GDBN} to send the @code{hash} message to @var{object}
13146 and print the result. Also, an additional command has been added,
13147 @code{print-object} or @code{po} for short, which is meant to print
13148 the description of an object. However, this command may only work
13149 with certain Objective-C libraries that have a particular hook
13150 function, @code{_NSPrintForDebugger}, defined.
13151
13152 @node OpenCL C
13153 @subsection OpenCL C
13154
13155 @cindex OpenCL C
13156 This section provides information about @value{GDBN}s OpenCL C support.
13157
13158 @menu
13159 * OpenCL C Datatypes::
13160 * OpenCL C Expressions::
13161 * OpenCL C Operators::
13162 @end menu
13163
13164 @node OpenCL C Datatypes
13165 @subsubsection OpenCL C Datatypes
13166
13167 @cindex OpenCL C Datatypes
13168 @value{GDBN} supports the builtin scalar and vector datatypes specified
13169 by OpenCL 1.1. In addition the half- and double-precision floating point
13170 data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL
13171 extensions are also known to @value{GDBN}.
13172
13173 @node OpenCL C Expressions
13174 @subsubsection OpenCL C Expressions
13175
13176 @cindex OpenCL C Expressions
13177 @value{GDBN} supports accesses to vector components including the access as
13178 lvalue where possible. Since OpenCL C is based on C99 most C expressions
13179 supported by @value{GDBN} can be used as well.
13180
13181 @node OpenCL C Operators
13182 @subsubsection OpenCL C Operators
13183
13184 @cindex OpenCL C Operators
13185 @value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and
13186 vector data types.
13187
13188 @node Fortran
13189 @subsection Fortran
13190 @cindex Fortran-specific support in @value{GDBN}
13191
13192 @value{GDBN} can be used to debug programs written in Fortran, but it
13193 currently supports only the features of Fortran 77 language.
13194
13195 @cindex trailing underscore, in Fortran symbols
13196 Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
13197 among them) append an underscore to the names of variables and
13198 functions. When you debug programs compiled by those compilers, you
13199 will need to refer to variables and functions with a trailing
13200 underscore.
13201
13202 @menu
13203 * Fortran Operators:: Fortran operators and expressions
13204 * Fortran Defaults:: Default settings for Fortran
13205 * Special Fortran Commands:: Special @value{GDBN} commands for Fortran
13206 @end menu
13207
13208 @node Fortran Operators
13209 @subsubsection Fortran Operators and Expressions
13210
13211 @cindex Fortran operators and expressions
13212
13213 Operators must be defined on values of specific types. For instance,
13214 @code{+} is defined on numbers, but not on characters or other non-
13215 arithmetic types. Operators are often defined on groups of types.
13216
13217 @table @code
13218 @item **
13219 The exponentiation operator. It raises the first operand to the power
13220 of the second one.
13221
13222 @item :
13223 The range operator. Normally used in the form of array(low:high) to
13224 represent a section of array.
13225
13226 @item %
13227 The access component operator. Normally used to access elements in derived
13228 types. Also suitable for unions. As unions aren't part of regular Fortran,
13229 this can only happen when accessing a register that uses a gdbarch-defined
13230 union type.
13231 @end table
13232
13233 @node Fortran Defaults
13234 @subsubsection Fortran Defaults
13235
13236 @cindex Fortran Defaults
13237
13238 Fortran symbols are usually case-insensitive, so @value{GDBN} by
13239 default uses case-insensitive matches for Fortran symbols. You can
13240 change that with the @samp{set case-insensitive} command, see
13241 @ref{Symbols}, for the details.
13242
13243 @node Special Fortran Commands
13244 @subsubsection Special Fortran Commands
13245
13246 @cindex Special Fortran commands
13247
13248 @value{GDBN} has some commands to support Fortran-specific features,
13249 such as displaying common blocks.
13250
13251 @table @code
13252 @cindex @code{COMMON} blocks, Fortran
13253 @kindex info common
13254 @item info common @r{[}@var{common-name}@r{]}
13255 This command prints the values contained in the Fortran @code{COMMON}
13256 block whose name is @var{common-name}. With no argument, the names of
13257 all @code{COMMON} blocks visible at the current program location are
13258 printed.
13259 @end table
13260
13261 @node Pascal
13262 @subsection Pascal
13263
13264 @cindex Pascal support in @value{GDBN}, limitations
13265 Debugging Pascal programs which use sets, subranges, file variables, or
13266 nested functions does not currently work. @value{GDBN} does not support
13267 entering expressions, printing values, or similar features using Pascal
13268 syntax.
13269
13270 The Pascal-specific command @code{set print pascal_static-members}
13271 controls whether static members of Pascal objects are displayed.
13272 @xref{Print Settings, pascal_static-members}.
13273
13274 @node Modula-2
13275 @subsection Modula-2
13276
13277 @cindex Modula-2, @value{GDBN} support
13278
13279 The extensions made to @value{GDBN} to support Modula-2 only support
13280 output from the @sc{gnu} Modula-2 compiler (which is currently being
13281 developed). Other Modula-2 compilers are not currently supported, and
13282 attempting to debug executables produced by them is most likely
13283 to give an error as @value{GDBN} reads in the executable's symbol
13284 table.
13285
13286 @cindex expressions in Modula-2
13287 @menu
13288 * M2 Operators:: Built-in operators
13289 * Built-In Func/Proc:: Built-in functions and procedures
13290 * M2 Constants:: Modula-2 constants
13291 * M2 Types:: Modula-2 types
13292 * M2 Defaults:: Default settings for Modula-2
13293 * Deviations:: Deviations from standard Modula-2
13294 * M2 Checks:: Modula-2 type and range checks
13295 * M2 Scope:: The scope operators @code{::} and @code{.}
13296 * GDB/M2:: @value{GDBN} and Modula-2
13297 @end menu
13298
13299 @node M2 Operators
13300 @subsubsection Operators
13301 @cindex Modula-2 operators
13302
13303 Operators must be defined on values of specific types. For instance,
13304 @code{+} is defined on numbers, but not on structures. Operators are
13305 often defined on groups of types. For the purposes of Modula-2, the
13306 following definitions hold:
13307
13308 @itemize @bullet
13309
13310 @item
13311 @emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
13312 their subranges.
13313
13314 @item
13315 @emph{Character types} consist of @code{CHAR} and its subranges.
13316
13317 @item
13318 @emph{Floating-point types} consist of @code{REAL}.
13319
13320 @item
13321 @emph{Pointer types} consist of anything declared as @code{POINTER TO
13322 @var{type}}.
13323
13324 @item
13325 @emph{Scalar types} consist of all of the above.
13326
13327 @item
13328 @emph{Set types} consist of @code{SET} and @code{BITSET} types.
13329
13330 @item
13331 @emph{Boolean types} consist of @code{BOOLEAN}.
13332 @end itemize
13333
13334 @noindent
13335 The following operators are supported, and appear in order of
13336 increasing precedence:
13337
13338 @table @code
13339 @item ,
13340 Function argument or array index separator.
13341
13342 @item :=
13343 Assignment. The value of @var{var} @code{:=} @var{value} is
13344 @var{value}.
13345
13346 @item <@r{, }>
13347 Less than, greater than on integral, floating-point, or enumerated
13348 types.
13349
13350 @item <=@r{, }>=
13351 Less than or equal to, greater than or equal to
13352 on integral, floating-point and enumerated types, or set inclusion on
13353 set types. Same precedence as @code{<}.
13354
13355 @item =@r{, }<>@r{, }#
13356 Equality and two ways of expressing inequality, valid on scalar types.
13357 Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
13358 available for inequality, since @code{#} conflicts with the script
13359 comment character.
13360
13361 @item IN
13362 Set membership. Defined on set types and the types of their members.
13363 Same precedence as @code{<}.
13364
13365 @item OR
13366 Boolean disjunction. Defined on boolean types.
13367
13368 @item AND@r{, }&
13369 Boolean conjunction. Defined on boolean types.
13370
13371 @item @@
13372 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
13373
13374 @item +@r{, }-
13375 Addition and subtraction on integral and floating-point types, or union
13376 and difference on set types.
13377
13378 @item *
13379 Multiplication on integral and floating-point types, or set intersection
13380 on set types.
13381
13382 @item /
13383 Division on floating-point types, or symmetric set difference on set
13384 types. Same precedence as @code{*}.
13385
13386 @item DIV@r{, }MOD
13387 Integer division and remainder. Defined on integral types. Same
13388 precedence as @code{*}.
13389
13390 @item -
13391 Negative. Defined on @code{INTEGER} and @code{REAL} data.
13392
13393 @item ^
13394 Pointer dereferencing. Defined on pointer types.
13395
13396 @item NOT
13397 Boolean negation. Defined on boolean types. Same precedence as
13398 @code{^}.
13399
13400 @item .
13401 @code{RECORD} field selector. Defined on @code{RECORD} data. Same
13402 precedence as @code{^}.
13403
13404 @item []
13405 Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
13406
13407 @item ()
13408 Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
13409 as @code{^}.
13410
13411 @item ::@r{, }.
13412 @value{GDBN} and Modula-2 scope operators.
13413 @end table
13414
13415 @quotation
13416 @emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
13417 treats the use of the operator @code{IN}, or the use of operators
13418 @code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
13419 @code{<=}, and @code{>=} on sets as an error.
13420 @end quotation
13421
13422
13423 @node Built-In Func/Proc
13424 @subsubsection Built-in Functions and Procedures
13425 @cindex Modula-2 built-ins
13426
13427 Modula-2 also makes available several built-in procedures and functions.
13428 In describing these, the following metavariables are used:
13429
13430 @table @var
13431
13432 @item a
13433 represents an @code{ARRAY} variable.
13434
13435 @item c
13436 represents a @code{CHAR} constant or variable.
13437
13438 @item i
13439 represents a variable or constant of integral type.
13440
13441 @item m
13442 represents an identifier that belongs to a set. Generally used in the
13443 same function with the metavariable @var{s}. The type of @var{s} should
13444 be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
13445
13446 @item n
13447 represents a variable or constant of integral or floating-point type.
13448
13449 @item r
13450 represents a variable or constant of floating-point type.
13451
13452 @item t
13453 represents a type.
13454
13455 @item v
13456 represents a variable.
13457
13458 @item x
13459 represents a variable or constant of one of many types. See the
13460 explanation of the function for details.
13461 @end table
13462
13463 All Modula-2 built-in procedures also return a result, described below.
13464
13465 @table @code
13466 @item ABS(@var{n})
13467 Returns the absolute value of @var{n}.
13468
13469 @item CAP(@var{c})
13470 If @var{c} is a lower case letter, it returns its upper case
13471 equivalent, otherwise it returns its argument.
13472
13473 @item CHR(@var{i})
13474 Returns the character whose ordinal value is @var{i}.
13475
13476 @item DEC(@var{v})
13477 Decrements the value in the variable @var{v} by one. Returns the new value.
13478
13479 @item DEC(@var{v},@var{i})
13480 Decrements the value in the variable @var{v} by @var{i}. Returns the
13481 new value.
13482
13483 @item EXCL(@var{m},@var{s})
13484 Removes the element @var{m} from the set @var{s}. Returns the new
13485 set.
13486
13487 @item FLOAT(@var{i})
13488 Returns the floating point equivalent of the integer @var{i}.
13489
13490 @item HIGH(@var{a})
13491 Returns the index of the last member of @var{a}.
13492
13493 @item INC(@var{v})
13494 Increments the value in the variable @var{v} by one. Returns the new value.
13495
13496 @item INC(@var{v},@var{i})
13497 Increments the value in the variable @var{v} by @var{i}. Returns the
13498 new value.
13499
13500 @item INCL(@var{m},@var{s})
13501 Adds the element @var{m} to the set @var{s} if it is not already
13502 there. Returns the new set.
13503
13504 @item MAX(@var{t})
13505 Returns the maximum value of the type @var{t}.
13506
13507 @item MIN(@var{t})
13508 Returns the minimum value of the type @var{t}.
13509
13510 @item ODD(@var{i})
13511 Returns boolean TRUE if @var{i} is an odd number.
13512
13513 @item ORD(@var{x})
13514 Returns the ordinal value of its argument. For example, the ordinal
13515 value of a character is its @sc{ascii} value (on machines supporting the
13516 @sc{ascii} character set). @var{x} must be of an ordered type, which include
13517 integral, character and enumerated types.
13518
13519 @item SIZE(@var{x})
13520 Returns the size of its argument. @var{x} can be a variable or a type.
13521
13522 @item TRUNC(@var{r})
13523 Returns the integral part of @var{r}.
13524
13525 @item TSIZE(@var{x})
13526 Returns the size of its argument. @var{x} can be a variable or a type.
13527
13528 @item VAL(@var{t},@var{i})
13529 Returns the member of the type @var{t} whose ordinal value is @var{i}.
13530 @end table
13531
13532 @quotation
13533 @emph{Warning:} Sets and their operations are not yet supported, so
13534 @value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
13535 an error.
13536 @end quotation
13537
13538 @cindex Modula-2 constants
13539 @node M2 Constants
13540 @subsubsection Constants
13541
13542 @value{GDBN} allows you to express the constants of Modula-2 in the following
13543 ways:
13544
13545 @itemize @bullet
13546
13547 @item
13548 Integer constants are simply a sequence of digits. When used in an
13549 expression, a constant is interpreted to be type-compatible with the
13550 rest of the expression. Hexadecimal integers are specified by a
13551 trailing @samp{H}, and octal integers by a trailing @samp{B}.
13552
13553 @item
13554 Floating point constants appear as a sequence of digits, followed by a
13555 decimal point and another sequence of digits. An optional exponent can
13556 then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
13557 @samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
13558 digits of the floating point constant must be valid decimal (base 10)
13559 digits.
13560
13561 @item
13562 Character constants consist of a single character enclosed by a pair of
13563 like quotes, either single (@code{'}) or double (@code{"}). They may
13564 also be expressed by their ordinal value (their @sc{ascii} value, usually)
13565 followed by a @samp{C}.
13566
13567 @item
13568 String constants consist of a sequence of characters enclosed by a
13569 pair of like quotes, either single (@code{'}) or double (@code{"}).
13570 Escape sequences in the style of C are also allowed. @xref{C
13571 Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
13572 sequences.
13573
13574 @item
13575 Enumerated constants consist of an enumerated identifier.
13576
13577 @item
13578 Boolean constants consist of the identifiers @code{TRUE} and
13579 @code{FALSE}.
13580
13581 @item
13582 Pointer constants consist of integral values only.
13583
13584 @item
13585 Set constants are not yet supported.
13586 @end itemize
13587
13588 @node M2 Types
13589 @subsubsection Modula-2 Types
13590 @cindex Modula-2 types
13591
13592 Currently @value{GDBN} can print the following data types in Modula-2
13593 syntax: array types, record types, set types, pointer types, procedure
13594 types, enumerated types, subrange types and base types. You can also
13595 print the contents of variables declared using these type.
13596 This section gives a number of simple source code examples together with
13597 sample @value{GDBN} sessions.
13598
13599 The first example contains the following section of code:
13600
13601 @smallexample
13602 VAR
13603 s: SET OF CHAR ;
13604 r: [20..40] ;
13605 @end smallexample
13606
13607 @noindent
13608 and you can request @value{GDBN} to interrogate the type and value of
13609 @code{r} and @code{s}.
13610
13611 @smallexample
13612 (@value{GDBP}) print s
13613 @{'A'..'C', 'Z'@}
13614 (@value{GDBP}) ptype s
13615 SET OF CHAR
13616 (@value{GDBP}) print r
13617 21
13618 (@value{GDBP}) ptype r
13619 [20..40]
13620 @end smallexample
13621
13622 @noindent
13623 Likewise if your source code declares @code{s} as:
13624
13625 @smallexample
13626 VAR
13627 s: SET ['A'..'Z'] ;
13628 @end smallexample
13629
13630 @noindent
13631 then you may query the type of @code{s} by:
13632
13633 @smallexample
13634 (@value{GDBP}) ptype s
13635 type = SET ['A'..'Z']
13636 @end smallexample
13637
13638 @noindent
13639 Note that at present you cannot interactively manipulate set
13640 expressions using the debugger.
13641
13642 The following example shows how you might declare an array in Modula-2
13643 and how you can interact with @value{GDBN} to print its type and contents:
13644
13645 @smallexample
13646 VAR
13647 s: ARRAY [-10..10] OF CHAR ;
13648 @end smallexample
13649
13650 @smallexample
13651 (@value{GDBP}) ptype s
13652 ARRAY [-10..10] OF CHAR
13653 @end smallexample
13654
13655 Note that the array handling is not yet complete and although the type
13656 is printed correctly, expression handling still assumes that all
13657 arrays have a lower bound of zero and not @code{-10} as in the example
13658 above.
13659
13660 Here are some more type related Modula-2 examples:
13661
13662 @smallexample
13663 TYPE
13664 colour = (blue, red, yellow, green) ;
13665 t = [blue..yellow] ;
13666 VAR
13667 s: t ;
13668 BEGIN
13669 s := blue ;
13670 @end smallexample
13671
13672 @noindent
13673 The @value{GDBN} interaction shows how you can query the data type
13674 and value of a variable.
13675
13676 @smallexample
13677 (@value{GDBP}) print s
13678 $1 = blue
13679 (@value{GDBP}) ptype t
13680 type = [blue..yellow]
13681 @end smallexample
13682
13683 @noindent
13684 In this example a Modula-2 array is declared and its contents
13685 displayed. Observe that the contents are written in the same way as
13686 their @code{C} counterparts.
13687
13688 @smallexample
13689 VAR
13690 s: ARRAY [1..5] OF CARDINAL ;
13691 BEGIN
13692 s[1] := 1 ;
13693 @end smallexample
13694
13695 @smallexample
13696 (@value{GDBP}) print s
13697 $1 = @{1, 0, 0, 0, 0@}
13698 (@value{GDBP}) ptype s
13699 type = ARRAY [1..5] OF CARDINAL
13700 @end smallexample
13701
13702 The Modula-2 language interface to @value{GDBN} also understands
13703 pointer types as shown in this example:
13704
13705 @smallexample
13706 VAR
13707 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
13708 BEGIN
13709 NEW(s) ;
13710 s^[1] := 1 ;
13711 @end smallexample
13712
13713 @noindent
13714 and you can request that @value{GDBN} describes the type of @code{s}.
13715
13716 @smallexample
13717 (@value{GDBP}) ptype s
13718 type = POINTER TO ARRAY [1..5] OF CARDINAL
13719 @end smallexample
13720
13721 @value{GDBN} handles compound types as we can see in this example.
13722 Here we combine array types, record types, pointer types and subrange
13723 types:
13724
13725 @smallexample
13726 TYPE
13727 foo = RECORD
13728 f1: CARDINAL ;
13729 f2: CHAR ;
13730 f3: myarray ;
13731 END ;
13732
13733 myarray = ARRAY myrange OF CARDINAL ;
13734 myrange = [-2..2] ;
13735 VAR
13736 s: POINTER TO ARRAY myrange OF foo ;
13737 @end smallexample
13738
13739 @noindent
13740 and you can ask @value{GDBN} to describe the type of @code{s} as shown
13741 below.
13742
13743 @smallexample
13744 (@value{GDBP}) ptype s
13745 type = POINTER TO ARRAY [-2..2] OF foo = RECORD
13746 f1 : CARDINAL;
13747 f2 : CHAR;
13748 f3 : ARRAY [-2..2] OF CARDINAL;
13749 END
13750 @end smallexample
13751
13752 @node M2 Defaults
13753 @subsubsection Modula-2 Defaults
13754 @cindex Modula-2 defaults
13755
13756 If type and range checking are set automatically by @value{GDBN}, they
13757 both default to @code{on} whenever the working language changes to
13758 Modula-2. This happens regardless of whether you or @value{GDBN}
13759 selected the working language.
13760
13761 If you allow @value{GDBN} to set the language automatically, then entering
13762 code compiled from a file whose name ends with @file{.mod} sets the
13763 working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
13764 Infer the Source Language}, for further details.
13765
13766 @node Deviations
13767 @subsubsection Deviations from Standard Modula-2
13768 @cindex Modula-2, deviations from
13769
13770 A few changes have been made to make Modula-2 programs easier to debug.
13771 This is done primarily via loosening its type strictness:
13772
13773 @itemize @bullet
13774 @item
13775 Unlike in standard Modula-2, pointer constants can be formed by
13776 integers. This allows you to modify pointer variables during
13777 debugging. (In standard Modula-2, the actual address contained in a
13778 pointer variable is hidden from you; it can only be modified
13779 through direct assignment to another pointer variable or expression that
13780 returned a pointer.)
13781
13782 @item
13783 C escape sequences can be used in strings and characters to represent
13784 non-printable characters. @value{GDBN} prints out strings with these
13785 escape sequences embedded. Single non-printable characters are
13786 printed using the @samp{CHR(@var{nnn})} format.
13787
13788 @item
13789 The assignment operator (@code{:=}) returns the value of its right-hand
13790 argument.
13791
13792 @item
13793 All built-in procedures both modify @emph{and} return their argument.
13794 @end itemize
13795
13796 @node M2 Checks
13797 @subsubsection Modula-2 Type and Range Checks
13798 @cindex Modula-2 checks
13799
13800 @quotation
13801 @emph{Warning:} in this release, @value{GDBN} does not yet perform type or
13802 range checking.
13803 @end quotation
13804 @c FIXME remove warning when type/range checks added
13805
13806 @value{GDBN} considers two Modula-2 variables type equivalent if:
13807
13808 @itemize @bullet
13809 @item
13810 They are of types that have been declared equivalent via a @code{TYPE
13811 @var{t1} = @var{t2}} statement
13812
13813 @item
13814 They have been declared on the same line. (Note: This is true of the
13815 @sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
13816 @end itemize
13817
13818 As long as type checking is enabled, any attempt to combine variables
13819 whose types are not equivalent is an error.
13820
13821 Range checking is done on all mathematical operations, assignment, array
13822 index bounds, and all built-in functions and procedures.
13823
13824 @node M2 Scope
13825 @subsubsection The Scope Operators @code{::} and @code{.}
13826 @cindex scope
13827 @cindex @code{.}, Modula-2 scope operator
13828 @cindex colon, doubled as scope operator
13829 @ifinfo
13830 @vindex colon-colon@r{, in Modula-2}
13831 @c Info cannot handle :: but TeX can.
13832 @end ifinfo
13833 @ifnotinfo
13834 @vindex ::@r{, in Modula-2}
13835 @end ifnotinfo
13836
13837 There are a few subtle differences between the Modula-2 scope operator
13838 (@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
13839 similar syntax:
13840
13841 @smallexample
13842
13843 @var{module} . @var{id}
13844 @var{scope} :: @var{id}
13845 @end smallexample
13846
13847 @noindent
13848 where @var{scope} is the name of a module or a procedure,
13849 @var{module} the name of a module, and @var{id} is any declared
13850 identifier within your program, except another module.
13851
13852 Using the @code{::} operator makes @value{GDBN} search the scope
13853 specified by @var{scope} for the identifier @var{id}. If it is not
13854 found in the specified scope, then @value{GDBN} searches all scopes
13855 enclosing the one specified by @var{scope}.
13856
13857 Using the @code{.} operator makes @value{GDBN} search the current scope for
13858 the identifier specified by @var{id} that was imported from the
13859 definition module specified by @var{module}. With this operator, it is
13860 an error if the identifier @var{id} was not imported from definition
13861 module @var{module}, or if @var{id} is not an identifier in
13862 @var{module}.
13863
13864 @node GDB/M2
13865 @subsubsection @value{GDBN} and Modula-2
13866
13867 Some @value{GDBN} commands have little use when debugging Modula-2 programs.
13868 Five subcommands of @code{set print} and @code{show print} apply
13869 specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
13870 @samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
13871 apply to C@t{++}, and the last to the C @code{union} type, which has no direct
13872 analogue in Modula-2.
13873
13874 The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
13875 with any language, is not useful with Modula-2. Its
13876 intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
13877 created in Modula-2 as they can in C or C@t{++}. However, because an
13878 address can be specified by an integral constant, the construct
13879 @samp{@{@var{type}@}@var{adrexp}} is still useful.
13880
13881 @cindex @code{#} in Modula-2
13882 In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
13883 interpreted as the beginning of a comment. Use @code{<>} instead.
13884
13885 @node Ada
13886 @subsection Ada
13887 @cindex Ada
13888
13889 The extensions made to @value{GDBN} for Ada only support
13890 output from the @sc{gnu} Ada (GNAT) compiler.
13891 Other Ada compilers are not currently supported, and
13892 attempting to debug executables produced by them is most likely
13893 to be difficult.
13894
13895
13896 @cindex expressions in Ada
13897 @menu
13898 * Ada Mode Intro:: General remarks on the Ada syntax
13899 and semantics supported by Ada mode
13900 in @value{GDBN}.
13901 * Omissions from Ada:: Restrictions on the Ada expression syntax.
13902 * Additions to Ada:: Extensions of the Ada expression syntax.
13903 * Stopping Before Main Program:: Debugging the program during elaboration.
13904 * Ada Tasks:: Listing and setting breakpoints in tasks.
13905 * Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
13906 * Ravenscar Profile:: Tasking Support when using the Ravenscar
13907 Profile
13908 * Ada Glitches:: Known peculiarities of Ada mode.
13909 @end menu
13910
13911 @node Ada Mode Intro
13912 @subsubsection Introduction
13913 @cindex Ada mode, general
13914
13915 The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
13916 syntax, with some extensions.
13917 The philosophy behind the design of this subset is
13918
13919 @itemize @bullet
13920 @item
13921 That @value{GDBN} should provide basic literals and access to operations for
13922 arithmetic, dereferencing, field selection, indexing, and subprogram calls,
13923 leaving more sophisticated computations to subprograms written into the
13924 program (which therefore may be called from @value{GDBN}).
13925
13926 @item
13927 That type safety and strict adherence to Ada language restrictions
13928 are not particularly important to the @value{GDBN} user.
13929
13930 @item
13931 That brevity is important to the @value{GDBN} user.
13932 @end itemize
13933
13934 Thus, for brevity, the debugger acts as if all names declared in
13935 user-written packages are directly visible, even if they are not visible
13936 according to Ada rules, thus making it unnecessary to fully qualify most
13937 names with their packages, regardless of context. Where this causes
13938 ambiguity, @value{GDBN} asks the user's intent.
13939
13940 The debugger will start in Ada mode if it detects an Ada main program.
13941 As for other languages, it will enter Ada mode when stopped in a program that
13942 was translated from an Ada source file.
13943
13944 While in Ada mode, you may use `@t{--}' for comments. This is useful
13945 mostly for documenting command files. The standard @value{GDBN} comment
13946 (@samp{#}) still works at the beginning of a line in Ada mode, but not in the
13947 middle (to allow based literals).
13948
13949 The debugger supports limited overloading. Given a subprogram call in which
13950 the function symbol has multiple definitions, it will use the number of
13951 actual parameters and some information about their types to attempt to narrow
13952 the set of definitions. It also makes very limited use of context, preferring
13953 procedures to functions in the context of the @code{call} command, and
13954 functions to procedures elsewhere.
13955
13956 @node Omissions from Ada
13957 @subsubsection Omissions from Ada
13958 @cindex Ada, omissions from
13959
13960 Here are the notable omissions from the subset:
13961
13962 @itemize @bullet
13963 @item
13964 Only a subset of the attributes are supported:
13965
13966 @itemize @minus
13967 @item
13968 @t{'First}, @t{'Last}, and @t{'Length}
13969 on array objects (not on types and subtypes).
13970
13971 @item
13972 @t{'Min} and @t{'Max}.
13973
13974 @item
13975 @t{'Pos} and @t{'Val}.
13976
13977 @item
13978 @t{'Tag}.
13979
13980 @item
13981 @t{'Range} on array objects (not subtypes), but only as the right
13982 operand of the membership (@code{in}) operator.
13983
13984 @item
13985 @t{'Access}, @t{'Unchecked_Access}, and
13986 @t{'Unrestricted_Access} (a GNAT extension).
13987
13988 @item
13989 @t{'Address}.
13990 @end itemize
13991
13992 @item
13993 The names in
13994 @code{Characters.Latin_1} are not available and
13995 concatenation is not implemented. Thus, escape characters in strings are
13996 not currently available.
13997
13998 @item
13999 Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
14000 equality of representations. They will generally work correctly
14001 for strings and arrays whose elements have integer or enumeration types.
14002 They may not work correctly for arrays whose element
14003 types have user-defined equality, for arrays of real values
14004 (in particular, IEEE-conformant floating point, because of negative
14005 zeroes and NaNs), and for arrays whose elements contain unused bits with
14006 indeterminate values.
14007
14008 @item
14009 The other component-by-component array operations (@code{and}, @code{or},
14010 @code{xor}, @code{not}, and relational tests other than equality)
14011 are not implemented.
14012
14013 @item
14014 @cindex array aggregates (Ada)
14015 @cindex record aggregates (Ada)
14016 @cindex aggregates (Ada)
14017 There is limited support for array and record aggregates. They are
14018 permitted only on the right sides of assignments, as in these examples:
14019
14020 @smallexample
14021 (@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
14022 (@value{GDBP}) set An_Array := (1, others => 0)
14023 (@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
14024 (@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
14025 (@value{GDBP}) set A_Record := (1, "Peter", True);
14026 (@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
14027 @end smallexample
14028
14029 Changing a
14030 discriminant's value by assigning an aggregate has an
14031 undefined effect if that discriminant is used within the record.
14032 However, you can first modify discriminants by directly assigning to
14033 them (which normally would not be allowed in Ada), and then performing an
14034 aggregate assignment. For example, given a variable @code{A_Rec}
14035 declared to have a type such as:
14036
14037 @smallexample
14038 type Rec (Len : Small_Integer := 0) is record
14039 Id : Integer;
14040 Vals : IntArray (1 .. Len);
14041 end record;
14042 @end smallexample
14043
14044 you can assign a value with a different size of @code{Vals} with two
14045 assignments:
14046
14047 @smallexample
14048 (@value{GDBP}) set A_Rec.Len := 4
14049 (@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
14050 @end smallexample
14051
14052 As this example also illustrates, @value{GDBN} is very loose about the usual
14053 rules concerning aggregates. You may leave out some of the
14054 components of an array or record aggregate (such as the @code{Len}
14055 component in the assignment to @code{A_Rec} above); they will retain their
14056 original values upon assignment. You may freely use dynamic values as
14057 indices in component associations. You may even use overlapping or
14058 redundant component associations, although which component values are
14059 assigned in such cases is not defined.
14060
14061 @item
14062 Calls to dispatching subprograms are not implemented.
14063
14064 @item
14065 The overloading algorithm is much more limited (i.e., less selective)
14066 than that of real Ada. It makes only limited use of the context in
14067 which a subexpression appears to resolve its meaning, and it is much
14068 looser in its rules for allowing type matches. As a result, some
14069 function calls will be ambiguous, and the user will be asked to choose
14070 the proper resolution.
14071
14072 @item
14073 The @code{new} operator is not implemented.
14074
14075 @item
14076 Entry calls are not implemented.
14077
14078 @item
14079 Aside from printing, arithmetic operations on the native VAX floating-point
14080 formats are not supported.
14081
14082 @item
14083 It is not possible to slice a packed array.
14084
14085 @item
14086 The names @code{True} and @code{False}, when not part of a qualified name,
14087 are interpreted as if implicitly prefixed by @code{Standard}, regardless of
14088 context.
14089 Should your program
14090 redefine these names in a package or procedure (at best a dubious practice),
14091 you will have to use fully qualified names to access their new definitions.
14092 @end itemize
14093
14094 @node Additions to Ada
14095 @subsubsection Additions to Ada
14096 @cindex Ada, deviations from
14097
14098 As it does for other languages, @value{GDBN} makes certain generic
14099 extensions to Ada (@pxref{Expressions}):
14100
14101 @itemize @bullet
14102 @item
14103 If the expression @var{E} is a variable residing in memory (typically
14104 a local variable or array element) and @var{N} is a positive integer,
14105 then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
14106 @var{N}-1 adjacent variables following it in memory as an array. In
14107 Ada, this operator is generally not necessary, since its prime use is
14108 in displaying parts of an array, and slicing will usually do this in
14109 Ada. However, there are occasional uses when debugging programs in
14110 which certain debugging information has been optimized away.
14111
14112 @item
14113 @code{@var{B}::@var{var}} means ``the variable named @var{var} that
14114 appears in function or file @var{B}.'' When @var{B} is a file name,
14115 you must typically surround it in single quotes.
14116
14117 @item
14118 The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
14119 @var{type} that appears at address @var{addr}.''
14120
14121 @item
14122 A name starting with @samp{$} is a convenience variable
14123 (@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
14124 @end itemize
14125
14126 In addition, @value{GDBN} provides a few other shortcuts and outright
14127 additions specific to Ada:
14128
14129 @itemize @bullet
14130 @item
14131 The assignment statement is allowed as an expression, returning
14132 its right-hand operand as its value. Thus, you may enter
14133
14134 @smallexample
14135 (@value{GDBP}) set x := y + 3
14136 (@value{GDBP}) print A(tmp := y + 1)
14137 @end smallexample
14138
14139 @item
14140 The semicolon is allowed as an ``operator,'' returning as its value
14141 the value of its right-hand operand.
14142 This allows, for example,
14143 complex conditional breaks:
14144
14145 @smallexample
14146 (@value{GDBP}) break f
14147 (@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
14148 @end smallexample
14149
14150 @item
14151 Rather than use catenation and symbolic character names to introduce special
14152 characters into strings, one may instead use a special bracket notation,
14153 which is also used to print strings. A sequence of characters of the form
14154 @samp{["@var{XX}"]} within a string or character literal denotes the
14155 (single) character whose numeric encoding is @var{XX} in hexadecimal. The
14156 sequence of characters @samp{["""]} also denotes a single quotation mark
14157 in strings. For example,
14158 @smallexample
14159 "One line.["0a"]Next line.["0a"]"
14160 @end smallexample
14161 @noindent
14162 contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
14163 after each period.
14164
14165 @item
14166 The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
14167 @t{'Max} is optional (and is ignored in any case). For example, it is valid
14168 to write
14169
14170 @smallexample
14171 (@value{GDBP}) print 'max(x, y)
14172 @end smallexample
14173
14174 @item
14175 When printing arrays, @value{GDBN} uses positional notation when the
14176 array has a lower bound of 1, and uses a modified named notation otherwise.
14177 For example, a one-dimensional array of three integers with a lower bound
14178 of 3 might print as
14179
14180 @smallexample
14181 (3 => 10, 17, 1)
14182 @end smallexample
14183
14184 @noindent
14185 That is, in contrast to valid Ada, only the first component has a @code{=>}
14186 clause.
14187
14188 @item
14189 You may abbreviate attributes in expressions with any unique,
14190 multi-character subsequence of
14191 their names (an exact match gets preference).
14192 For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
14193 in place of @t{a'length}.
14194
14195 @item
14196 @cindex quoting Ada internal identifiers
14197 Since Ada is case-insensitive, the debugger normally maps identifiers you type
14198 to lower case. The GNAT compiler uses upper-case characters for
14199 some of its internal identifiers, which are normally of no interest to users.
14200 For the rare occasions when you actually have to look at them,
14201 enclose them in angle brackets to avoid the lower-case mapping.
14202 For example,
14203 @smallexample
14204 (@value{GDBP}) print <JMPBUF_SAVE>[0]
14205 @end smallexample
14206
14207 @item
14208 Printing an object of class-wide type or dereferencing an
14209 access-to-class-wide value will display all the components of the object's
14210 specific type (as indicated by its run-time tag). Likewise, component
14211 selection on such a value will operate on the specific type of the
14212 object.
14213
14214 @end itemize
14215
14216 @node Stopping Before Main Program
14217 @subsubsection Stopping at the Very Beginning
14218
14219 @cindex breakpointing Ada elaboration code
14220 It is sometimes necessary to debug the program during elaboration, and
14221 before reaching the main procedure.
14222 As defined in the Ada Reference
14223 Manual, the elaboration code is invoked from a procedure called
14224 @code{adainit}. To run your program up to the beginning of
14225 elaboration, simply use the following two commands:
14226 @code{tbreak adainit} and @code{run}.
14227
14228 @node Ada Tasks
14229 @subsubsection Extensions for Ada Tasks
14230 @cindex Ada, tasking
14231
14232 Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
14233 @value{GDBN} provides the following task-related commands:
14234
14235 @table @code
14236 @kindex info tasks
14237 @item info tasks
14238 This command shows a list of current Ada tasks, as in the following example:
14239
14240
14241 @smallexample
14242 @iftex
14243 @leftskip=0.5cm
14244 @end iftex
14245 (@value{GDBP}) info tasks
14246 ID TID P-ID Pri State Name
14247 1 8088000 0 15 Child Activation Wait main_task
14248 2 80a4000 1 15 Accept Statement b
14249 3 809a800 1 15 Child Activation Wait a
14250 * 4 80ae800 3 15 Runnable c
14251
14252 @end smallexample
14253
14254 @noindent
14255 In this listing, the asterisk before the last task indicates it to be the
14256 task currently being inspected.
14257
14258 @table @asis
14259 @item ID
14260 Represents @value{GDBN}'s internal task number.
14261
14262 @item TID
14263 The Ada task ID.
14264
14265 @item P-ID
14266 The parent's task ID (@value{GDBN}'s internal task number).
14267
14268 @item Pri
14269 The base priority of the task.
14270
14271 @item State
14272 Current state of the task.
14273
14274 @table @code
14275 @item Unactivated
14276 The task has been created but has not been activated. It cannot be
14277 executing.
14278
14279 @item Runnable
14280 The task is not blocked for any reason known to Ada. (It may be waiting
14281 for a mutex, though.) It is conceptually "executing" in normal mode.
14282
14283 @item Terminated
14284 The task is terminated, in the sense of ARM 9.3 (5). Any dependents
14285 that were waiting on terminate alternatives have been awakened and have
14286 terminated themselves.
14287
14288 @item Child Activation Wait
14289 The task is waiting for created tasks to complete activation.
14290
14291 @item Accept Statement
14292 The task is waiting on an accept or selective wait statement.
14293
14294 @item Waiting on entry call
14295 The task is waiting on an entry call.
14296
14297 @item Async Select Wait
14298 The task is waiting to start the abortable part of an asynchronous
14299 select statement.
14300
14301 @item Delay Sleep
14302 The task is waiting on a select statement with only a delay
14303 alternative open.
14304
14305 @item Child Termination Wait
14306 The task is sleeping having completed a master within itself, and is
14307 waiting for the tasks dependent on that master to become terminated or
14308 waiting on a terminate Phase.
14309
14310 @item Wait Child in Term Alt
14311 The task is sleeping waiting for tasks on terminate alternatives to
14312 finish terminating.
14313
14314 @item Accepting RV with @var{taskno}
14315 The task is accepting a rendez-vous with the task @var{taskno}.
14316 @end table
14317
14318 @item Name
14319 Name of the task in the program.
14320
14321 @end table
14322
14323 @kindex info task @var{taskno}
14324 @item info task @var{taskno}
14325 This command shows detailled informations on the specified task, as in
14326 the following example:
14327 @smallexample
14328 @iftex
14329 @leftskip=0.5cm
14330 @end iftex
14331 (@value{GDBP}) info tasks
14332 ID TID P-ID Pri State Name
14333 1 8077880 0 15 Child Activation Wait main_task
14334 * 2 807c468 1 15 Runnable task_1
14335 (@value{GDBP}) info task 2
14336 Ada Task: 0x807c468
14337 Name: task_1
14338 Thread: 0x807f378
14339 Parent: 1 (main_task)
14340 Base Priority: 15
14341 State: Runnable
14342 @end smallexample
14343
14344 @item task
14345 @kindex task@r{ (Ada)}
14346 @cindex current Ada task ID
14347 This command prints the ID of the current task.
14348
14349 @smallexample
14350 @iftex
14351 @leftskip=0.5cm
14352 @end iftex
14353 (@value{GDBP}) info tasks
14354 ID TID P-ID Pri State Name
14355 1 8077870 0 15 Child Activation Wait main_task
14356 * 2 807c458 1 15 Runnable t
14357 (@value{GDBP}) task
14358 [Current task is 2]
14359 @end smallexample
14360
14361 @item task @var{taskno}
14362 @cindex Ada task switching
14363 This command is like the @code{thread @var{threadno}}
14364 command (@pxref{Threads}). It switches the context of debugging
14365 from the current task to the given task.
14366
14367 @smallexample
14368 @iftex
14369 @leftskip=0.5cm
14370 @end iftex
14371 (@value{GDBP}) info tasks
14372 ID TID P-ID Pri State Name
14373 1 8077870 0 15 Child Activation Wait main_task
14374 * 2 807c458 1 15 Runnable t
14375 (@value{GDBP}) task 1
14376 [Switching to task 1]
14377 #0 0x8067726 in pthread_cond_wait ()
14378 (@value{GDBP}) bt
14379 #0 0x8067726 in pthread_cond_wait ()
14380 #1 0x8056714 in system.os_interface.pthread_cond_wait ()
14381 #2 0x805cb63 in system.task_primitives.operations.sleep ()
14382 #3 0x806153e in system.tasking.stages.activate_tasks ()
14383 #4 0x804aacc in un () at un.adb:5
14384 @end smallexample
14385
14386 @item break @var{linespec} task @var{taskno}
14387 @itemx break @var{linespec} task @var{taskno} if @dots{}
14388 @cindex breakpoints and tasks, in Ada
14389 @cindex task breakpoints, in Ada
14390 @kindex break @dots{} task @var{taskno}@r{ (Ada)}
14391 These commands are like the @code{break @dots{} thread @dots{}}
14392 command (@pxref{Thread Stops}).
14393 @var{linespec} specifies source lines, as described
14394 in @ref{Specify Location}.
14395
14396 Use the qualifier @samp{task @var{taskno}} with a breakpoint command
14397 to specify that you only want @value{GDBN} to stop the program when a
14398 particular Ada task reaches this breakpoint. @var{taskno} is one of the
14399 numeric task identifiers assigned by @value{GDBN}, shown in the first
14400 column of the @samp{info tasks} display.
14401
14402 If you do not specify @samp{task @var{taskno}} when you set a
14403 breakpoint, the breakpoint applies to @emph{all} tasks of your
14404 program.
14405
14406 You can use the @code{task} qualifier on conditional breakpoints as
14407 well; in this case, place @samp{task @var{taskno}} before the
14408 breakpoint condition (before the @code{if}).
14409
14410 For example,
14411
14412 @smallexample
14413 @iftex
14414 @leftskip=0.5cm
14415 @end iftex
14416 (@value{GDBP}) info tasks
14417 ID TID P-ID Pri State Name
14418 1 140022020 0 15 Child Activation Wait main_task
14419 2 140045060 1 15 Accept/Select Wait t2
14420 3 140044840 1 15 Runnable t1
14421 * 4 140056040 1 15 Runnable t3
14422 (@value{GDBP}) b 15 task 2
14423 Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
14424 (@value{GDBP}) cont
14425 Continuing.
14426 task # 1 running
14427 task # 2 running
14428
14429 Breakpoint 5, test_task_debug () at test_task_debug.adb:15
14430 15 flush;
14431 (@value{GDBP}) info tasks
14432 ID TID P-ID Pri State Name
14433 1 140022020 0 15 Child Activation Wait main_task
14434 * 2 140045060 1 15 Runnable t2
14435 3 140044840 1 15 Runnable t1
14436 4 140056040 1 15 Delay Sleep t3
14437 @end smallexample
14438 @end table
14439
14440 @node Ada Tasks and Core Files
14441 @subsubsection Tasking Support when Debugging Core Files
14442 @cindex Ada tasking and core file debugging
14443
14444 When inspecting a core file, as opposed to debugging a live program,
14445 tasking support may be limited or even unavailable, depending on
14446 the platform being used.
14447 For instance, on x86-linux, the list of tasks is available, but task
14448 switching is not supported. On Tru64, however, task switching will work
14449 as usual.
14450
14451 On certain platforms, including Tru64, the debugger needs to perform some
14452 memory writes in order to provide Ada tasking support. When inspecting
14453 a core file, this means that the core file must be opened with read-write
14454 privileges, using the command @samp{"set write on"} (@pxref{Patching}).
14455 Under these circumstances, you should make a backup copy of the core
14456 file before inspecting it with @value{GDBN}.
14457
14458 @node Ravenscar Profile
14459 @subsubsection Tasking Support when using the Ravenscar Profile
14460 @cindex Ravenscar Profile
14461
14462 The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
14463 specifically designed for systems with safety-critical real-time
14464 requirements.
14465
14466 @table @code
14467 @kindex set ravenscar task-switching on
14468 @cindex task switching with program using Ravenscar Profile
14469 @item set ravenscar task-switching on
14470 Allows task switching when debugging a program that uses the Ravenscar
14471 Profile. This is the default.
14472
14473 @kindex set ravenscar task-switching off
14474 @item set ravenscar task-switching off
14475 Turn off task switching when debugging a program that uses the Ravenscar
14476 Profile. This is mostly intended to disable the code that adds support
14477 for the Ravenscar Profile, in case a bug in either @value{GDBN} or in
14478 the Ravenscar runtime is preventing @value{GDBN} from working properly.
14479 To be effective, this command should be run before the program is started.
14480
14481 @kindex show ravenscar task-switching
14482 @item show ravenscar task-switching
14483 Show whether it is possible to switch from task to task in a program
14484 using the Ravenscar Profile.
14485
14486 @end table
14487
14488 @node Ada Glitches
14489 @subsubsection Known Peculiarities of Ada Mode
14490 @cindex Ada, problems
14491
14492 Besides the omissions listed previously (@pxref{Omissions from Ada}),
14493 we know of several problems with and limitations of Ada mode in
14494 @value{GDBN},
14495 some of which will be fixed with planned future releases of the debugger
14496 and the GNU Ada compiler.
14497
14498 @itemize @bullet
14499 @item
14500 Static constants that the compiler chooses not to materialize as objects in
14501 storage are invisible to the debugger.
14502
14503 @item
14504 Named parameter associations in function argument lists are ignored (the
14505 argument lists are treated as positional).
14506
14507 @item
14508 Many useful library packages are currently invisible to the debugger.
14509
14510 @item
14511 Fixed-point arithmetic, conversions, input, and output is carried out using
14512 floating-point arithmetic, and may give results that only approximate those on
14513 the host machine.
14514
14515 @item
14516 The GNAT compiler never generates the prefix @code{Standard} for any of
14517 the standard symbols defined by the Ada language. @value{GDBN} knows about
14518 this: it will strip the prefix from names when you use it, and will never
14519 look for a name you have so qualified among local symbols, nor match against
14520 symbols in other packages or subprograms. If you have
14521 defined entities anywhere in your program other than parameters and
14522 local variables whose simple names match names in @code{Standard},
14523 GNAT's lack of qualification here can cause confusion. When this happens,
14524 you can usually resolve the confusion
14525 by qualifying the problematic names with package
14526 @code{Standard} explicitly.
14527 @end itemize
14528
14529 Older versions of the compiler sometimes generate erroneous debugging
14530 information, resulting in the debugger incorrectly printing the value
14531 of affected entities. In some cases, the debugger is able to work
14532 around an issue automatically. In other cases, the debugger is able
14533 to work around the issue, but the work-around has to be specifically
14534 enabled.
14535
14536 @kindex set ada trust-PAD-over-XVS
14537 @kindex show ada trust-PAD-over-XVS
14538 @table @code
14539
14540 @item set ada trust-PAD-over-XVS on
14541 Configure GDB to strictly follow the GNAT encoding when computing the
14542 value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
14543 types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
14544 a complete description of the encoding used by the GNAT compiler).
14545 This is the default.
14546
14547 @item set ada trust-PAD-over-XVS off
14548 This is related to the encoding using by the GNAT compiler. If @value{GDBN}
14549 sometimes prints the wrong value for certain entities, changing @code{ada
14550 trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
14551 the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
14552 @code{off}, but this incurs a slight performance penalty, so it is
14553 recommended to leave this setting to @code{on} unless necessary.
14554
14555 @end table
14556
14557 @node Unsupported Languages
14558 @section Unsupported Languages
14559
14560 @cindex unsupported languages
14561 @cindex minimal language
14562 In addition to the other fully-supported programming languages,
14563 @value{GDBN} also provides a pseudo-language, called @code{minimal}.
14564 It does not represent a real programming language, but provides a set
14565 of capabilities close to what the C or assembly languages provide.
14566 This should allow most simple operations to be performed while debugging
14567 an application that uses a language currently not supported by @value{GDBN}.
14568
14569 If the language is set to @code{auto}, @value{GDBN} will automatically
14570 select this language if the current frame corresponds to an unsupported
14571 language.
14572
14573 @node Symbols
14574 @chapter Examining the Symbol Table
14575
14576 The commands described in this chapter allow you to inquire about the
14577 symbols (names of variables, functions and types) defined in your
14578 program. This information is inherent in the text of your program and
14579 does not change as your program executes. @value{GDBN} finds it in your
14580 program's symbol table, in the file indicated when you started @value{GDBN}
14581 (@pxref{File Options, ,Choosing Files}), or by one of the
14582 file-management commands (@pxref{Files, ,Commands to Specify Files}).
14583
14584 @cindex symbol names
14585 @cindex names of symbols
14586 @cindex quoting names
14587 Occasionally, you may need to refer to symbols that contain unusual
14588 characters, which @value{GDBN} ordinarily treats as word delimiters. The
14589 most frequent case is in referring to static variables in other
14590 source files (@pxref{Variables,,Program Variables}). File names
14591 are recorded in object files as debugging symbols, but @value{GDBN} would
14592 ordinarily parse a typical file name, like @file{foo.c}, as the three words
14593 @samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
14594 @samp{foo.c} as a single symbol, enclose it in single quotes; for example,
14595
14596 @smallexample
14597 p 'foo.c'::x
14598 @end smallexample
14599
14600 @noindent
14601 looks up the value of @code{x} in the scope of the file @file{foo.c}.
14602
14603 @table @code
14604 @cindex case-insensitive symbol names
14605 @cindex case sensitivity in symbol names
14606 @kindex set case-sensitive
14607 @item set case-sensitive on
14608 @itemx set case-sensitive off
14609 @itemx set case-sensitive auto
14610 Normally, when @value{GDBN} looks up symbols, it matches their names
14611 with case sensitivity determined by the current source language.
14612 Occasionally, you may wish to control that. The command @code{set
14613 case-sensitive} lets you do that by specifying @code{on} for
14614 case-sensitive matches or @code{off} for case-insensitive ones. If
14615 you specify @code{auto}, case sensitivity is reset to the default
14616 suitable for the source language. The default is case-sensitive
14617 matches for all languages except for Fortran, for which the default is
14618 case-insensitive matches.
14619
14620 @kindex show case-sensitive
14621 @item show case-sensitive
14622 This command shows the current setting of case sensitivity for symbols
14623 lookups.
14624
14625 @kindex info address
14626 @cindex address of a symbol
14627 @item info address @var{symbol}
14628 Describe where the data for @var{symbol} is stored. For a register
14629 variable, this says which register it is kept in. For a non-register
14630 local variable, this prints the stack-frame offset at which the variable
14631 is always stored.
14632
14633 Note the contrast with @samp{print &@var{symbol}}, which does not work
14634 at all for a register variable, and for a stack local variable prints
14635 the exact address of the current instantiation of the variable.
14636
14637 @kindex info symbol
14638 @cindex symbol from address
14639 @cindex closest symbol and offset for an address
14640 @item info symbol @var{addr}
14641 Print the name of a symbol which is stored at the address @var{addr}.
14642 If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
14643 nearest symbol and an offset from it:
14644
14645 @smallexample
14646 (@value{GDBP}) info symbol 0x54320
14647 _initialize_vx + 396 in section .text
14648 @end smallexample
14649
14650 @noindent
14651 This is the opposite of the @code{info address} command. You can use
14652 it to find out the name of a variable or a function given its address.
14653
14654 For dynamically linked executables, the name of executable or shared
14655 library containing the symbol is also printed:
14656
14657 @smallexample
14658 (@value{GDBP}) info symbol 0x400225
14659 _start + 5 in section .text of /tmp/a.out
14660 (@value{GDBP}) info symbol 0x2aaaac2811cf
14661 __read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
14662 @end smallexample
14663
14664 @kindex whatis
14665 @item whatis [@var{arg}]
14666 Print the data type of @var{arg}, which can be either an expression
14667 or a name of a data type. With no argument, print the data type of
14668 @code{$}, the last value in the value history.
14669
14670 If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it
14671 is not actually evaluated, and any side-effecting operations (such as
14672 assignments or function calls) inside it do not take place.
14673
14674 If @var{arg} is a variable or an expression, @code{whatis} prints its
14675 literal type as it is used in the source code. If the type was
14676 defined using a @code{typedef}, @code{whatis} will @emph{not} print
14677 the data type underlying the @code{typedef}. If the type of the
14678 variable or the expression is a compound data type, such as
14679 @code{struct} or @code{class}, @code{whatis} never prints their
14680 fields or methods. It just prints the @code{struct}/@code{class}
14681 name (a.k.a.@: its @dfn{tag}). If you want to see the members of
14682 such a compound data type, use @code{ptype}.
14683
14684 If @var{arg} is a type name that was defined using @code{typedef},
14685 @code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
14686 Unrolling means that @code{whatis} will show the underlying type used
14687 in the @code{typedef} declaration of @var{arg}. However, if that
14688 underlying type is also a @code{typedef}, @code{whatis} will not
14689 unroll it.
14690
14691 For C code, the type names may also have the form @samp{class
14692 @var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
14693 @var{union-tag}} or @samp{enum @var{enum-tag}}.
14694
14695 @kindex ptype
14696 @item ptype [@var{arg}]
14697 @code{ptype} accepts the same arguments as @code{whatis}, but prints a
14698 detailed description of the type, instead of just the name of the type.
14699 @xref{Expressions, ,Expressions}.
14700
14701 Contrary to @code{whatis}, @code{ptype} always unrolls any
14702 @code{typedef}s in its argument declaration, whether the argument is
14703 a variable, expression, or a data type. This means that @code{ptype}
14704 of a variable or an expression will not print literally its type as
14705 present in the source code---use @code{whatis} for that. @code{typedef}s at
14706 the pointer or reference targets are also unrolled. Only @code{typedef}s of
14707 fields, methods and inner @code{class typedef}s of @code{struct}s,
14708 @code{class}es and @code{union}s are not unrolled even with @code{ptype}.
14709
14710 For example, for this variable declaration:
14711
14712 @smallexample
14713 typedef double real_t;
14714 struct complex @{ real_t real; double imag; @};
14715 typedef struct complex complex_t;
14716 complex_t var;
14717 real_t *real_pointer_var;
14718 @end smallexample
14719
14720 @noindent
14721 the two commands give this output:
14722
14723 @smallexample
14724 @group
14725 (@value{GDBP}) whatis var
14726 type = complex_t
14727 (@value{GDBP}) ptype var
14728 type = struct complex @{
14729 real_t real;
14730 double imag;
14731 @}
14732 (@value{GDBP}) whatis complex_t
14733 type = struct complex
14734 (@value{GDBP}) whatis struct complex
14735 type = struct complex
14736 (@value{GDBP}) ptype struct complex
14737 type = struct complex @{
14738 real_t real;
14739 double imag;
14740 @}
14741 (@value{GDBP}) whatis real_pointer_var
14742 type = real_t *
14743 (@value{GDBP}) ptype real_pointer_var
14744 type = double *
14745 @end group
14746 @end smallexample
14747
14748 @noindent
14749 As with @code{whatis}, using @code{ptype} without an argument refers to
14750 the type of @code{$}, the last value in the value history.
14751
14752 @cindex incomplete type
14753 Sometimes, programs use opaque data types or incomplete specifications
14754 of complex data structure. If the debug information included in the
14755 program does not allow @value{GDBN} to display a full declaration of
14756 the data type, it will say @samp{<incomplete type>}. For example,
14757 given these declarations:
14758
14759 @smallexample
14760 struct foo;
14761 struct foo *fooptr;
14762 @end smallexample
14763
14764 @noindent
14765 but no definition for @code{struct foo} itself, @value{GDBN} will say:
14766
14767 @smallexample
14768 (@value{GDBP}) ptype foo
14769 $1 = <incomplete type>
14770 @end smallexample
14771
14772 @noindent
14773 ``Incomplete type'' is C terminology for data types that are not
14774 completely specified.
14775
14776 @kindex info types
14777 @item info types @var{regexp}
14778 @itemx info types
14779 Print a brief description of all types whose names match the regular
14780 expression @var{regexp} (or all types in your program, if you supply
14781 no argument). Each complete typename is matched as though it were a
14782 complete line; thus, @samp{i type value} gives information on all
14783 types in your program whose names include the string @code{value}, but
14784 @samp{i type ^value$} gives information only on types whose complete
14785 name is @code{value}.
14786
14787 This command differs from @code{ptype} in two ways: first, like
14788 @code{whatis}, it does not print a detailed description; second, it
14789 lists all source files where a type is defined.
14790
14791 @kindex info scope
14792 @cindex local variables
14793 @item info scope @var{location}
14794 List all the variables local to a particular scope. This command
14795 accepts a @var{location} argument---a function name, a source line, or
14796 an address preceded by a @samp{*}, and prints all the variables local
14797 to the scope defined by that location. (@xref{Specify Location}, for
14798 details about supported forms of @var{location}.) For example:
14799
14800 @smallexample
14801 (@value{GDBP}) @b{info scope command_line_handler}
14802 Scope for command_line_handler:
14803 Symbol rl is an argument at stack/frame offset 8, length 4.
14804 Symbol linebuffer is in static storage at address 0x150a18, length 4.
14805 Symbol linelength is in static storage at address 0x150a1c, length 4.
14806 Symbol p is a local variable in register $esi, length 4.
14807 Symbol p1 is a local variable in register $ebx, length 4.
14808 Symbol nline is a local variable in register $edx, length 4.
14809 Symbol repeat is a local variable at frame offset -8, length 4.
14810 @end smallexample
14811
14812 @noindent
14813 This command is especially useful for determining what data to collect
14814 during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
14815 collect}.
14816
14817 @kindex info source
14818 @item info source
14819 Show information about the current source file---that is, the source file for
14820 the function containing the current point of execution:
14821 @itemize @bullet
14822 @item
14823 the name of the source file, and the directory containing it,
14824 @item
14825 the directory it was compiled in,
14826 @item
14827 its length, in lines,
14828 @item
14829 which programming language it is written in,
14830 @item
14831 whether the executable includes debugging information for that file, and
14832 if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
14833 @item
14834 whether the debugging information includes information about
14835 preprocessor macros.
14836 @end itemize
14837
14838
14839 @kindex info sources
14840 @item info sources
14841 Print the names of all source files in your program for which there is
14842 debugging information, organized into two lists: files whose symbols
14843 have already been read, and files whose symbols will be read when needed.
14844
14845 @kindex info functions
14846 @item info functions
14847 Print the names and data types of all defined functions.
14848
14849 @item info functions @var{regexp}
14850 Print the names and data types of all defined functions
14851 whose names contain a match for regular expression @var{regexp}.
14852 Thus, @samp{info fun step} finds all functions whose names
14853 include @code{step}; @samp{info fun ^step} finds those whose names
14854 start with @code{step}. If a function name contains characters
14855 that conflict with the regular expression language (e.g.@:
14856 @samp{operator*()}), they may be quoted with a backslash.
14857
14858 @kindex info variables
14859 @item info variables
14860 Print the names and data types of all variables that are defined
14861 outside of functions (i.e.@: excluding local variables).
14862
14863 @item info variables @var{regexp}
14864 Print the names and data types of all variables (except for local
14865 variables) whose names contain a match for regular expression
14866 @var{regexp}.
14867
14868 @kindex info classes
14869 @cindex Objective-C, classes and selectors
14870 @item info classes
14871 @itemx info classes @var{regexp}
14872 Display all Objective-C classes in your program, or
14873 (with the @var{regexp} argument) all those matching a particular regular
14874 expression.
14875
14876 @kindex info selectors
14877 @item info selectors
14878 @itemx info selectors @var{regexp}
14879 Display all Objective-C selectors in your program, or
14880 (with the @var{regexp} argument) all those matching a particular regular
14881 expression.
14882
14883 @ignore
14884 This was never implemented.
14885 @kindex info methods
14886 @item info methods
14887 @itemx info methods @var{regexp}
14888 The @code{info methods} command permits the user to examine all defined
14889 methods within C@t{++} program, or (with the @var{regexp} argument) a
14890 specific set of methods found in the various C@t{++} classes. Many
14891 C@t{++} classes provide a large number of methods. Thus, the output
14892 from the @code{ptype} command can be overwhelming and hard to use. The
14893 @code{info-methods} command filters the methods, printing only those
14894 which match the regular-expression @var{regexp}.
14895 @end ignore
14896
14897 @cindex opaque data types
14898 @kindex set opaque-type-resolution
14899 @item set opaque-type-resolution on
14900 Tell @value{GDBN} to resolve opaque types. An opaque type is a type
14901 declared as a pointer to a @code{struct}, @code{class}, or
14902 @code{union}---for example, @code{struct MyType *}---that is used in one
14903 source file although the full declaration of @code{struct MyType} is in
14904 another source file. The default is on.
14905
14906 A change in the setting of this subcommand will not take effect until
14907 the next time symbols for a file are loaded.
14908
14909 @item set opaque-type-resolution off
14910 Tell @value{GDBN} not to resolve opaque types. In this case, the type
14911 is printed as follows:
14912 @smallexample
14913 @{<no data fields>@}
14914 @end smallexample
14915
14916 @kindex show opaque-type-resolution
14917 @item show opaque-type-resolution
14918 Show whether opaque types are resolved or not.
14919
14920 @kindex maint print symbols
14921 @cindex symbol dump
14922 @kindex maint print psymbols
14923 @cindex partial symbol dump
14924 @item maint print symbols @var{filename}
14925 @itemx maint print psymbols @var{filename}
14926 @itemx maint print msymbols @var{filename}
14927 Write a dump of debugging symbol data into the file @var{filename}.
14928 These commands are used to debug the @value{GDBN} symbol-reading code. Only
14929 symbols with debugging data are included. If you use @samp{maint print
14930 symbols}, @value{GDBN} includes all the symbols for which it has already
14931 collected full details: that is, @var{filename} reflects symbols for
14932 only those files whose symbols @value{GDBN} has read. You can use the
14933 command @code{info sources} to find out which files these are. If you
14934 use @samp{maint print psymbols} instead, the dump shows information about
14935 symbols that @value{GDBN} only knows partially---that is, symbols defined in
14936 files that @value{GDBN} has skimmed, but not yet read completely. Finally,
14937 @samp{maint print msymbols} dumps just the minimal symbol information
14938 required for each object file from which @value{GDBN} has read some symbols.
14939 @xref{Files, ,Commands to Specify Files}, for a discussion of how
14940 @value{GDBN} reads symbols (in the description of @code{symbol-file}).
14941
14942 @kindex maint info symtabs
14943 @kindex maint info psymtabs
14944 @cindex listing @value{GDBN}'s internal symbol tables
14945 @cindex symbol tables, listing @value{GDBN}'s internal
14946 @cindex full symbol tables, listing @value{GDBN}'s internal
14947 @cindex partial symbol tables, listing @value{GDBN}'s internal
14948 @item maint info symtabs @r{[} @var{regexp} @r{]}
14949 @itemx maint info psymtabs @r{[} @var{regexp} @r{]}
14950
14951 List the @code{struct symtab} or @code{struct partial_symtab}
14952 structures whose names match @var{regexp}. If @var{regexp} is not
14953 given, list them all. The output includes expressions which you can
14954 copy into a @value{GDBN} debugging this one to examine a particular
14955 structure in more detail. For example:
14956
14957 @smallexample
14958 (@value{GDBP}) maint info psymtabs dwarf2read
14959 @{ objfile /home/gnu/build/gdb/gdb
14960 ((struct objfile *) 0x82e69d0)
14961 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
14962 ((struct partial_symtab *) 0x8474b10)
14963 readin no
14964 fullname (null)
14965 text addresses 0x814d3c8 -- 0x8158074
14966 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
14967 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
14968 dependencies (none)
14969 @}
14970 @}
14971 (@value{GDBP}) maint info symtabs
14972 (@value{GDBP})
14973 @end smallexample
14974 @noindent
14975 We see that there is one partial symbol table whose filename contains
14976 the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
14977 and we see that @value{GDBN} has not read in any symtabs yet at all.
14978 If we set a breakpoint on a function, that will cause @value{GDBN} to
14979 read the symtab for the compilation unit containing that function:
14980
14981 @smallexample
14982 (@value{GDBP}) break dwarf2_psymtab_to_symtab
14983 Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
14984 line 1574.
14985 (@value{GDBP}) maint info symtabs
14986 @{ objfile /home/gnu/build/gdb/gdb
14987 ((struct objfile *) 0x82e69d0)
14988 @{ symtab /home/gnu/src/gdb/dwarf2read.c
14989 ((struct symtab *) 0x86c1f38)
14990 dirname (null)
14991 fullname (null)
14992 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
14993 linetable ((struct linetable *) 0x8370fa0)
14994 debugformat DWARF 2
14995 @}
14996 @}
14997 (@value{GDBP})
14998 @end smallexample
14999 @end table
15000
15001
15002 @node Altering
15003 @chapter Altering Execution
15004
15005 Once you think you have found an error in your program, you might want to
15006 find out for certain whether correcting the apparent error would lead to
15007 correct results in the rest of the run. You can find the answer by
15008 experiment, using the @value{GDBN} features for altering execution of the
15009 program.
15010
15011 For example, you can store new values into variables or memory
15012 locations, give your program a signal, restart it at a different
15013 address, or even return prematurely from a function.
15014
15015 @menu
15016 * Assignment:: Assignment to variables
15017 * Jumping:: Continuing at a different address
15018 * Signaling:: Giving your program a signal
15019 * Returning:: Returning from a function
15020 * Calling:: Calling your program's functions
15021 * Patching:: Patching your program
15022 @end menu
15023
15024 @node Assignment
15025 @section Assignment to Variables
15026
15027 @cindex assignment
15028 @cindex setting variables
15029 To alter the value of a variable, evaluate an assignment expression.
15030 @xref{Expressions, ,Expressions}. For example,
15031
15032 @smallexample
15033 print x=4
15034 @end smallexample
15035
15036 @noindent
15037 stores the value 4 into the variable @code{x}, and then prints the
15038 value of the assignment expression (which is 4).
15039 @xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
15040 information on operators in supported languages.
15041
15042 @kindex set variable
15043 @cindex variables, setting
15044 If you are not interested in seeing the value of the assignment, use the
15045 @code{set} command instead of the @code{print} command. @code{set} is
15046 really the same as @code{print} except that the expression's value is
15047 not printed and is not put in the value history (@pxref{Value History,
15048 ,Value History}). The expression is evaluated only for its effects.
15049
15050 If the beginning of the argument string of the @code{set} command
15051 appears identical to a @code{set} subcommand, use the @code{set
15052 variable} command instead of just @code{set}. This command is identical
15053 to @code{set} except for its lack of subcommands. For example, if your
15054 program has a variable @code{width}, you get an error if you try to set
15055 a new value with just @samp{set width=13}, because @value{GDBN} has the
15056 command @code{set width}:
15057
15058 @smallexample
15059 (@value{GDBP}) whatis width
15060 type = double
15061 (@value{GDBP}) p width
15062 $4 = 13
15063 (@value{GDBP}) set width=47
15064 Invalid syntax in expression.
15065 @end smallexample
15066
15067 @noindent
15068 The invalid expression, of course, is @samp{=47}. In
15069 order to actually set the program's variable @code{width}, use
15070
15071 @smallexample
15072 (@value{GDBP}) set var width=47
15073 @end smallexample
15074
15075 Because the @code{set} command has many subcommands that can conflict
15076 with the names of program variables, it is a good idea to use the
15077 @code{set variable} command instead of just @code{set}. For example, if
15078 your program has a variable @code{g}, you run into problems if you try
15079 to set a new value with just @samp{set g=4}, because @value{GDBN} has
15080 the command @code{set gnutarget}, abbreviated @code{set g}:
15081
15082 @smallexample
15083 @group
15084 (@value{GDBP}) whatis g
15085 type = double
15086 (@value{GDBP}) p g
15087 $1 = 1
15088 (@value{GDBP}) set g=4
15089 (@value{GDBP}) p g
15090 $2 = 1
15091 (@value{GDBP}) r
15092 The program being debugged has been started already.
15093 Start it from the beginning? (y or n) y
15094 Starting program: /home/smith/cc_progs/a.out
15095 "/home/smith/cc_progs/a.out": can't open to read symbols:
15096 Invalid bfd target.
15097 (@value{GDBP}) show g
15098 The current BFD target is "=4".
15099 @end group
15100 @end smallexample
15101
15102 @noindent
15103 The program variable @code{g} did not change, and you silently set the
15104 @code{gnutarget} to an invalid value. In order to set the variable
15105 @code{g}, use
15106
15107 @smallexample
15108 (@value{GDBP}) set var g=4
15109 @end smallexample
15110
15111 @value{GDBN} allows more implicit conversions in assignments than C; you can
15112 freely store an integer value into a pointer variable or vice versa,
15113 and you can convert any structure to any other structure that is the
15114 same length or shorter.
15115 @comment FIXME: how do structs align/pad in these conversions?
15116 @comment /doc@cygnus.com 18dec1990
15117
15118 To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
15119 construct to generate a value of specified type at a specified address
15120 (@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
15121 to memory location @code{0x83040} as an integer (which implies a certain size
15122 and representation in memory), and
15123
15124 @smallexample
15125 set @{int@}0x83040 = 4
15126 @end smallexample
15127
15128 @noindent
15129 stores the value 4 into that memory location.
15130
15131 @node Jumping
15132 @section Continuing at a Different Address
15133
15134 Ordinarily, when you continue your program, you do so at the place where
15135 it stopped, with the @code{continue} command. You can instead continue at
15136 an address of your own choosing, with the following commands:
15137
15138 @table @code
15139 @kindex jump
15140 @item jump @var{linespec}
15141 @itemx jump @var{location}
15142 Resume execution at line @var{linespec} or at address given by
15143 @var{location}. Execution stops again immediately if there is a
15144 breakpoint there. @xref{Specify Location}, for a description of the
15145 different forms of @var{linespec} and @var{location}. It is common
15146 practice to use the @code{tbreak} command in conjunction with
15147 @code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
15148
15149 The @code{jump} command does not change the current stack frame, or
15150 the stack pointer, or the contents of any memory location or any
15151 register other than the program counter. If line @var{linespec} is in
15152 a different function from the one currently executing, the results may
15153 be bizarre if the two functions expect different patterns of arguments or
15154 of local variables. For this reason, the @code{jump} command requests
15155 confirmation if the specified line is not in the function currently
15156 executing. However, even bizarre results are predictable if you are
15157 well acquainted with the machine-language code of your program.
15158 @end table
15159
15160 @c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
15161 On many systems, you can get much the same effect as the @code{jump}
15162 command by storing a new value into the register @code{$pc}. The
15163 difference is that this does not start your program running; it only
15164 changes the address of where it @emph{will} run when you continue. For
15165 example,
15166
15167 @smallexample
15168 set $pc = 0x485
15169 @end smallexample
15170
15171 @noindent
15172 makes the next @code{continue} command or stepping command execute at
15173 address @code{0x485}, rather than at the address where your program stopped.
15174 @xref{Continuing and Stepping, ,Continuing and Stepping}.
15175
15176 The most common occasion to use the @code{jump} command is to back
15177 up---perhaps with more breakpoints set---over a portion of a program
15178 that has already executed, in order to examine its execution in more
15179 detail.
15180
15181 @c @group
15182 @node Signaling
15183 @section Giving your Program a Signal
15184 @cindex deliver a signal to a program
15185
15186 @table @code
15187 @kindex signal
15188 @item signal @var{signal}
15189 Resume execution where your program stopped, but immediately give it the
15190 signal @var{signal}. @var{signal} can be the name or the number of a
15191 signal. For example, on many systems @code{signal 2} and @code{signal
15192 SIGINT} are both ways of sending an interrupt signal.
15193
15194 Alternatively, if @var{signal} is zero, continue execution without
15195 giving a signal. This is useful when your program stopped on account of
15196 a signal and would ordinary see the signal when resumed with the
15197 @code{continue} command; @samp{signal 0} causes it to resume without a
15198 signal.
15199
15200 @code{signal} does not repeat when you press @key{RET} a second time
15201 after executing the command.
15202 @end table
15203 @c @end group
15204
15205 Invoking the @code{signal} command is not the same as invoking the
15206 @code{kill} utility from the shell. Sending a signal with @code{kill}
15207 causes @value{GDBN} to decide what to do with the signal depending on
15208 the signal handling tables (@pxref{Signals}). The @code{signal} command
15209 passes the signal directly to your program.
15210
15211
15212 @node Returning
15213 @section Returning from a Function
15214
15215 @table @code
15216 @cindex returning from a function
15217 @kindex return
15218 @item return
15219 @itemx return @var{expression}
15220 You can cancel execution of a function call with the @code{return}
15221 command. If you give an
15222 @var{expression} argument, its value is used as the function's return
15223 value.
15224 @end table
15225
15226 When you use @code{return}, @value{GDBN} discards the selected stack frame
15227 (and all frames within it). You can think of this as making the
15228 discarded frame return prematurely. If you wish to specify a value to
15229 be returned, give that value as the argument to @code{return}.
15230
15231 This pops the selected stack frame (@pxref{Selection, ,Selecting a
15232 Frame}), and any other frames inside of it, leaving its caller as the
15233 innermost remaining frame. That frame becomes selected. The
15234 specified value is stored in the registers used for returning values
15235 of functions.
15236
15237 The @code{return} command does not resume execution; it leaves the
15238 program stopped in the state that would exist if the function had just
15239 returned. In contrast, the @code{finish} command (@pxref{Continuing
15240 and Stepping, ,Continuing and Stepping}) resumes execution until the
15241 selected stack frame returns naturally.
15242
15243 @value{GDBN} needs to know how the @var{expression} argument should be set for
15244 the inferior. The concrete registers assignment depends on the OS ABI and the
15245 type being returned by the selected stack frame. For example it is common for
15246 OS ABI to return floating point values in FPU registers while integer values in
15247 CPU registers. Still some ABIs return even floating point values in CPU
15248 registers. Larger integer widths (such as @code{long long int}) also have
15249 specific placement rules. @value{GDBN} already knows the OS ABI from its
15250 current target so it needs to find out also the type being returned to make the
15251 assignment into the right register(s).
15252
15253 Normally, the selected stack frame has debug info. @value{GDBN} will always
15254 use the debug info instead of the implicit type of @var{expression} when the
15255 debug info is available. For example, if you type @kbd{return -1}, and the
15256 function in the current stack frame is declared to return a @code{long long
15257 int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
15258 into a @code{long long int}:
15259
15260 @smallexample
15261 Breakpoint 1, func () at gdb.base/return-nodebug.c:29
15262 29 return 31;
15263 (@value{GDBP}) return -1
15264 Make func return now? (y or n) y
15265 #0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
15266 43 printf ("result=%lld\n", func ());
15267 (@value{GDBP})
15268 @end smallexample
15269
15270 However, if the selected stack frame does not have a debug info, e.g., if the
15271 function was compiled without debug info, @value{GDBN} has to find out the type
15272 to return from user. Specifying a different type by mistake may set the value
15273 in different inferior registers than the caller code expects. For example,
15274 typing @kbd{return -1} with its implicit type @code{int} would set only a part
15275 of a @code{long long int} result for a debug info less function (on 32-bit
15276 architectures). Therefore the user is required to specify the return type by
15277 an appropriate cast explicitly:
15278
15279 @smallexample
15280 Breakpoint 2, 0x0040050b in func ()
15281 (@value{GDBP}) return -1
15282 Return value type not available for selected stack frame.
15283 Please use an explicit cast of the value to return.
15284 (@value{GDBP}) return (long long int) -1
15285 Make selected stack frame return now? (y or n) y
15286 #0 0x00400526 in main ()
15287 (@value{GDBP})
15288 @end smallexample
15289
15290 @node Calling
15291 @section Calling Program Functions
15292
15293 @table @code
15294 @cindex calling functions
15295 @cindex inferior functions, calling
15296 @item print @var{expr}
15297 Evaluate the expression @var{expr} and display the resulting value.
15298 @var{expr} may include calls to functions in the program being
15299 debugged.
15300
15301 @kindex call
15302 @item call @var{expr}
15303 Evaluate the expression @var{expr} without displaying @code{void}
15304 returned values.
15305
15306 You can use this variant of the @code{print} command if you want to
15307 execute a function from your program that does not return anything
15308 (a.k.a.@: @dfn{a void function}), but without cluttering the output
15309 with @code{void} returned values that @value{GDBN} will otherwise
15310 print. If the result is not void, it is printed and saved in the
15311 value history.
15312 @end table
15313
15314 It is possible for the function you call via the @code{print} or
15315 @code{call} command to generate a signal (e.g., if there's a bug in
15316 the function, or if you passed it incorrect arguments). What happens
15317 in that case is controlled by the @code{set unwindonsignal} command.
15318
15319 Similarly, with a C@t{++} program it is possible for the function you
15320 call via the @code{print} or @code{call} command to generate an
15321 exception that is not handled due to the constraints of the dummy
15322 frame. In this case, any exception that is raised in the frame, but has
15323 an out-of-frame exception handler will not be found. GDB builds a
15324 dummy-frame for the inferior function call, and the unwinder cannot
15325 seek for exception handlers outside of this dummy-frame. What happens
15326 in that case is controlled by the
15327 @code{set unwind-on-terminating-exception} command.
15328
15329 @table @code
15330 @item set unwindonsignal
15331 @kindex set unwindonsignal
15332 @cindex unwind stack in called functions
15333 @cindex call dummy stack unwinding
15334 Set unwinding of the stack if a signal is received while in a function
15335 that @value{GDBN} called in the program being debugged. If set to on,
15336 @value{GDBN} unwinds the stack it created for the call and restores
15337 the context to what it was before the call. If set to off (the
15338 default), @value{GDBN} stops in the frame where the signal was
15339 received.
15340
15341 @item show unwindonsignal
15342 @kindex show unwindonsignal
15343 Show the current setting of stack unwinding in the functions called by
15344 @value{GDBN}.
15345
15346 @item set unwind-on-terminating-exception
15347 @kindex set unwind-on-terminating-exception
15348 @cindex unwind stack in called functions with unhandled exceptions
15349 @cindex call dummy stack unwinding on unhandled exception.
15350 Set unwinding of the stack if a C@t{++} exception is raised, but left
15351 unhandled while in a function that @value{GDBN} called in the program being
15352 debugged. If set to on (the default), @value{GDBN} unwinds the stack
15353 it created for the call and restores the context to what it was before
15354 the call. If set to off, @value{GDBN} the exception is delivered to
15355 the default C@t{++} exception handler and the inferior terminated.
15356
15357 @item show unwind-on-terminating-exception
15358 @kindex show unwind-on-terminating-exception
15359 Show the current setting of stack unwinding in the functions called by
15360 @value{GDBN}.
15361
15362 @end table
15363
15364 @cindex weak alias functions
15365 Sometimes, a function you wish to call is actually a @dfn{weak alias}
15366 for another function. In such case, @value{GDBN} might not pick up
15367 the type information, including the types of the function arguments,
15368 which causes @value{GDBN} to call the inferior function incorrectly.
15369 As a result, the called function will function erroneously and may
15370 even crash. A solution to that is to use the name of the aliased
15371 function instead.
15372
15373 @node Patching
15374 @section Patching Programs
15375
15376 @cindex patching binaries
15377 @cindex writing into executables
15378 @cindex writing into corefiles
15379
15380 By default, @value{GDBN} opens the file containing your program's
15381 executable code (or the corefile) read-only. This prevents accidental
15382 alterations to machine code; but it also prevents you from intentionally
15383 patching your program's binary.
15384
15385 If you'd like to be able to patch the binary, you can specify that
15386 explicitly with the @code{set write} command. For example, you might
15387 want to turn on internal debugging flags, or even to make emergency
15388 repairs.
15389
15390 @table @code
15391 @kindex set write
15392 @item set write on
15393 @itemx set write off
15394 If you specify @samp{set write on}, @value{GDBN} opens executable and
15395 core files for both reading and writing; if you specify @kbd{set write
15396 off} (the default), @value{GDBN} opens them read-only.
15397
15398 If you have already loaded a file, you must load it again (using the
15399 @code{exec-file} or @code{core-file} command) after changing @code{set
15400 write}, for your new setting to take effect.
15401
15402 @item show write
15403 @kindex show write
15404 Display whether executable files and core files are opened for writing
15405 as well as reading.
15406 @end table
15407
15408 @node GDB Files
15409 @chapter @value{GDBN} Files
15410
15411 @value{GDBN} needs to know the file name of the program to be debugged,
15412 both in order to read its symbol table and in order to start your
15413 program. To debug a core dump of a previous run, you must also tell
15414 @value{GDBN} the name of the core dump file.
15415
15416 @menu
15417 * Files:: Commands to specify files
15418 * Separate Debug Files:: Debugging information in separate files
15419 * Index Files:: Index files speed up GDB
15420 * Symbol Errors:: Errors reading symbol files
15421 * Data Files:: GDB data files
15422 @end menu
15423
15424 @node Files
15425 @section Commands to Specify Files
15426
15427 @cindex symbol table
15428 @cindex core dump file
15429
15430 You may want to specify executable and core dump file names. The usual
15431 way to do this is at start-up time, using the arguments to
15432 @value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
15433 Out of @value{GDBN}}).
15434
15435 Occasionally it is necessary to change to a different file during a
15436 @value{GDBN} session. Or you may run @value{GDBN} and forget to
15437 specify a file you want to use. Or you are debugging a remote target
15438 via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
15439 Program}). In these situations the @value{GDBN} commands to specify
15440 new files are useful.
15441
15442 @table @code
15443 @cindex executable file
15444 @kindex file
15445 @item file @var{filename}
15446 Use @var{filename} as the program to be debugged. It is read for its
15447 symbols and for the contents of pure memory. It is also the program
15448 executed when you use the @code{run} command. If you do not specify a
15449 directory and the file is not found in the @value{GDBN} working directory,
15450 @value{GDBN} uses the environment variable @code{PATH} as a list of
15451 directories to search, just as the shell does when looking for a program
15452 to run. You can change the value of this variable, for both @value{GDBN}
15453 and your program, using the @code{path} command.
15454
15455 @cindex unlinked object files
15456 @cindex patching object files
15457 You can load unlinked object @file{.o} files into @value{GDBN} using
15458 the @code{file} command. You will not be able to ``run'' an object
15459 file, but you can disassemble functions and inspect variables. Also,
15460 if the underlying BFD functionality supports it, you could use
15461 @kbd{gdb -write} to patch object files using this technique. Note
15462 that @value{GDBN} can neither interpret nor modify relocations in this
15463 case, so branches and some initialized variables will appear to go to
15464 the wrong place. But this feature is still handy from time to time.
15465
15466 @item file
15467 @code{file} with no argument makes @value{GDBN} discard any information it
15468 has on both executable file and the symbol table.
15469
15470 @kindex exec-file
15471 @item exec-file @r{[} @var{filename} @r{]}
15472 Specify that the program to be run (but not the symbol table) is found
15473 in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
15474 if necessary to locate your program. Omitting @var{filename} means to
15475 discard information on the executable file.
15476
15477 @kindex symbol-file
15478 @item symbol-file @r{[} @var{filename} @r{]}
15479 Read symbol table information from file @var{filename}. @code{PATH} is
15480 searched when necessary. Use the @code{file} command to get both symbol
15481 table and program to run from the same file.
15482
15483 @code{symbol-file} with no argument clears out @value{GDBN} information on your
15484 program's symbol table.
15485
15486 The @code{symbol-file} command causes @value{GDBN} to forget the contents of
15487 some breakpoints and auto-display expressions. This is because they may
15488 contain pointers to the internal data recording symbols and data types,
15489 which are part of the old symbol table data being discarded inside
15490 @value{GDBN}.
15491
15492 @code{symbol-file} does not repeat if you press @key{RET} again after
15493 executing it once.
15494
15495 When @value{GDBN} is configured for a particular environment, it
15496 understands debugging information in whatever format is the standard
15497 generated for that environment; you may use either a @sc{gnu} compiler, or
15498 other compilers that adhere to the local conventions.
15499 Best results are usually obtained from @sc{gnu} compilers; for example,
15500 using @code{@value{NGCC}} you can generate debugging information for
15501 optimized code.
15502
15503 For most kinds of object files, with the exception of old SVR3 systems
15504 using COFF, the @code{symbol-file} command does not normally read the
15505 symbol table in full right away. Instead, it scans the symbol table
15506 quickly to find which source files and which symbols are present. The
15507 details are read later, one source file at a time, as they are needed.
15508
15509 The purpose of this two-stage reading strategy is to make @value{GDBN}
15510 start up faster. For the most part, it is invisible except for
15511 occasional pauses while the symbol table details for a particular source
15512 file are being read. (The @code{set verbose} command can turn these
15513 pauses into messages if desired. @xref{Messages/Warnings, ,Optional
15514 Warnings and Messages}.)
15515
15516 We have not implemented the two-stage strategy for COFF yet. When the
15517 symbol table is stored in COFF format, @code{symbol-file} reads the
15518 symbol table data in full right away. Note that ``stabs-in-COFF''
15519 still does the two-stage strategy, since the debug info is actually
15520 in stabs format.
15521
15522 @kindex readnow
15523 @cindex reading symbols immediately
15524 @cindex symbols, reading immediately
15525 @item symbol-file @r{[} -readnow @r{]} @var{filename}
15526 @itemx file @r{[} -readnow @r{]} @var{filename}
15527 You can override the @value{GDBN} two-stage strategy for reading symbol
15528 tables by using the @samp{-readnow} option with any of the commands that
15529 load symbol table information, if you want to be sure @value{GDBN} has the
15530 entire symbol table available.
15531
15532 @c FIXME: for now no mention of directories, since this seems to be in
15533 @c flux. 13mar1992 status is that in theory GDB would look either in
15534 @c current dir or in same dir as myprog; but issues like competing
15535 @c GDB's, or clutter in system dirs, mean that in practice right now
15536 @c only current dir is used. FFish says maybe a special GDB hierarchy
15537 @c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
15538 @c files.
15539
15540 @kindex core-file
15541 @item core-file @r{[}@var{filename}@r{]}
15542 @itemx core
15543 Specify the whereabouts of a core dump file to be used as the ``contents
15544 of memory''. Traditionally, core files contain only some parts of the
15545 address space of the process that generated them; @value{GDBN} can access the
15546 executable file itself for other parts.
15547
15548 @code{core-file} with no argument specifies that no core file is
15549 to be used.
15550
15551 Note that the core file is ignored when your program is actually running
15552 under @value{GDBN}. So, if you have been running your program and you
15553 wish to debug a core file instead, you must kill the subprocess in which
15554 the program is running. To do this, use the @code{kill} command
15555 (@pxref{Kill Process, ,Killing the Child Process}).
15556
15557 @kindex add-symbol-file
15558 @cindex dynamic linking
15559 @item add-symbol-file @var{filename} @var{address}
15560 @itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
15561 @itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{}
15562 The @code{add-symbol-file} command reads additional symbol table
15563 information from the file @var{filename}. You would use this command
15564 when @var{filename} has been dynamically loaded (by some other means)
15565 into the program that is running. @var{address} should be the memory
15566 address at which the file has been loaded; @value{GDBN} cannot figure
15567 this out for itself. You can additionally specify an arbitrary number
15568 of @samp{-s @var{section} @var{address}} pairs, to give an explicit
15569 section name and base address for that section. You can specify any
15570 @var{address} as an expression.
15571
15572 The symbol table of the file @var{filename} is added to the symbol table
15573 originally read with the @code{symbol-file} command. You can use the
15574 @code{add-symbol-file} command any number of times; the new symbol data
15575 thus read keeps adding to the old. To discard all old symbol data
15576 instead, use the @code{symbol-file} command without any arguments.
15577
15578 @cindex relocatable object files, reading symbols from
15579 @cindex object files, relocatable, reading symbols from
15580 @cindex reading symbols from relocatable object files
15581 @cindex symbols, reading from relocatable object files
15582 @cindex @file{.o} files, reading symbols from
15583 Although @var{filename} is typically a shared library file, an
15584 executable file, or some other object file which has been fully
15585 relocated for loading into a process, you can also load symbolic
15586 information from relocatable @file{.o} files, as long as:
15587
15588 @itemize @bullet
15589 @item
15590 the file's symbolic information refers only to linker symbols defined in
15591 that file, not to symbols defined by other object files,
15592 @item
15593 every section the file's symbolic information refers to has actually
15594 been loaded into the inferior, as it appears in the file, and
15595 @item
15596 you can determine the address at which every section was loaded, and
15597 provide these to the @code{add-symbol-file} command.
15598 @end itemize
15599
15600 @noindent
15601 Some embedded operating systems, like Sun Chorus and VxWorks, can load
15602 relocatable files into an already running program; such systems
15603 typically make the requirements above easy to meet. However, it's
15604 important to recognize that many native systems use complex link
15605 procedures (@code{.linkonce} section factoring and C@t{++} constructor table
15606 assembly, for example) that make the requirements difficult to meet. In
15607 general, one cannot assume that using @code{add-symbol-file} to read a
15608 relocatable object file's symbolic information will have the same effect
15609 as linking the relocatable object file into the program in the normal
15610 way.
15611
15612 @code{add-symbol-file} does not repeat if you press @key{RET} after using it.
15613
15614 @kindex add-symbol-file-from-memory
15615 @cindex @code{syscall DSO}
15616 @cindex load symbols from memory
15617 @item add-symbol-file-from-memory @var{address}
15618 Load symbols from the given @var{address} in a dynamically loaded
15619 object file whose image is mapped directly into the inferior's memory.
15620 For example, the Linux kernel maps a @code{syscall DSO} into each
15621 process's address space; this DSO provides kernel-specific code for
15622 some system calls. The argument can be any expression whose
15623 evaluation yields the address of the file's shared object file header.
15624 For this command to work, you must have used @code{symbol-file} or
15625 @code{exec-file} commands in advance.
15626
15627 @kindex add-shared-symbol-files
15628 @kindex assf
15629 @item add-shared-symbol-files @var{library-file}
15630 @itemx assf @var{library-file}
15631 The @code{add-shared-symbol-files} command can currently be used only
15632 in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
15633 alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
15634 @value{GDBN} automatically looks for shared libraries, however if
15635 @value{GDBN} does not find yours, you can invoke
15636 @code{add-shared-symbol-files}. It takes one argument: the shared
15637 library's file name. @code{assf} is a shorthand alias for
15638 @code{add-shared-symbol-files}.
15639
15640 @kindex section
15641 @item section @var{section} @var{addr}
15642 The @code{section} command changes the base address of the named
15643 @var{section} of the exec file to @var{addr}. This can be used if the
15644 exec file does not contain section addresses, (such as in the
15645 @code{a.out} format), or when the addresses specified in the file
15646 itself are wrong. Each section must be changed separately. The
15647 @code{info files} command, described below, lists all the sections and
15648 their addresses.
15649
15650 @kindex info files
15651 @kindex info target
15652 @item info files
15653 @itemx info target
15654 @code{info files} and @code{info target} are synonymous; both print the
15655 current target (@pxref{Targets, ,Specifying a Debugging Target}),
15656 including the names of the executable and core dump files currently in
15657 use by @value{GDBN}, and the files from which symbols were loaded. The
15658 command @code{help target} lists all possible targets rather than
15659 current ones.
15660
15661 @kindex maint info sections
15662 @item maint info sections
15663 Another command that can give you extra information about program sections
15664 is @code{maint info sections}. In addition to the section information
15665 displayed by @code{info files}, this command displays the flags and file
15666 offset of each section in the executable and core dump files. In addition,
15667 @code{maint info sections} provides the following command options (which
15668 may be arbitrarily combined):
15669
15670 @table @code
15671 @item ALLOBJ
15672 Display sections for all loaded object files, including shared libraries.
15673 @item @var{sections}
15674 Display info only for named @var{sections}.
15675 @item @var{section-flags}
15676 Display info only for sections for which @var{section-flags} are true.
15677 The section flags that @value{GDBN} currently knows about are:
15678 @table @code
15679 @item ALLOC
15680 Section will have space allocated in the process when loaded.
15681 Set for all sections except those containing debug information.
15682 @item LOAD
15683 Section will be loaded from the file into the child process memory.
15684 Set for pre-initialized code and data, clear for @code{.bss} sections.
15685 @item RELOC
15686 Section needs to be relocated before loading.
15687 @item READONLY
15688 Section cannot be modified by the child process.
15689 @item CODE
15690 Section contains executable code only.
15691 @item DATA
15692 Section contains data only (no executable code).
15693 @item ROM
15694 Section will reside in ROM.
15695 @item CONSTRUCTOR
15696 Section contains data for constructor/destructor lists.
15697 @item HAS_CONTENTS
15698 Section is not empty.
15699 @item NEVER_LOAD
15700 An instruction to the linker to not output the section.
15701 @item COFF_SHARED_LIBRARY
15702 A notification to the linker that the section contains
15703 COFF shared library information.
15704 @item IS_COMMON
15705 Section contains common symbols.
15706 @end table
15707 @end table
15708 @kindex set trust-readonly-sections
15709 @cindex read-only sections
15710 @item set trust-readonly-sections on
15711 Tell @value{GDBN} that readonly sections in your object file
15712 really are read-only (i.e.@: that their contents will not change).
15713 In that case, @value{GDBN} can fetch values from these sections
15714 out of the object file, rather than from the target program.
15715 For some targets (notably embedded ones), this can be a significant
15716 enhancement to debugging performance.
15717
15718 The default is off.
15719
15720 @item set trust-readonly-sections off
15721 Tell @value{GDBN} not to trust readonly sections. This means that
15722 the contents of the section might change while the program is running,
15723 and must therefore be fetched from the target when needed.
15724
15725 @item show trust-readonly-sections
15726 Show the current setting of trusting readonly sections.
15727 @end table
15728
15729 All file-specifying commands allow both absolute and relative file names
15730 as arguments. @value{GDBN} always converts the file name to an absolute file
15731 name and remembers it that way.
15732
15733 @cindex shared libraries
15734 @anchor{Shared Libraries}
15735 @value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
15736 and IBM RS/6000 AIX shared libraries.
15737
15738 On MS-Windows @value{GDBN} must be linked with the Expat library to support
15739 shared libraries. @xref{Expat}.
15740
15741 @value{GDBN} automatically loads symbol definitions from shared libraries
15742 when you use the @code{run} command, or when you examine a core file.
15743 (Before you issue the @code{run} command, @value{GDBN} does not understand
15744 references to a function in a shared library, however---unless you are
15745 debugging a core file).
15746
15747 On HP-UX, if the program loads a library explicitly, @value{GDBN}
15748 automatically loads the symbols at the time of the @code{shl_load} call.
15749
15750 @c FIXME: some @value{GDBN} release may permit some refs to undef
15751 @c FIXME...symbols---eg in a break cmd---assuming they are from a shared
15752 @c FIXME...lib; check this from time to time when updating manual
15753
15754 There are times, however, when you may wish to not automatically load
15755 symbol definitions from shared libraries, such as when they are
15756 particularly large or there are many of them.
15757
15758 To control the automatic loading of shared library symbols, use the
15759 commands:
15760
15761 @table @code
15762 @kindex set auto-solib-add
15763 @item set auto-solib-add @var{mode}
15764 If @var{mode} is @code{on}, symbols from all shared object libraries
15765 will be loaded automatically when the inferior begins execution, you
15766 attach to an independently started inferior, or when the dynamic linker
15767 informs @value{GDBN} that a new library has been loaded. If @var{mode}
15768 is @code{off}, symbols must be loaded manually, using the
15769 @code{sharedlibrary} command. The default value is @code{on}.
15770
15771 @cindex memory used for symbol tables
15772 If your program uses lots of shared libraries with debug info that
15773 takes large amounts of memory, you can decrease the @value{GDBN}
15774 memory footprint by preventing it from automatically loading the
15775 symbols from shared libraries. To that end, type @kbd{set
15776 auto-solib-add off} before running the inferior, then load each
15777 library whose debug symbols you do need with @kbd{sharedlibrary
15778 @var{regexp}}, where @var{regexp} is a regular expression that matches
15779 the libraries whose symbols you want to be loaded.
15780
15781 @kindex show auto-solib-add
15782 @item show auto-solib-add
15783 Display the current autoloading mode.
15784 @end table
15785
15786 @cindex load shared library
15787 To explicitly load shared library symbols, use the @code{sharedlibrary}
15788 command:
15789
15790 @table @code
15791 @kindex info sharedlibrary
15792 @kindex info share
15793 @item info share @var{regex}
15794 @itemx info sharedlibrary @var{regex}
15795 Print the names of the shared libraries which are currently loaded
15796 that match @var{regex}. If @var{regex} is omitted then print
15797 all shared libraries that are loaded.
15798
15799 @kindex sharedlibrary
15800 @kindex share
15801 @item sharedlibrary @var{regex}
15802 @itemx share @var{regex}
15803 Load shared object library symbols for files matching a
15804 Unix regular expression.
15805 As with files loaded automatically, it only loads shared libraries
15806 required by your program for a core file or after typing @code{run}. If
15807 @var{regex} is omitted all shared libraries required by your program are
15808 loaded.
15809
15810 @item nosharedlibrary
15811 @kindex nosharedlibrary
15812 @cindex unload symbols from shared libraries
15813 Unload all shared object library symbols. This discards all symbols
15814 that have been loaded from all shared libraries. Symbols from shared
15815 libraries that were loaded by explicit user requests are not
15816 discarded.
15817 @end table
15818
15819 Sometimes you may wish that @value{GDBN} stops and gives you control
15820 when any of shared library events happen. The best way to do this is
15821 to use @code{catch load} and @code{catch unload} (@pxref{Set
15822 Catchpoints}).
15823
15824 @value{GDBN} also supports the the @code{set stop-on-solib-events}
15825 command for this. This command exists for historical reasons. It is
15826 less useful than setting a catchpoint, because it does not allow for
15827 conditions or commands as a catchpoint does.
15828
15829 @table @code
15830 @item set stop-on-solib-events
15831 @kindex set stop-on-solib-events
15832 This command controls whether @value{GDBN} should give you control
15833 when the dynamic linker notifies it about some shared library event.
15834 The most common event of interest is loading or unloading of a new
15835 shared library.
15836
15837 @item show stop-on-solib-events
15838 @kindex show stop-on-solib-events
15839 Show whether @value{GDBN} stops and gives you control when shared
15840 library events happen.
15841 @end table
15842
15843 Shared libraries are also supported in many cross or remote debugging
15844 configurations. @value{GDBN} needs to have access to the target's libraries;
15845 this can be accomplished either by providing copies of the libraries
15846 on the host system, or by asking @value{GDBN} to automatically retrieve the
15847 libraries from the target. If copies of the target libraries are
15848 provided, they need to be the same as the target libraries, although the
15849 copies on the target can be stripped as long as the copies on the host are
15850 not.
15851
15852 @cindex where to look for shared libraries
15853 For remote debugging, you need to tell @value{GDBN} where the target
15854 libraries are, so that it can load the correct copies---otherwise, it
15855 may try to load the host's libraries. @value{GDBN} has two variables
15856 to specify the search directories for target libraries.
15857
15858 @table @code
15859 @cindex prefix for shared library file names
15860 @cindex system root, alternate
15861 @kindex set solib-absolute-prefix
15862 @kindex set sysroot
15863 @item set sysroot @var{path}
15864 Use @var{path} as the system root for the program being debugged. Any
15865 absolute shared library paths will be prefixed with @var{path}; many
15866 runtime loaders store the absolute paths to the shared library in the
15867 target program's memory. If you use @code{set sysroot} to find shared
15868 libraries, they need to be laid out in the same way that they are on
15869 the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
15870 under @var{path}.
15871
15872 If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
15873 retrieve the target libraries from the remote system. This is only
15874 supported when using a remote target that supports the @code{remote get}
15875 command (@pxref{File Transfer,,Sending files to a remote system}).
15876 The part of @var{path} following the initial @file{remote:}
15877 (if present) is used as system root prefix on the remote file system.
15878 @footnote{If you want to specify a local system root using a directory
15879 that happens to be named @file{remote:}, you need to use some equivalent
15880 variant of the name like @file{./remote:}.}
15881
15882 For targets with an MS-DOS based filesystem, such as MS-Windows and
15883 SymbianOS, @value{GDBN} tries prefixing a few variants of the target
15884 absolute file name with @var{path}. But first, on Unix hosts,
15885 @value{GDBN} converts all backslash directory separators into forward
15886 slashes, because the backslash is not a directory separator on Unix:
15887
15888 @smallexample
15889 c:\foo\bar.dll @result{} c:/foo/bar.dll
15890 @end smallexample
15891
15892 Then, @value{GDBN} attempts prefixing the target file name with
15893 @var{path}, and looks for the resulting file name in the host file
15894 system:
15895
15896 @smallexample
15897 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll
15898 @end smallexample
15899
15900 If that does not find the shared library, @value{GDBN} tries removing
15901 the @samp{:} character from the drive spec, both for convenience, and,
15902 for the case of the host file system not supporting file names with
15903 colons:
15904
15905 @smallexample
15906 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll
15907 @end smallexample
15908
15909 This makes it possible to have a system root that mirrors a target
15910 with more than one drive. E.g., you may want to setup your local
15911 copies of the target system shared libraries like so (note @samp{c} vs
15912 @samp{z}):
15913
15914 @smallexample
15915 @file{/path/to/sysroot/c/sys/bin/foo.dll}
15916 @file{/path/to/sysroot/c/sys/bin/bar.dll}
15917 @file{/path/to/sysroot/z/sys/bin/bar.dll}
15918 @end smallexample
15919
15920 @noindent
15921 and point the system root at @file{/path/to/sysroot}, so that
15922 @value{GDBN} can find the correct copies of both
15923 @file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}.
15924
15925 If that still does not find the shared library, @value{GDBN} tries
15926 removing the whole drive spec from the target file name:
15927
15928 @smallexample
15929 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll
15930 @end smallexample
15931
15932 This last lookup makes it possible to not care about the drive name,
15933 if you don't want or need to.
15934
15935 The @code{set solib-absolute-prefix} command is an alias for @code{set
15936 sysroot}.
15937
15938 @cindex default system root
15939 @cindex @samp{--with-sysroot}
15940 You can set the default system root by using the configure-time
15941 @samp{--with-sysroot} option. If the system root is inside
15942 @value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
15943 @samp{--exec-prefix}), then the default system root will be updated
15944 automatically if the installed @value{GDBN} is moved to a new
15945 location.
15946
15947 @kindex show sysroot
15948 @item show sysroot
15949 Display the current shared library prefix.
15950
15951 @kindex set solib-search-path
15952 @item set solib-search-path @var{path}
15953 If this variable is set, @var{path} is a colon-separated list of
15954 directories to search for shared libraries. @samp{solib-search-path}
15955 is used after @samp{sysroot} fails to locate the library, or if the
15956 path to the library is relative instead of absolute. If you want to
15957 use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
15958 @samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
15959 finding your host's libraries. @samp{sysroot} is preferred; setting
15960 it to a nonexistent directory may interfere with automatic loading
15961 of shared library symbols.
15962
15963 @kindex show solib-search-path
15964 @item show solib-search-path
15965 Display the current shared library search path.
15966
15967 @cindex DOS file-name semantics of file names.
15968 @kindex set target-file-system-kind (unix|dos-based|auto)
15969 @kindex show target-file-system-kind
15970 @item set target-file-system-kind @var{kind}
15971 Set assumed file system kind for target reported file names.
15972
15973 Shared library file names as reported by the target system may not
15974 make sense as is on the system @value{GDBN} is running on. For
15975 example, when remote debugging a target that has MS-DOS based file
15976 system semantics, from a Unix host, the target may be reporting to
15977 @value{GDBN} a list of loaded shared libraries with file names such as
15978 @file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of
15979 drive letters, so the @samp{c:\} prefix is not normally understood as
15980 indicating an absolute file name, and neither is the backslash
15981 normally considered a directory separator character. In that case,
15982 the native file system would interpret this whole absolute file name
15983 as a relative file name with no directory components. This would make
15984 it impossible to point @value{GDBN} at a copy of the remote target's
15985 shared libraries on the host using @code{set sysroot}, and impractical
15986 with @code{set solib-search-path}. Setting
15987 @code{target-file-system-kind} to @code{dos-based} tells @value{GDBN}
15988 to interpret such file names similarly to how the target would, and to
15989 map them to file names valid on @value{GDBN}'s native file system
15990 semantics. The value of @var{kind} can be @code{"auto"}, in addition
15991 to one of the supported file system kinds. In that case, @value{GDBN}
15992 tries to determine the appropriate file system variant based on the
15993 current target's operating system (@pxref{ABI, ,Configuring the
15994 Current ABI}). The supported file system settings are:
15995
15996 @table @code
15997 @item unix
15998 Instruct @value{GDBN} to assume the target file system is of Unix
15999 kind. Only file names starting the forward slash (@samp{/}) character
16000 are considered absolute, and the directory separator character is also
16001 the forward slash.
16002
16003 @item dos-based
16004 Instruct @value{GDBN} to assume the target file system is DOS based.
16005 File names starting with either a forward slash, or a drive letter
16006 followed by a colon (e.g., @samp{c:}), are considered absolute, and
16007 both the slash (@samp{/}) and the backslash (@samp{\\}) characters are
16008 considered directory separators.
16009
16010 @item auto
16011 Instruct @value{GDBN} to use the file system kind associated with the
16012 target operating system (@pxref{ABI, ,Configuring the Current ABI}).
16013 This is the default.
16014 @end table
16015 @end table
16016
16017 @cindex file name canonicalization
16018 @cindex base name differences
16019 When processing file names provided by the user, @value{GDBN}
16020 frequently needs to compare them to the file names recorded in the
16021 program's debug info. Normally, @value{GDBN} compares just the
16022 @dfn{base names} of the files as strings, which is reasonably fast
16023 even for very large programs. (The base name of a file is the last
16024 portion of its name, after stripping all the leading directories.)
16025 This shortcut in comparison is based upon the assumption that files
16026 cannot have more than one base name. This is usually true, but
16027 references to files that use symlinks or similar filesystem
16028 facilities violate that assumption. If your program records files
16029 using such facilities, or if you provide file names to @value{GDBN}
16030 using symlinks etc., you can set @code{basenames-may-differ} to
16031 @code{true} to instruct @value{GDBN} to completely canonicalize each
16032 pair of file names it needs to compare. This will make file-name
16033 comparisons accurate, but at a price of a significant slowdown.
16034
16035 @table @code
16036 @item set basenames-may-differ
16037 @kindex set basenames-may-differ
16038 Set whether a source file may have multiple base names.
16039
16040 @item show basenames-may-differ
16041 @kindex show basenames-may-differ
16042 Show whether a source file may have multiple base names.
16043 @end table
16044
16045 @node Separate Debug Files
16046 @section Debugging Information in Separate Files
16047 @cindex separate debugging information files
16048 @cindex debugging information in separate files
16049 @cindex @file{.debug} subdirectories
16050 @cindex debugging information directory, global
16051 @cindex global debugging information directory
16052 @cindex build ID, and separate debugging files
16053 @cindex @file{.build-id} directory
16054
16055 @value{GDBN} allows you to put a program's debugging information in a
16056 file separate from the executable itself, in a way that allows
16057 @value{GDBN} to find and load the debugging information automatically.
16058 Since debugging information can be very large---sometimes larger
16059 than the executable code itself---some systems distribute debugging
16060 information for their executables in separate files, which users can
16061 install only when they need to debug a problem.
16062
16063 @value{GDBN} supports two ways of specifying the separate debug info
16064 file:
16065
16066 @itemize @bullet
16067 @item
16068 The executable contains a @dfn{debug link} that specifies the name of
16069 the separate debug info file. The separate debug file's name is
16070 usually @file{@var{executable}.debug}, where @var{executable} is the
16071 name of the corresponding executable file without leading directories
16072 (e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
16073 debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
16074 checksum for the debug file, which @value{GDBN} uses to validate that
16075 the executable and the debug file came from the same build.
16076
16077 @item
16078 The executable contains a @dfn{build ID}, a unique bit string that is
16079 also present in the corresponding debug info file. (This is supported
16080 only on some operating systems, notably those which use the ELF format
16081 for binary files and the @sc{gnu} Binutils.) For more details about
16082 this feature, see the description of the @option{--build-id}
16083 command-line option in @ref{Options, , Command Line Options, ld.info,
16084 The GNU Linker}. The debug info file's name is not specified
16085 explicitly by the build ID, but can be computed from the build ID, see
16086 below.
16087 @end itemize
16088
16089 Depending on the way the debug info file is specified, @value{GDBN}
16090 uses two different methods of looking for the debug file:
16091
16092 @itemize @bullet
16093 @item
16094 For the ``debug link'' method, @value{GDBN} looks up the named file in
16095 the directory of the executable file, then in a subdirectory of that
16096 directory named @file{.debug}, and finally under the global debug
16097 directory, in a subdirectory whose name is identical to the leading
16098 directories of the executable's absolute file name.
16099
16100 @item
16101 For the ``build ID'' method, @value{GDBN} looks in the
16102 @file{.build-id} subdirectory of the global debug directory for a file
16103 named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
16104 first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
16105 are the rest of the bit string. (Real build ID strings are 32 or more
16106 hex characters, not 10.)
16107 @end itemize
16108
16109 So, for example, suppose you ask @value{GDBN} to debug
16110 @file{/usr/bin/ls}, which has a debug link that specifies the
16111 file @file{ls.debug}, and a build ID whose value in hex is
16112 @code{abcdef1234}. If the global debug directory is
16113 @file{/usr/lib/debug}, then @value{GDBN} will look for the following
16114 debug information files, in the indicated order:
16115
16116 @itemize @minus
16117 @item
16118 @file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
16119 @item
16120 @file{/usr/bin/ls.debug}
16121 @item
16122 @file{/usr/bin/.debug/ls.debug}
16123 @item
16124 @file{/usr/lib/debug/usr/bin/ls.debug}.
16125 @end itemize
16126
16127 You can set the global debugging info directory's name, and view the
16128 name @value{GDBN} is currently using.
16129
16130 @table @code
16131
16132 @kindex set debug-file-directory
16133 @item set debug-file-directory @var{directories}
16134 Set the directories which @value{GDBN} searches for separate debugging
16135 information files to @var{directory}. Multiple directory components can be set
16136 concatenating them by a directory separator.
16137
16138 @kindex show debug-file-directory
16139 @item show debug-file-directory
16140 Show the directories @value{GDBN} searches for separate debugging
16141 information files.
16142
16143 @end table
16144
16145 @cindex @code{.gnu_debuglink} sections
16146 @cindex debug link sections
16147 A debug link is a special section of the executable file named
16148 @code{.gnu_debuglink}. The section must contain:
16149
16150 @itemize
16151 @item
16152 A filename, with any leading directory components removed, followed by
16153 a zero byte,
16154 @item
16155 zero to three bytes of padding, as needed to reach the next four-byte
16156 boundary within the section, and
16157 @item
16158 a four-byte CRC checksum, stored in the same endianness used for the
16159 executable file itself. The checksum is computed on the debugging
16160 information file's full contents by the function given below, passing
16161 zero as the @var{crc} argument.
16162 @end itemize
16163
16164 Any executable file format can carry a debug link, as long as it can
16165 contain a section named @code{.gnu_debuglink} with the contents
16166 described above.
16167
16168 @cindex @code{.note.gnu.build-id} sections
16169 @cindex build ID sections
16170 The build ID is a special section in the executable file (and in other
16171 ELF binary files that @value{GDBN} may consider). This section is
16172 often named @code{.note.gnu.build-id}, but that name is not mandatory.
16173 It contains unique identification for the built files---the ID remains
16174 the same across multiple builds of the same build tree. The default
16175 algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
16176 content for the build ID string. The same section with an identical
16177 value is present in the original built binary with symbols, in its
16178 stripped variant, and in the separate debugging information file.
16179
16180 The debugging information file itself should be an ordinary
16181 executable, containing a full set of linker symbols, sections, and
16182 debugging information. The sections of the debugging information file
16183 should have the same names, addresses, and sizes as the original file,
16184 but they need not contain any data---much like a @code{.bss} section
16185 in an ordinary executable.
16186
16187 The @sc{gnu} binary utilities (Binutils) package includes the
16188 @samp{objcopy} utility that can produce
16189 the separated executable / debugging information file pairs using the
16190 following commands:
16191
16192 @smallexample
16193 @kbd{objcopy --only-keep-debug foo foo.debug}
16194 @kbd{strip -g foo}
16195 @end smallexample
16196
16197 @noindent
16198 These commands remove the debugging
16199 information from the executable file @file{foo} and place it in the file
16200 @file{foo.debug}. You can use the first, second or both methods to link the
16201 two files:
16202
16203 @itemize @bullet
16204 @item
16205 The debug link method needs the following additional command to also leave
16206 behind a debug link in @file{foo}:
16207
16208 @smallexample
16209 @kbd{objcopy --add-gnu-debuglink=foo.debug foo}
16210 @end smallexample
16211
16212 Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
16213 a version of the @code{strip} command such that the command @kbd{strip foo -f
16214 foo.debug} has the same functionality as the two @code{objcopy} commands and
16215 the @code{ln -s} command above, together.
16216
16217 @item
16218 Build ID gets embedded into the main executable using @code{ld --build-id} or
16219 the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
16220 compatibility fixes for debug files separation are present in @sc{gnu} binary
16221 utilities (Binutils) package since version 2.18.
16222 @end itemize
16223
16224 @noindent
16225
16226 @cindex CRC algorithm definition
16227 The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
16228 IEEE 802.3 using the polynomial:
16229
16230 @c TexInfo requires naked braces for multi-digit exponents for Tex
16231 @c output, but this causes HTML output to barf. HTML has to be set using
16232 @c raw commands. So we end up having to specify this equation in 2
16233 @c different ways!
16234 @ifhtml
16235 @display
16236 @html
16237 <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>
16238 + <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
16239 @end html
16240 @end display
16241 @end ifhtml
16242 @ifnothtml
16243 @display
16244 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
16245 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
16246 @end display
16247 @end ifnothtml
16248
16249 The function is computed byte at a time, taking the least
16250 significant bit of each byte first. The initial pattern
16251 @code{0xffffffff} is used, to ensure leading zeros affect the CRC and
16252 the final result is inverted to ensure trailing zeros also affect the
16253 CRC.
16254
16255 @emph{Note:} This is the same CRC polynomial as used in handling the
16256 @dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
16257 , @value{GDBN} Remote Serial Protocol}). However in the
16258 case of the Remote Serial Protocol, the CRC is computed @emph{most}
16259 significant bit first, and the result is not inverted, so trailing
16260 zeros have no effect on the CRC value.
16261
16262 To complete the description, we show below the code of the function
16263 which produces the CRC used in @code{.gnu_debuglink}. Inverting the
16264 initially supplied @code{crc} argument means that an initial call to
16265 this function passing in zero will start computing the CRC using
16266 @code{0xffffffff}.
16267
16268 @kindex gnu_debuglink_crc32
16269 @smallexample
16270 unsigned long
16271 gnu_debuglink_crc32 (unsigned long crc,
16272 unsigned char *buf, size_t len)
16273 @{
16274 static const unsigned long crc32_table[256] =
16275 @{
16276 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
16277 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
16278 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
16279 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
16280 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
16281 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
16282 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
16283 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
16284 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
16285 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
16286 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
16287 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
16288 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
16289 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
16290 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
16291 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
16292 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
16293 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
16294 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
16295 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
16296 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
16297 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
16298 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
16299 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
16300 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
16301 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
16302 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
16303 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
16304 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
16305 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
16306 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
16307 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
16308 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
16309 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
16310 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
16311 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
16312 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
16313 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
16314 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
16315 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
16316 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
16317 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
16318 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
16319 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
16320 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
16321 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
16322 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
16323 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
16324 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
16325 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
16326 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
16327 0x2d02ef8d
16328 @};
16329 unsigned char *end;
16330
16331 crc = ~crc & 0xffffffff;
16332 for (end = buf + len; buf < end; ++buf)
16333 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
16334 return ~crc & 0xffffffff;
16335 @}
16336 @end smallexample
16337
16338 @noindent
16339 This computation does not apply to the ``build ID'' method.
16340
16341
16342 @node Index Files
16343 @section Index Files Speed Up @value{GDBN}
16344 @cindex index files
16345 @cindex @samp{.gdb_index} section
16346
16347 When @value{GDBN} finds a symbol file, it scans the symbols in the
16348 file in order to construct an internal symbol table. This lets most
16349 @value{GDBN} operations work quickly---at the cost of a delay early
16350 on. For large programs, this delay can be quite lengthy, so
16351 @value{GDBN} provides a way to build an index, which speeds up
16352 startup.
16353
16354 The index is stored as a section in the symbol file. @value{GDBN} can
16355 write the index to a file, then you can put it into the symbol file
16356 using @command{objcopy}.
16357
16358 To create an index file, use the @code{save gdb-index} command:
16359
16360 @table @code
16361 @item save gdb-index @var{directory}
16362 @kindex save gdb-index
16363 Create an index file for each symbol file currently known by
16364 @value{GDBN}. Each file is named after its corresponding symbol file,
16365 with @samp{.gdb-index} appended, and is written into the given
16366 @var{directory}.
16367 @end table
16368
16369 Once you have created an index file you can merge it into your symbol
16370 file, here named @file{symfile}, using @command{objcopy}:
16371
16372 @smallexample
16373 $ objcopy --add-section .gdb_index=symfile.gdb-index \
16374 --set-section-flags .gdb_index=readonly symfile symfile
16375 @end smallexample
16376
16377 There are currently some limitation on indices. They only work when
16378 for DWARF debugging information, not stabs. And, they do not
16379 currently work for programs using Ada.
16380
16381 @node Symbol Errors
16382 @section Errors Reading Symbol Files
16383
16384 While reading a symbol file, @value{GDBN} occasionally encounters problems,
16385 such as symbol types it does not recognize, or known bugs in compiler
16386 output. By default, @value{GDBN} does not notify you of such problems, since
16387 they are relatively common and primarily of interest to people
16388 debugging compilers. If you are interested in seeing information
16389 about ill-constructed symbol tables, you can either ask @value{GDBN} to print
16390 only one message about each such type of problem, no matter how many
16391 times the problem occurs; or you can ask @value{GDBN} to print more messages,
16392 to see how many times the problems occur, with the @code{set
16393 complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
16394 Messages}).
16395
16396 The messages currently printed, and their meanings, include:
16397
16398 @table @code
16399 @item inner block not inside outer block in @var{symbol}
16400
16401 The symbol information shows where symbol scopes begin and end
16402 (such as at the start of a function or a block of statements). This
16403 error indicates that an inner scope block is not fully contained
16404 in its outer scope blocks.
16405
16406 @value{GDBN} circumvents the problem by treating the inner block as if it had
16407 the same scope as the outer block. In the error message, @var{symbol}
16408 may be shown as ``@code{(don't know)}'' if the outer block is not a
16409 function.
16410
16411 @item block at @var{address} out of order
16412
16413 The symbol information for symbol scope blocks should occur in
16414 order of increasing addresses. This error indicates that it does not
16415 do so.
16416
16417 @value{GDBN} does not circumvent this problem, and has trouble
16418 locating symbols in the source file whose symbols it is reading. (You
16419 can often determine what source file is affected by specifying
16420 @code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
16421 Messages}.)
16422
16423 @item bad block start address patched
16424
16425 The symbol information for a symbol scope block has a start address
16426 smaller than the address of the preceding source line. This is known
16427 to occur in the SunOS 4.1.1 (and earlier) C compiler.
16428
16429 @value{GDBN} circumvents the problem by treating the symbol scope block as
16430 starting on the previous source line.
16431
16432 @item bad string table offset in symbol @var{n}
16433
16434 @cindex foo
16435 Symbol number @var{n} contains a pointer into the string table which is
16436 larger than the size of the string table.
16437
16438 @value{GDBN} circumvents the problem by considering the symbol to have the
16439 name @code{foo}, which may cause other problems if many symbols end up
16440 with this name.
16441
16442 @item unknown symbol type @code{0x@var{nn}}
16443
16444 The symbol information contains new data types that @value{GDBN} does
16445 not yet know how to read. @code{0x@var{nn}} is the symbol type of the
16446 uncomprehended information, in hexadecimal.
16447
16448 @value{GDBN} circumvents the error by ignoring this symbol information.
16449 This usually allows you to debug your program, though certain symbols
16450 are not accessible. If you encounter such a problem and feel like
16451 debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
16452 on @code{complain}, then go up to the function @code{read_dbx_symtab}
16453 and examine @code{*bufp} to see the symbol.
16454
16455 @item stub type has NULL name
16456
16457 @value{GDBN} could not find the full definition for a struct or class.
16458
16459 @item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
16460 The symbol information for a C@t{++} member function is missing some
16461 information that recent versions of the compiler should have output for
16462 it.
16463
16464 @item info mismatch between compiler and debugger
16465
16466 @value{GDBN} could not parse a type specification output by the compiler.
16467
16468 @end table
16469
16470 @node Data Files
16471 @section GDB Data Files
16472
16473 @cindex prefix for data files
16474 @value{GDBN} will sometimes read an auxiliary data file. These files
16475 are kept in a directory known as the @dfn{data directory}.
16476
16477 You can set the data directory's name, and view the name @value{GDBN}
16478 is currently using.
16479
16480 @table @code
16481 @kindex set data-directory
16482 @item set data-directory @var{directory}
16483 Set the directory which @value{GDBN} searches for auxiliary data files
16484 to @var{directory}.
16485
16486 @kindex show data-directory
16487 @item show data-directory
16488 Show the directory @value{GDBN} searches for auxiliary data files.
16489 @end table
16490
16491 @cindex default data directory
16492 @cindex @samp{--with-gdb-datadir}
16493 You can set the default data directory by using the configure-time
16494 @samp{--with-gdb-datadir} option. If the data directory is inside
16495 @value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16496 @samp{--exec-prefix}), then the default data directory will be updated
16497 automatically if the installed @value{GDBN} is moved to a new
16498 location.
16499
16500 The data directory may also be specified with the
16501 @code{--data-directory} command line option.
16502 @xref{Mode Options}.
16503
16504 @node Targets
16505 @chapter Specifying a Debugging Target
16506
16507 @cindex debugging target
16508 A @dfn{target} is the execution environment occupied by your program.
16509
16510 Often, @value{GDBN} runs in the same host environment as your program;
16511 in that case, the debugging target is specified as a side effect when
16512 you use the @code{file} or @code{core} commands. When you need more
16513 flexibility---for example, running @value{GDBN} on a physically separate
16514 host, or controlling a standalone system over a serial port or a
16515 realtime system over a TCP/IP connection---you can use the @code{target}
16516 command to specify one of the target types configured for @value{GDBN}
16517 (@pxref{Target Commands, ,Commands for Managing Targets}).
16518
16519 @cindex target architecture
16520 It is possible to build @value{GDBN} for several different @dfn{target
16521 architectures}. When @value{GDBN} is built like that, you can choose
16522 one of the available architectures with the @kbd{set architecture}
16523 command.
16524
16525 @table @code
16526 @kindex set architecture
16527 @kindex show architecture
16528 @item set architecture @var{arch}
16529 This command sets the current target architecture to @var{arch}. The
16530 value of @var{arch} can be @code{"auto"}, in addition to one of the
16531 supported architectures.
16532
16533 @item show architecture
16534 Show the current target architecture.
16535
16536 @item set processor
16537 @itemx processor
16538 @kindex set processor
16539 @kindex show processor
16540 These are alias commands for, respectively, @code{set architecture}
16541 and @code{show architecture}.
16542 @end table
16543
16544 @menu
16545 * Active Targets:: Active targets
16546 * Target Commands:: Commands for managing targets
16547 * Byte Order:: Choosing target byte order
16548 @end menu
16549
16550 @node Active Targets
16551 @section Active Targets
16552
16553 @cindex stacking targets
16554 @cindex active targets
16555 @cindex multiple targets
16556
16557 There are multiple classes of targets such as: processes, executable files or
16558 recording sessions. Core files belong to the process class, making core file
16559 and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently
16560 on multiple active targets, one in each class. This allows you to (for
16561 example) start a process and inspect its activity, while still having access to
16562 the executable file after the process finishes. Or if you start process
16563 recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are
16564 presented a virtual layer of the recording target, while the process target
16565 remains stopped at the chronologically last point of the process execution.
16566
16567 Use the @code{core-file} and @code{exec-file} commands to select a new core
16568 file or executable target (@pxref{Files, ,Commands to Specify Files}). To
16569 specify as a target a process that is already running, use the @code{attach}
16570 command (@pxref{Attach, ,Debugging an Already-running Process}).
16571
16572 @node Target Commands
16573 @section Commands for Managing Targets
16574
16575 @table @code
16576 @item target @var{type} @var{parameters}
16577 Connects the @value{GDBN} host environment to a target machine or
16578 process. A target is typically a protocol for talking to debugging
16579 facilities. You use the argument @var{type} to specify the type or
16580 protocol of the target machine.
16581
16582 Further @var{parameters} are interpreted by the target protocol, but
16583 typically include things like device names or host names to connect
16584 with, process numbers, and baud rates.
16585
16586 The @code{target} command does not repeat if you press @key{RET} again
16587 after executing the command.
16588
16589 @kindex help target
16590 @item help target
16591 Displays the names of all targets available. To display targets
16592 currently selected, use either @code{info target} or @code{info files}
16593 (@pxref{Files, ,Commands to Specify Files}).
16594
16595 @item help target @var{name}
16596 Describe a particular target, including any parameters necessary to
16597 select it.
16598
16599 @kindex set gnutarget
16600 @item set gnutarget @var{args}
16601 @value{GDBN} uses its own library BFD to read your files. @value{GDBN}
16602 knows whether it is reading an @dfn{executable},
16603 a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
16604 with the @code{set gnutarget} command. Unlike most @code{target} commands,
16605 with @code{gnutarget} the @code{target} refers to a program, not a machine.
16606
16607 @quotation
16608 @emph{Warning:} To specify a file format with @code{set gnutarget},
16609 you must know the actual BFD name.
16610 @end quotation
16611
16612 @noindent
16613 @xref{Files, , Commands to Specify Files}.
16614
16615 @kindex show gnutarget
16616 @item show gnutarget
16617 Use the @code{show gnutarget} command to display what file format
16618 @code{gnutarget} is set to read. If you have not set @code{gnutarget},
16619 @value{GDBN} will determine the file format for each file automatically,
16620 and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
16621 @end table
16622
16623 @cindex common targets
16624 Here are some common targets (available, or not, depending on the GDB
16625 configuration):
16626
16627 @table @code
16628 @kindex target
16629 @item target exec @var{program}
16630 @cindex executable file target
16631 An executable file. @samp{target exec @var{program}} is the same as
16632 @samp{exec-file @var{program}}.
16633
16634 @item target core @var{filename}
16635 @cindex core dump file target
16636 A core dump file. @samp{target core @var{filename}} is the same as
16637 @samp{core-file @var{filename}}.
16638
16639 @item target remote @var{medium}
16640 @cindex remote target
16641 A remote system connected to @value{GDBN} via a serial line or network
16642 connection. This command tells @value{GDBN} to use its own remote
16643 protocol over @var{medium} for debugging. @xref{Remote Debugging}.
16644
16645 For example, if you have a board connected to @file{/dev/ttya} on the
16646 machine running @value{GDBN}, you could say:
16647
16648 @smallexample
16649 target remote /dev/ttya
16650 @end smallexample
16651
16652 @code{target remote} supports the @code{load} command. This is only
16653 useful if you have some other way of getting the stub to the target
16654 system, and you can put it somewhere in memory where it won't get
16655 clobbered by the download.
16656
16657 @item target sim @r{[}@var{simargs}@r{]} @dots{}
16658 @cindex built-in simulator target
16659 Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
16660 In general,
16661 @smallexample
16662 target sim
16663 load
16664 run
16665 @end smallexample
16666 @noindent
16667 works; however, you cannot assume that a specific memory map, device
16668 drivers, or even basic I/O is available, although some simulators do
16669 provide these. For info about any processor-specific simulator details,
16670 see the appropriate section in @ref{Embedded Processors, ,Embedded
16671 Processors}.
16672
16673 @end table
16674
16675 Some configurations may include these targets as well:
16676
16677 @table @code
16678
16679 @item target nrom @var{dev}
16680 @cindex NetROM ROM emulator target
16681 NetROM ROM emulator. This target only supports downloading.
16682
16683 @end table
16684
16685 Different targets are available on different configurations of @value{GDBN};
16686 your configuration may have more or fewer targets.
16687
16688 Many remote targets require you to download the executable's code once
16689 you've successfully established a connection. You may wish to control
16690 various aspects of this process.
16691
16692 @table @code
16693
16694 @item set hash
16695 @kindex set hash@r{, for remote monitors}
16696 @cindex hash mark while downloading
16697 This command controls whether a hash mark @samp{#} is displayed while
16698 downloading a file to the remote monitor. If on, a hash mark is
16699 displayed after each S-record is successfully downloaded to the
16700 monitor.
16701
16702 @item show hash
16703 @kindex show hash@r{, for remote monitors}
16704 Show the current status of displaying the hash mark.
16705
16706 @item set debug monitor
16707 @kindex set debug monitor
16708 @cindex display remote monitor communications
16709 Enable or disable display of communications messages between
16710 @value{GDBN} and the remote monitor.
16711
16712 @item show debug monitor
16713 @kindex show debug monitor
16714 Show the current status of displaying communications between
16715 @value{GDBN} and the remote monitor.
16716 @end table
16717
16718 @table @code
16719
16720 @kindex load @var{filename}
16721 @item load @var{filename}
16722 @anchor{load}
16723 Depending on what remote debugging facilities are configured into
16724 @value{GDBN}, the @code{load} command may be available. Where it exists, it
16725 is meant to make @var{filename} (an executable) available for debugging
16726 on the remote system---by downloading, or dynamic linking, for example.
16727 @code{load} also records the @var{filename} symbol table in @value{GDBN}, like
16728 the @code{add-symbol-file} command.
16729
16730 If your @value{GDBN} does not have a @code{load} command, attempting to
16731 execute it gets the error message ``@code{You can't do that when your
16732 target is @dots{}}''
16733
16734 The file is loaded at whatever address is specified in the executable.
16735 For some object file formats, you can specify the load address when you
16736 link the program; for other formats, like a.out, the object file format
16737 specifies a fixed address.
16738 @c FIXME! This would be a good place for an xref to the GNU linker doc.
16739
16740 Depending on the remote side capabilities, @value{GDBN} may be able to
16741 load programs into flash memory.
16742
16743 @code{load} does not repeat if you press @key{RET} again after using it.
16744 @end table
16745
16746 @node Byte Order
16747 @section Choosing Target Byte Order
16748
16749 @cindex choosing target byte order
16750 @cindex target byte order
16751
16752 Some types of processors, such as the MIPS, PowerPC, and Renesas SH,
16753 offer the ability to run either big-endian or little-endian byte
16754 orders. Usually the executable or symbol will include a bit to
16755 designate the endian-ness, and you will not need to worry about
16756 which to use. However, you may still find it useful to adjust
16757 @value{GDBN}'s idea of processor endian-ness manually.
16758
16759 @table @code
16760 @kindex set endian
16761 @item set endian big
16762 Instruct @value{GDBN} to assume the target is big-endian.
16763
16764 @item set endian little
16765 Instruct @value{GDBN} to assume the target is little-endian.
16766
16767 @item set endian auto
16768 Instruct @value{GDBN} to use the byte order associated with the
16769 executable.
16770
16771 @item show endian
16772 Display @value{GDBN}'s current idea of the target byte order.
16773
16774 @end table
16775
16776 Note that these commands merely adjust interpretation of symbolic
16777 data on the host, and that they have absolutely no effect on the
16778 target system.
16779
16780
16781 @node Remote Debugging
16782 @chapter Debugging Remote Programs
16783 @cindex remote debugging
16784
16785 If you are trying to debug a program running on a machine that cannot run
16786 @value{GDBN} in the usual way, it is often useful to use remote debugging.
16787 For example, you might use remote debugging on an operating system kernel,
16788 or on a small system which does not have a general purpose operating system
16789 powerful enough to run a full-featured debugger.
16790
16791 Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
16792 to make this work with particular debugging targets. In addition,
16793 @value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
16794 but not specific to any particular target system) which you can use if you
16795 write the remote stubs---the code that runs on the remote system to
16796 communicate with @value{GDBN}.
16797
16798 Other remote targets may be available in your
16799 configuration of @value{GDBN}; use @code{help target} to list them.
16800
16801 @menu
16802 * Connecting:: Connecting to a remote target
16803 * File Transfer:: Sending files to a remote system
16804 * Server:: Using the gdbserver program
16805 * Remote Configuration:: Remote configuration
16806 * Remote Stub:: Implementing a remote stub
16807 @end menu
16808
16809 @node Connecting
16810 @section Connecting to a Remote Target
16811
16812 On the @value{GDBN} host machine, you will need an unstripped copy of
16813 your program, since @value{GDBN} needs symbol and debugging information.
16814 Start up @value{GDBN} as usual, using the name of the local copy of your
16815 program as the first argument.
16816
16817 @cindex @code{target remote}
16818 @value{GDBN} can communicate with the target over a serial line, or
16819 over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
16820 each case, @value{GDBN} uses the same protocol for debugging your
16821 program; only the medium carrying the debugging packets varies. The
16822 @code{target remote} command establishes a connection to the target.
16823 Its arguments indicate which medium to use:
16824
16825 @table @code
16826
16827 @item target remote @var{serial-device}
16828 @cindex serial line, @code{target remote}
16829 Use @var{serial-device} to communicate with the target. For example,
16830 to use a serial line connected to the device named @file{/dev/ttyb}:
16831
16832 @smallexample
16833 target remote /dev/ttyb
16834 @end smallexample
16835
16836 If you're using a serial line, you may want to give @value{GDBN} the
16837 @w{@samp{--baud}} option, or use the @code{set remotebaud} command
16838 (@pxref{Remote Configuration, set remotebaud}) before the
16839 @code{target} command.
16840
16841 @item target remote @code{@var{host}:@var{port}}
16842 @itemx target remote @code{tcp:@var{host}:@var{port}}
16843 @cindex @acronym{TCP} port, @code{target remote}
16844 Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
16845 The @var{host} may be either a host name or a numeric @acronym{IP}
16846 address; @var{port} must be a decimal number. The @var{host} could be
16847 the target machine itself, if it is directly connected to the net, or
16848 it might be a terminal server which in turn has a serial line to the
16849 target.
16850
16851 For example, to connect to port 2828 on a terminal server named
16852 @code{manyfarms}:
16853
16854 @smallexample
16855 target remote manyfarms:2828
16856 @end smallexample
16857
16858 If your remote target is actually running on the same machine as your
16859 debugger session (e.g.@: a simulator for your target running on the
16860 same host), you can omit the hostname. For example, to connect to
16861 port 1234 on your local machine:
16862
16863 @smallexample
16864 target remote :1234
16865 @end smallexample
16866 @noindent
16867
16868 Note that the colon is still required here.
16869
16870 @item target remote @code{udp:@var{host}:@var{port}}
16871 @cindex @acronym{UDP} port, @code{target remote}
16872 Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
16873 connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
16874
16875 @smallexample
16876 target remote udp:manyfarms:2828
16877 @end smallexample
16878
16879 When using a @acronym{UDP} connection for remote debugging, you should
16880 keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
16881 can silently drop packets on busy or unreliable networks, which will
16882 cause havoc with your debugging session.
16883
16884 @item target remote | @var{command}
16885 @cindex pipe, @code{target remote} to
16886 Run @var{command} in the background and communicate with it using a
16887 pipe. The @var{command} is a shell command, to be parsed and expanded
16888 by the system's command shell, @code{/bin/sh}; it should expect remote
16889 protocol packets on its standard input, and send replies on its
16890 standard output. You could use this to run a stand-alone simulator
16891 that speaks the remote debugging protocol, to make net connections
16892 using programs like @code{ssh}, or for other similar tricks.
16893
16894 If @var{command} closes its standard output (perhaps by exiting),
16895 @value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
16896 program has already exited, this will have no effect.)
16897
16898 @end table
16899
16900 Once the connection has been established, you can use all the usual
16901 commands to examine and change data. The remote program is already
16902 running; you can use @kbd{step} and @kbd{continue}, and you do not
16903 need to use @kbd{run}.
16904
16905 @cindex interrupting remote programs
16906 @cindex remote programs, interrupting
16907 Whenever @value{GDBN} is waiting for the remote program, if you type the
16908 interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
16909 program. This may or may not succeed, depending in part on the hardware
16910 and the serial drivers the remote system uses. If you type the
16911 interrupt character once again, @value{GDBN} displays this prompt:
16912
16913 @smallexample
16914 Interrupted while waiting for the program.
16915 Give up (and stop debugging it)? (y or n)
16916 @end smallexample
16917
16918 If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
16919 (If you decide you want to try again later, you can use @samp{target
16920 remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
16921 goes back to waiting.
16922
16923 @table @code
16924 @kindex detach (remote)
16925 @item detach
16926 When you have finished debugging the remote program, you can use the
16927 @code{detach} command to release it from @value{GDBN} control.
16928 Detaching from the target normally resumes its execution, but the results
16929 will depend on your particular remote stub. After the @code{detach}
16930 command, @value{GDBN} is free to connect to another target.
16931
16932 @kindex disconnect
16933 @item disconnect
16934 The @code{disconnect} command behaves like @code{detach}, except that
16935 the target is generally not resumed. It will wait for @value{GDBN}
16936 (this instance or another one) to connect and continue debugging. After
16937 the @code{disconnect} command, @value{GDBN} is again free to connect to
16938 another target.
16939
16940 @cindex send command to remote monitor
16941 @cindex extend @value{GDBN} for remote targets
16942 @cindex add new commands for external monitor
16943 @kindex monitor
16944 @item monitor @var{cmd}
16945 This command allows you to send arbitrary commands directly to the
16946 remote monitor. Since @value{GDBN} doesn't care about the commands it
16947 sends like this, this command is the way to extend @value{GDBN}---you
16948 can add new commands that only the external monitor will understand
16949 and implement.
16950 @end table
16951
16952 @node File Transfer
16953 @section Sending files to a remote system
16954 @cindex remote target, file transfer
16955 @cindex file transfer
16956 @cindex sending files to remote systems
16957
16958 Some remote targets offer the ability to transfer files over the same
16959 connection used to communicate with @value{GDBN}. This is convenient
16960 for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
16961 running @code{gdbserver} over a network interface. For other targets,
16962 e.g.@: embedded devices with only a single serial port, this may be
16963 the only way to upload or download files.
16964
16965 Not all remote targets support these commands.
16966
16967 @table @code
16968 @kindex remote put
16969 @item remote put @var{hostfile} @var{targetfile}
16970 Copy file @var{hostfile} from the host system (the machine running
16971 @value{GDBN}) to @var{targetfile} on the target system.
16972
16973 @kindex remote get
16974 @item remote get @var{targetfile} @var{hostfile}
16975 Copy file @var{targetfile} from the target system to @var{hostfile}
16976 on the host system.
16977
16978 @kindex remote delete
16979 @item remote delete @var{targetfile}
16980 Delete @var{targetfile} from the target system.
16981
16982 @end table
16983
16984 @node Server
16985 @section Using the @code{gdbserver} Program
16986
16987 @kindex gdbserver
16988 @cindex remote connection without stubs
16989 @code{gdbserver} is a control program for Unix-like systems, which
16990 allows you to connect your program with a remote @value{GDBN} via
16991 @code{target remote}---but without linking in the usual debugging stub.
16992
16993 @code{gdbserver} is not a complete replacement for the debugging stubs,
16994 because it requires essentially the same operating-system facilities
16995 that @value{GDBN} itself does. In fact, a system that can run
16996 @code{gdbserver} to connect to a remote @value{GDBN} could also run
16997 @value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
16998 because it is a much smaller program than @value{GDBN} itself. It is
16999 also easier to port than all of @value{GDBN}, so you may be able to get
17000 started more quickly on a new system by using @code{gdbserver}.
17001 Finally, if you develop code for real-time systems, you may find that
17002 the tradeoffs involved in real-time operation make it more convenient to
17003 do as much development work as possible on another system, for example
17004 by cross-compiling. You can use @code{gdbserver} to make a similar
17005 choice for debugging.
17006
17007 @value{GDBN} and @code{gdbserver} communicate via either a serial line
17008 or a TCP connection, using the standard @value{GDBN} remote serial
17009 protocol.
17010
17011 @quotation
17012 @emph{Warning:} @code{gdbserver} does not have any built-in security.
17013 Do not run @code{gdbserver} connected to any public network; a
17014 @value{GDBN} connection to @code{gdbserver} provides access to the
17015 target system with the same privileges as the user running
17016 @code{gdbserver}.
17017 @end quotation
17018
17019 @subsection Running @code{gdbserver}
17020 @cindex arguments, to @code{gdbserver}
17021 @cindex @code{gdbserver}, command-line arguments
17022
17023 Run @code{gdbserver} on the target system. You need a copy of the
17024 program you want to debug, including any libraries it requires.
17025 @code{gdbserver} does not need your program's symbol table, so you can
17026 strip the program if necessary to save space. @value{GDBN} on the host
17027 system does all the symbol handling.
17028
17029 To use the server, you must tell it how to communicate with @value{GDBN};
17030 the name of your program; and the arguments for your program. The usual
17031 syntax is:
17032
17033 @smallexample
17034 target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
17035 @end smallexample
17036
17037 @var{comm} is either a device name (to use a serial line), or a TCP
17038 hostname and portnumber, or @code{-} or @code{stdio} to use
17039 stdin/stdout of @code{gdbserver}.
17040 For example, to debug Emacs with the argument
17041 @samp{foo.txt} and communicate with @value{GDBN} over the serial port
17042 @file{/dev/com1}:
17043
17044 @smallexample
17045 target> gdbserver /dev/com1 emacs foo.txt
17046 @end smallexample
17047
17048 @code{gdbserver} waits passively for the host @value{GDBN} to communicate
17049 with it.
17050
17051 To use a TCP connection instead of a serial line:
17052
17053 @smallexample
17054 target> gdbserver host:2345 emacs foo.txt
17055 @end smallexample
17056
17057 The only difference from the previous example is the first argument,
17058 specifying that you are communicating with the host @value{GDBN} via
17059 TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
17060 expect a TCP connection from machine @samp{host} to local TCP port 2345.
17061 (Currently, the @samp{host} part is ignored.) You can choose any number
17062 you want for the port number as long as it does not conflict with any
17063 TCP ports already in use on the target system (for example, @code{23} is
17064 reserved for @code{telnet}).@footnote{If you choose a port number that
17065 conflicts with another service, @code{gdbserver} prints an error message
17066 and exits.} You must use the same port number with the host @value{GDBN}
17067 @code{target remote} command.
17068
17069 The @code{stdio} connection is useful when starting @code{gdbserver}
17070 with ssh:
17071
17072 @smallexample
17073 (gdb) target remote | ssh -T hostname gdbserver - hello
17074 @end smallexample
17075
17076 The @samp{-T} option to ssh is provided because we don't need a remote pty,
17077 and we don't want escape-character handling. Ssh does this by default when
17078 a command is provided, the flag is provided to make it explicit.
17079 You could elide it if you want to.
17080
17081 Programs started with stdio-connected gdbserver have @file{/dev/null} for
17082 @code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for
17083 display through a pipe connected to gdbserver.
17084 Both @code{stdout} and @code{stderr} use the same pipe.
17085
17086 @subsubsection Attaching to a Running Program
17087 @cindex attach to a program, @code{gdbserver}
17088 @cindex @option{--attach}, @code{gdbserver} option
17089
17090 On some targets, @code{gdbserver} can also attach to running programs.
17091 This is accomplished via the @code{--attach} argument. The syntax is:
17092
17093 @smallexample
17094 target> gdbserver --attach @var{comm} @var{pid}
17095 @end smallexample
17096
17097 @var{pid} is the process ID of a currently running process. It isn't necessary
17098 to point @code{gdbserver} at a binary for the running process.
17099
17100 @pindex pidof
17101 You can debug processes by name instead of process ID if your target has the
17102 @code{pidof} utility:
17103
17104 @smallexample
17105 target> gdbserver --attach @var{comm} `pidof @var{program}`
17106 @end smallexample
17107
17108 In case more than one copy of @var{program} is running, or @var{program}
17109 has multiple threads, most versions of @code{pidof} support the
17110 @code{-s} option to only return the first process ID.
17111
17112 @subsubsection Multi-Process Mode for @code{gdbserver}
17113 @cindex @code{gdbserver}, multiple processes
17114 @cindex multiple processes with @code{gdbserver}
17115
17116 When you connect to @code{gdbserver} using @code{target remote},
17117 @code{gdbserver} debugs the specified program only once. When the
17118 program exits, or you detach from it, @value{GDBN} closes the connection
17119 and @code{gdbserver} exits.
17120
17121 If you connect using @kbd{target extended-remote}, @code{gdbserver}
17122 enters multi-process mode. When the debugged program exits, or you
17123 detach from it, @value{GDBN} stays connected to @code{gdbserver} even
17124 though no program is running. The @code{run} and @code{attach}
17125 commands instruct @code{gdbserver} to run or attach to a new program.
17126 The @code{run} command uses @code{set remote exec-file} (@pxref{set
17127 remote exec-file}) to select the program to run. Command line
17128 arguments are supported, except for wildcard expansion and I/O
17129 redirection (@pxref{Arguments}).
17130
17131 @cindex @option{--multi}, @code{gdbserver} option
17132 To start @code{gdbserver} without supplying an initial command to run
17133 or process ID to attach, use the @option{--multi} command line option.
17134 Then you can connect using @kbd{target extended-remote} and start
17135 the program you want to debug.
17136
17137 In multi-process mode @code{gdbserver} does not automatically exit unless you
17138 use the option @option{--once}. You can terminate it by using
17139 @code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the
17140 conditions under which @code{gdbserver} terminates depend on how @value{GDBN}
17141 connects to it (@kbd{target remote} or @kbd{target extended-remote}). The
17142 @option{--multi} option to @code{gdbserver} has no influence on that.
17143
17144 @subsubsection TCP port allocation lifecycle of @code{gdbserver}
17145
17146 This section applies only when @code{gdbserver} is run to listen on a TCP port.
17147
17148 @code{gdbserver} normally terminates after all of its debugged processes have
17149 terminated in @kbd{target remote} mode. On the other hand, for @kbd{target
17150 extended-remote}, @code{gdbserver} stays running even with no processes left.
17151 @value{GDBN} normally terminates the spawned debugged process on its exit,
17152 which normally also terminates @code{gdbserver} in the @kbd{target remote}
17153 mode. Therefore, when the connection drops unexpectedly, and @value{GDBN}
17154 cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver}
17155 stays running even in the @kbd{target remote} mode.
17156
17157 When @code{gdbserver} stays running, @value{GDBN} can connect to it again later.
17158 Such reconnecting is useful for features like @ref{disconnected tracing}. For
17159 completeness, at most one @value{GDBN} can be connected at a time.
17160
17161 @cindex @option{--once}, @code{gdbserver} option
17162 By default, @code{gdbserver} keeps the listening TCP port open, so that
17163 additional connections are possible. However, if you start @code{gdbserver}
17164 with the @option{--once} option, it will stop listening for any further
17165 connection attempts after connecting to the first @value{GDBN} session. This
17166 means no further connections to @code{gdbserver} will be possible after the
17167 first one. It also means @code{gdbserver} will terminate after the first
17168 connection with remote @value{GDBN} has closed, even for unexpectedly closed
17169 connections and even in the @kbd{target extended-remote} mode. The
17170 @option{--once} option allows reusing the same port number for connecting to
17171 multiple instances of @code{gdbserver} running on the same host, since each
17172 instance closes its port after the first connection.
17173
17174 @subsubsection Other Command-Line Arguments for @code{gdbserver}
17175
17176 @cindex @option{--debug}, @code{gdbserver} option
17177 The @option{--debug} option tells @code{gdbserver} to display extra
17178 status information about the debugging process.
17179 @cindex @option{--remote-debug}, @code{gdbserver} option
17180 The @option{--remote-debug} option tells @code{gdbserver} to display
17181 remote protocol debug output. These options are intended for
17182 @code{gdbserver} development and for bug reports to the developers.
17183
17184 @cindex @option{--wrapper}, @code{gdbserver} option
17185 The @option{--wrapper} option specifies a wrapper to launch programs
17186 for debugging. The option should be followed by the name of the
17187 wrapper, then any command-line arguments to pass to the wrapper, then
17188 @kbd{--} indicating the end of the wrapper arguments.
17189
17190 @code{gdbserver} runs the specified wrapper program with a combined
17191 command line including the wrapper arguments, then the name of the
17192 program to debug, then any arguments to the program. The wrapper
17193 runs until it executes your program, and then @value{GDBN} gains control.
17194
17195 You can use any program that eventually calls @code{execve} with
17196 its arguments as a wrapper. Several standard Unix utilities do
17197 this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
17198 with @code{exec "$@@"} will also work.
17199
17200 For example, you can use @code{env} to pass an environment variable to
17201 the debugged program, without setting the variable in @code{gdbserver}'s
17202 environment:
17203
17204 @smallexample
17205 $ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
17206 @end smallexample
17207
17208 @subsection Connecting to @code{gdbserver}
17209
17210 Run @value{GDBN} on the host system.
17211
17212 First make sure you have the necessary symbol files. Load symbols for
17213 your application using the @code{file} command before you connect. Use
17214 @code{set sysroot} to locate target libraries (unless your @value{GDBN}
17215 was compiled with the correct sysroot using @code{--with-sysroot}).
17216
17217 The symbol file and target libraries must exactly match the executable
17218 and libraries on the target, with one exception: the files on the host
17219 system should not be stripped, even if the files on the target system
17220 are. Mismatched or missing files will lead to confusing results
17221 during debugging. On @sc{gnu}/Linux targets, mismatched or missing
17222 files may also prevent @code{gdbserver} from debugging multi-threaded
17223 programs.
17224
17225 Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
17226 For TCP connections, you must start up @code{gdbserver} prior to using
17227 the @code{target remote} command. Otherwise you may get an error whose
17228 text depends on the host system, but which usually looks something like
17229 @samp{Connection refused}. Don't use the @code{load}
17230 command in @value{GDBN} when using @code{gdbserver}, since the program is
17231 already on the target.
17232
17233 @subsection Monitor Commands for @code{gdbserver}
17234 @cindex monitor commands, for @code{gdbserver}
17235 @anchor{Monitor Commands for gdbserver}
17236
17237 During a @value{GDBN} session using @code{gdbserver}, you can use the
17238 @code{monitor} command to send special requests to @code{gdbserver}.
17239 Here are the available commands.
17240
17241 @table @code
17242 @item monitor help
17243 List the available monitor commands.
17244
17245 @item monitor set debug 0
17246 @itemx monitor set debug 1
17247 Disable or enable general debugging messages.
17248
17249 @item monitor set remote-debug 0
17250 @itemx monitor set remote-debug 1
17251 Disable or enable specific debugging messages associated with the remote
17252 protocol (@pxref{Remote Protocol}).
17253
17254 @item monitor set libthread-db-search-path [PATH]
17255 @cindex gdbserver, search path for @code{libthread_db}
17256 When this command is issued, @var{path} is a colon-separated list of
17257 directories to search for @code{libthread_db} (@pxref{Threads,,set
17258 libthread-db-search-path}). If you omit @var{path},
17259 @samp{libthread-db-search-path} will be reset to its default value.
17260
17261 The special entry @samp{$pdir} for @samp{libthread-db-search-path} is
17262 not supported in @code{gdbserver}.
17263
17264 @item monitor exit
17265 Tell gdbserver to exit immediately. This command should be followed by
17266 @code{disconnect} to close the debugging session. @code{gdbserver} will
17267 detach from any attached processes and kill any processes it created.
17268 Use @code{monitor exit} to terminate @code{gdbserver} at the end
17269 of a multi-process mode debug session.
17270
17271 @end table
17272
17273 @subsection Tracepoints support in @code{gdbserver}
17274 @cindex tracepoints support in @code{gdbserver}
17275
17276 On some targets, @code{gdbserver} supports tracepoints, fast
17277 tracepoints and static tracepoints.
17278
17279 For fast or static tracepoints to work, a special library called the
17280 @dfn{in-process agent} (IPA), must be loaded in the inferior process.
17281 This library is built and distributed as an integral part of
17282 @code{gdbserver}. In addition, support for static tracepoints
17283 requires building the in-process agent library with static tracepoints
17284 support. At present, the UST (LTTng Userspace Tracer,
17285 @url{http://lttng.org/ust}) tracing engine is supported. This support
17286 is automatically available if UST development headers are found in the
17287 standard include path when @code{gdbserver} is built, or if
17288 @code{gdbserver} was explicitly configured using @option{--with-ust}
17289 to point at such headers. You can explicitly disable the support
17290 using @option{--with-ust=no}.
17291
17292 There are several ways to load the in-process agent in your program:
17293
17294 @table @code
17295 @item Specifying it as dependency at link time
17296
17297 You can link your program dynamically with the in-process agent
17298 library. On most systems, this is accomplished by adding
17299 @code{-linproctrace} to the link command.
17300
17301 @item Using the system's preloading mechanisms
17302
17303 You can force loading the in-process agent at startup time by using
17304 your system's support for preloading shared libraries. Many Unixes
17305 support the concept of preloading user defined libraries. In most
17306 cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so}
17307 in the environment. See also the description of @code{gdbserver}'s
17308 @option{--wrapper} command line option.
17309
17310 @item Using @value{GDBN} to force loading the agent at run time
17311
17312 On some systems, you can force the inferior to load a shared library,
17313 by calling a dynamic loader function in the inferior that takes care
17314 of dynamically looking up and loading a shared library. On most Unix
17315 systems, the function is @code{dlopen}. You'll use the @code{call}
17316 command for that. For example:
17317
17318 @smallexample
17319 (@value{GDBP}) call dlopen ("libinproctrace.so", ...)
17320 @end smallexample
17321
17322 Note that on most Unix systems, for the @code{dlopen} function to be
17323 available, the program needs to be linked with @code{-ldl}.
17324 @end table
17325
17326 On systems that have a userspace dynamic loader, like most Unix
17327 systems, when you connect to @code{gdbserver} using @code{target
17328 remote}, you'll find that the program is stopped at the dynamic
17329 loader's entry point, and no shared library has been loaded in the
17330 program's address space yet, including the in-process agent. In that
17331 case, before being able to use any of the fast or static tracepoints
17332 features, you need to let the loader run and load the shared
17333 libraries. The simplest way to do that is to run the program to the
17334 main procedure. E.g., if debugging a C or C@t{++} program, start
17335 @code{gdbserver} like so:
17336
17337 @smallexample
17338 $ gdbserver :9999 myprogram
17339 @end smallexample
17340
17341 Start GDB and connect to @code{gdbserver} like so, and run to main:
17342
17343 @smallexample
17344 $ gdb myprogram
17345 (@value{GDBP}) target remote myhost:9999
17346 0x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2
17347 (@value{GDBP}) b main
17348 (@value{GDBP}) continue
17349 @end smallexample
17350
17351 The in-process tracing agent library should now be loaded into the
17352 process; you can confirm it with the @code{info sharedlibrary}
17353 command, which will list @file{libinproctrace.so} as loaded in the
17354 process. You are now ready to install fast tracepoints, list static
17355 tracepoint markers, probe static tracepoints markers, and start
17356 tracing.
17357
17358 @node Remote Configuration
17359 @section Remote Configuration
17360
17361 @kindex set remote
17362 @kindex show remote
17363 This section documents the configuration options available when
17364 debugging remote programs. For the options related to the File I/O
17365 extensions of the remote protocol, see @ref{system,
17366 system-call-allowed}.
17367
17368 @table @code
17369 @item set remoteaddresssize @var{bits}
17370 @cindex address size for remote targets
17371 @cindex bits in remote address
17372 Set the maximum size of address in a memory packet to the specified
17373 number of bits. @value{GDBN} will mask off the address bits above
17374 that number, when it passes addresses to the remote target. The
17375 default value is the number of bits in the target's address.
17376
17377 @item show remoteaddresssize
17378 Show the current value of remote address size in bits.
17379
17380 @item set remotebaud @var{n}
17381 @cindex baud rate for remote targets
17382 Set the baud rate for the remote serial I/O to @var{n} baud. The
17383 value is used to set the speed of the serial port used for debugging
17384 remote targets.
17385
17386 @item show remotebaud
17387 Show the current speed of the remote connection.
17388
17389 @item set remotebreak
17390 @cindex interrupt remote programs
17391 @cindex BREAK signal instead of Ctrl-C
17392 @anchor{set remotebreak}
17393 If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
17394 when you type @kbd{Ctrl-c} to interrupt the program running
17395 on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
17396 character instead. The default is off, since most remote systems
17397 expect to see @samp{Ctrl-C} as the interrupt signal.
17398
17399 @item show remotebreak
17400 Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
17401 interrupt the remote program.
17402
17403 @item set remoteflow on
17404 @itemx set remoteflow off
17405 @kindex set remoteflow
17406 Enable or disable hardware flow control (@code{RTS}/@code{CTS})
17407 on the serial port used to communicate to the remote target.
17408
17409 @item show remoteflow
17410 @kindex show remoteflow
17411 Show the current setting of hardware flow control.
17412
17413 @item set remotelogbase @var{base}
17414 Set the base (a.k.a.@: radix) of logging serial protocol
17415 communications to @var{base}. Supported values of @var{base} are:
17416 @code{ascii}, @code{octal}, and @code{hex}. The default is
17417 @code{ascii}.
17418
17419 @item show remotelogbase
17420 Show the current setting of the radix for logging remote serial
17421 protocol.
17422
17423 @item set remotelogfile @var{file}
17424 @cindex record serial communications on file
17425 Record remote serial communications on the named @var{file}. The
17426 default is not to record at all.
17427
17428 @item show remotelogfile.
17429 Show the current setting of the file name on which to record the
17430 serial communications.
17431
17432 @item set remotetimeout @var{num}
17433 @cindex timeout for serial communications
17434 @cindex remote timeout
17435 Set the timeout limit to wait for the remote target to respond to
17436 @var{num} seconds. The default is 2 seconds.
17437
17438 @item show remotetimeout
17439 Show the current number of seconds to wait for the remote target
17440 responses.
17441
17442 @cindex limit hardware breakpoints and watchpoints
17443 @cindex remote target, limit break- and watchpoints
17444 @anchor{set remote hardware-watchpoint-limit}
17445 @anchor{set remote hardware-breakpoint-limit}
17446 @item set remote hardware-watchpoint-limit @var{limit}
17447 @itemx set remote hardware-breakpoint-limit @var{limit}
17448 Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
17449 watchpoints. A limit of -1, the default, is treated as unlimited.
17450
17451 @cindex limit hardware watchpoints length
17452 @cindex remote target, limit watchpoints length
17453 @anchor{set remote hardware-watchpoint-length-limit}
17454 @item set remote hardware-watchpoint-length-limit @var{limit}
17455 Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of
17456 a remote hardware watchpoint. A limit of -1, the default, is treated
17457 as unlimited.
17458
17459 @item show remote hardware-watchpoint-length-limit
17460 Show the current limit (in bytes) of the maximum length of
17461 a remote hardware watchpoint.
17462
17463 @item set remote exec-file @var{filename}
17464 @itemx show remote exec-file
17465 @anchor{set remote exec-file}
17466 @cindex executable file, for remote target
17467 Select the file used for @code{run} with @code{target
17468 extended-remote}. This should be set to a filename valid on the
17469 target system. If it is not set, the target will use a default
17470 filename (e.g.@: the last program run).
17471
17472 @item set remote interrupt-sequence
17473 @cindex interrupt remote programs
17474 @cindex select Ctrl-C, BREAK or BREAK-g
17475 Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
17476 @samp{BREAK-g} as the
17477 sequence to the remote target in order to interrupt the execution.
17478 @samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
17479 is high level of serial line for some certain time.
17480 Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
17481 It is @code{BREAK} signal followed by character @code{g}.
17482
17483 @item show interrupt-sequence
17484 Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
17485 is sent by @value{GDBN} to interrupt the remote program.
17486 @code{BREAK-g} is BREAK signal followed by @code{g} and
17487 also known as Magic SysRq g.
17488
17489 @item set remote interrupt-on-connect
17490 @cindex send interrupt-sequence on start
17491 Specify whether interrupt-sequence is sent to remote target when
17492 @value{GDBN} connects to it. This is mostly needed when you debug
17493 Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
17494 which is known as Magic SysRq g in order to connect @value{GDBN}.
17495
17496 @item show interrupt-on-connect
17497 Show whether interrupt-sequence is sent
17498 to remote target when @value{GDBN} connects to it.
17499
17500 @kindex set tcp
17501 @kindex show tcp
17502 @item set tcp auto-retry on
17503 @cindex auto-retry, for remote TCP target
17504 Enable auto-retry for remote TCP connections. This is useful if the remote
17505 debugging agent is launched in parallel with @value{GDBN}; there is a race
17506 condition because the agent may not become ready to accept the connection
17507 before @value{GDBN} attempts to connect. When auto-retry is
17508 enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
17509 to establish the connection using the timeout specified by
17510 @code{set tcp connect-timeout}.
17511
17512 @item set tcp auto-retry off
17513 Do not auto-retry failed TCP connections.
17514
17515 @item show tcp auto-retry
17516 Show the current auto-retry setting.
17517
17518 @item set tcp connect-timeout @var{seconds}
17519 @cindex connection timeout, for remote TCP target
17520 @cindex timeout, for remote target connection
17521 Set the timeout for establishing a TCP connection to the remote target to
17522 @var{seconds}. The timeout affects both polling to retry failed connections
17523 (enabled by @code{set tcp auto-retry on}) and waiting for connections
17524 that are merely slow to complete, and represents an approximate cumulative
17525 value.
17526
17527 @item show tcp connect-timeout
17528 Show the current connection timeout setting.
17529 @end table
17530
17531 @cindex remote packets, enabling and disabling
17532 The @value{GDBN} remote protocol autodetects the packets supported by
17533 your debugging stub. If you need to override the autodetection, you
17534 can use these commands to enable or disable individual packets. Each
17535 packet can be set to @samp{on} (the remote target supports this
17536 packet), @samp{off} (the remote target does not support this packet),
17537 or @samp{auto} (detect remote target support for this packet). They
17538 all default to @samp{auto}. For more information about each packet,
17539 see @ref{Remote Protocol}.
17540
17541 During normal use, you should not have to use any of these commands.
17542 If you do, that may be a bug in your remote debugging stub, or a bug
17543 in @value{GDBN}. You may want to report the problem to the
17544 @value{GDBN} developers.
17545
17546 For each packet @var{name}, the command to enable or disable the
17547 packet is @code{set remote @var{name}-packet}. The available settings
17548 are:
17549
17550 @multitable @columnfractions 0.28 0.32 0.25
17551 @item Command Name
17552 @tab Remote Packet
17553 @tab Related Features
17554
17555 @item @code{fetch-register}
17556 @tab @code{p}
17557 @tab @code{info registers}
17558
17559 @item @code{set-register}
17560 @tab @code{P}
17561 @tab @code{set}
17562
17563 @item @code{binary-download}
17564 @tab @code{X}
17565 @tab @code{load}, @code{set}
17566
17567 @item @code{read-aux-vector}
17568 @tab @code{qXfer:auxv:read}
17569 @tab @code{info auxv}
17570
17571 @item @code{symbol-lookup}
17572 @tab @code{qSymbol}
17573 @tab Detecting multiple threads
17574
17575 @item @code{attach}
17576 @tab @code{vAttach}
17577 @tab @code{attach}
17578
17579 @item @code{verbose-resume}
17580 @tab @code{vCont}
17581 @tab Stepping or resuming multiple threads
17582
17583 @item @code{run}
17584 @tab @code{vRun}
17585 @tab @code{run}
17586
17587 @item @code{software-breakpoint}
17588 @tab @code{Z0}
17589 @tab @code{break}
17590
17591 @item @code{hardware-breakpoint}
17592 @tab @code{Z1}
17593 @tab @code{hbreak}
17594
17595 @item @code{write-watchpoint}
17596 @tab @code{Z2}
17597 @tab @code{watch}
17598
17599 @item @code{read-watchpoint}
17600 @tab @code{Z3}
17601 @tab @code{rwatch}
17602
17603 @item @code{access-watchpoint}
17604 @tab @code{Z4}
17605 @tab @code{awatch}
17606
17607 @item @code{target-features}
17608 @tab @code{qXfer:features:read}
17609 @tab @code{set architecture}
17610
17611 @item @code{library-info}
17612 @tab @code{qXfer:libraries:read}
17613 @tab @code{info sharedlibrary}
17614
17615 @item @code{memory-map}
17616 @tab @code{qXfer:memory-map:read}
17617 @tab @code{info mem}
17618
17619 @item @code{read-sdata-object}
17620 @tab @code{qXfer:sdata:read}
17621 @tab @code{print $_sdata}
17622
17623 @item @code{read-spu-object}
17624 @tab @code{qXfer:spu:read}
17625 @tab @code{info spu}
17626
17627 @item @code{write-spu-object}
17628 @tab @code{qXfer:spu:write}
17629 @tab @code{info spu}
17630
17631 @item @code{read-siginfo-object}
17632 @tab @code{qXfer:siginfo:read}
17633 @tab @code{print $_siginfo}
17634
17635 @item @code{write-siginfo-object}
17636 @tab @code{qXfer:siginfo:write}
17637 @tab @code{set $_siginfo}
17638
17639 @item @code{threads}
17640 @tab @code{qXfer:threads:read}
17641 @tab @code{info threads}
17642
17643 @item @code{get-thread-local-@*storage-address}
17644 @tab @code{qGetTLSAddr}
17645 @tab Displaying @code{__thread} variables
17646
17647 @item @code{get-thread-information-block-address}
17648 @tab @code{qGetTIBAddr}
17649 @tab Display MS-Windows Thread Information Block.
17650
17651 @item @code{search-memory}
17652 @tab @code{qSearch:memory}
17653 @tab @code{find}
17654
17655 @item @code{supported-packets}
17656 @tab @code{qSupported}
17657 @tab Remote communications parameters
17658
17659 @item @code{pass-signals}
17660 @tab @code{QPassSignals}
17661 @tab @code{handle @var{signal}}
17662
17663 @item @code{program-signals}
17664 @tab @code{QProgramSignals}
17665 @tab @code{handle @var{signal}}
17666
17667 @item @code{hostio-close-packet}
17668 @tab @code{vFile:close}
17669 @tab @code{remote get}, @code{remote put}
17670
17671 @item @code{hostio-open-packet}
17672 @tab @code{vFile:open}
17673 @tab @code{remote get}, @code{remote put}
17674
17675 @item @code{hostio-pread-packet}
17676 @tab @code{vFile:pread}
17677 @tab @code{remote get}, @code{remote put}
17678
17679 @item @code{hostio-pwrite-packet}
17680 @tab @code{vFile:pwrite}
17681 @tab @code{remote get}, @code{remote put}
17682
17683 @item @code{hostio-unlink-packet}
17684 @tab @code{vFile:unlink}
17685 @tab @code{remote delete}
17686
17687 @item @code{hostio-readlink-packet}
17688 @tab @code{vFile:readlink}
17689 @tab Host I/O
17690
17691 @item @code{noack-packet}
17692 @tab @code{QStartNoAckMode}
17693 @tab Packet acknowledgment
17694
17695 @item @code{osdata}
17696 @tab @code{qXfer:osdata:read}
17697 @tab @code{info os}
17698
17699 @item @code{query-attached}
17700 @tab @code{qAttached}
17701 @tab Querying remote process attach state.
17702
17703 @item @code{traceframe-info}
17704 @tab @code{qXfer:traceframe-info:read}
17705 @tab Traceframe info
17706
17707 @item @code{install-in-trace}
17708 @tab @code{InstallInTrace}
17709 @tab Install tracepoint in tracing
17710
17711 @item @code{disable-randomization}
17712 @tab @code{QDisableRandomization}
17713 @tab @code{set disable-randomization}
17714
17715 @item @code{conditional-breakpoints-packet}
17716 @tab @code{Z0 and Z1}
17717 @tab @code{Support for target-side breakpoint condition evaluation}
17718 @end multitable
17719
17720 @node Remote Stub
17721 @section Implementing a Remote Stub
17722
17723 @cindex debugging stub, example
17724 @cindex remote stub, example
17725 @cindex stub example, remote debugging
17726 The stub files provided with @value{GDBN} implement the target side of the
17727 communication protocol, and the @value{GDBN} side is implemented in the
17728 @value{GDBN} source file @file{remote.c}. Normally, you can simply allow
17729 these subroutines to communicate, and ignore the details. (If you're
17730 implementing your own stub file, you can still ignore the details: start
17731 with one of the existing stub files. @file{sparc-stub.c} is the best
17732 organized, and therefore the easiest to read.)
17733
17734 @cindex remote serial debugging, overview
17735 To debug a program running on another machine (the debugging
17736 @dfn{target} machine), you must first arrange for all the usual
17737 prerequisites for the program to run by itself. For example, for a C
17738 program, you need:
17739
17740 @enumerate
17741 @item
17742 A startup routine to set up the C runtime environment; these usually
17743 have a name like @file{crt0}. The startup routine may be supplied by
17744 your hardware supplier, or you may have to write your own.
17745
17746 @item
17747 A C subroutine library to support your program's
17748 subroutine calls, notably managing input and output.
17749
17750 @item
17751 A way of getting your program to the other machine---for example, a
17752 download program. These are often supplied by the hardware
17753 manufacturer, but you may have to write your own from hardware
17754 documentation.
17755 @end enumerate
17756
17757 The next step is to arrange for your program to use a serial port to
17758 communicate with the machine where @value{GDBN} is running (the @dfn{host}
17759 machine). In general terms, the scheme looks like this:
17760
17761 @table @emph
17762 @item On the host,
17763 @value{GDBN} already understands how to use this protocol; when everything
17764 else is set up, you can simply use the @samp{target remote} command
17765 (@pxref{Targets,,Specifying a Debugging Target}).
17766
17767 @item On the target,
17768 you must link with your program a few special-purpose subroutines that
17769 implement the @value{GDBN} remote serial protocol. The file containing these
17770 subroutines is called a @dfn{debugging stub}.
17771
17772 On certain remote targets, you can use an auxiliary program
17773 @code{gdbserver} instead of linking a stub into your program.
17774 @xref{Server,,Using the @code{gdbserver} Program}, for details.
17775 @end table
17776
17777 The debugging stub is specific to the architecture of the remote
17778 machine; for example, use @file{sparc-stub.c} to debug programs on
17779 @sc{sparc} boards.
17780
17781 @cindex remote serial stub list
17782 These working remote stubs are distributed with @value{GDBN}:
17783
17784 @table @code
17785
17786 @item i386-stub.c
17787 @cindex @file{i386-stub.c}
17788 @cindex Intel
17789 @cindex i386
17790 For Intel 386 and compatible architectures.
17791
17792 @item m68k-stub.c
17793 @cindex @file{m68k-stub.c}
17794 @cindex Motorola 680x0
17795 @cindex m680x0
17796 For Motorola 680x0 architectures.
17797
17798 @item sh-stub.c
17799 @cindex @file{sh-stub.c}
17800 @cindex Renesas
17801 @cindex SH
17802 For Renesas SH architectures.
17803
17804 @item sparc-stub.c
17805 @cindex @file{sparc-stub.c}
17806 @cindex Sparc
17807 For @sc{sparc} architectures.
17808
17809 @item sparcl-stub.c
17810 @cindex @file{sparcl-stub.c}
17811 @cindex Fujitsu
17812 @cindex SparcLite
17813 For Fujitsu @sc{sparclite} architectures.
17814
17815 @end table
17816
17817 The @file{README} file in the @value{GDBN} distribution may list other
17818 recently added stubs.
17819
17820 @menu
17821 * Stub Contents:: What the stub can do for you
17822 * Bootstrapping:: What you must do for the stub
17823 * Debug Session:: Putting it all together
17824 @end menu
17825
17826 @node Stub Contents
17827 @subsection What the Stub Can Do for You
17828
17829 @cindex remote serial stub
17830 The debugging stub for your architecture supplies these three
17831 subroutines:
17832
17833 @table @code
17834 @item set_debug_traps
17835 @findex set_debug_traps
17836 @cindex remote serial stub, initialization
17837 This routine arranges for @code{handle_exception} to run when your
17838 program stops. You must call this subroutine explicitly in your
17839 program's startup code.
17840
17841 @item handle_exception
17842 @findex handle_exception
17843 @cindex remote serial stub, main routine
17844 This is the central workhorse, but your program never calls it
17845 explicitly---the setup code arranges for @code{handle_exception} to
17846 run when a trap is triggered.
17847
17848 @code{handle_exception} takes control when your program stops during
17849 execution (for example, on a breakpoint), and mediates communications
17850 with @value{GDBN} on the host machine. This is where the communications
17851 protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
17852 representative on the target machine. It begins by sending summary
17853 information on the state of your program, then continues to execute,
17854 retrieving and transmitting any information @value{GDBN} needs, until you
17855 execute a @value{GDBN} command that makes your program resume; at that point,
17856 @code{handle_exception} returns control to your own code on the target
17857 machine.
17858
17859 @item breakpoint
17860 @cindex @code{breakpoint} subroutine, remote
17861 Use this auxiliary subroutine to make your program contain a
17862 breakpoint. Depending on the particular situation, this may be the only
17863 way for @value{GDBN} to get control. For instance, if your target
17864 machine has some sort of interrupt button, you won't need to call this;
17865 pressing the interrupt button transfers control to
17866 @code{handle_exception}---in effect, to @value{GDBN}. On some machines,
17867 simply receiving characters on the serial port may also trigger a trap;
17868 again, in that situation, you don't need to call @code{breakpoint} from
17869 your own program---simply running @samp{target remote} from the host
17870 @value{GDBN} session gets control.
17871
17872 Call @code{breakpoint} if none of these is true, or if you simply want
17873 to make certain your program stops at a predetermined point for the
17874 start of your debugging session.
17875 @end table
17876
17877 @node Bootstrapping
17878 @subsection What You Must Do for the Stub
17879
17880 @cindex remote stub, support routines
17881 The debugging stubs that come with @value{GDBN} are set up for a particular
17882 chip architecture, but they have no information about the rest of your
17883 debugging target machine.
17884
17885 First of all you need to tell the stub how to communicate with the
17886 serial port.
17887
17888 @table @code
17889 @item int getDebugChar()
17890 @findex getDebugChar
17891 Write this subroutine to read a single character from the serial port.
17892 It may be identical to @code{getchar} for your target system; a
17893 different name is used to allow you to distinguish the two if you wish.
17894
17895 @item void putDebugChar(int)
17896 @findex putDebugChar
17897 Write this subroutine to write a single character to the serial port.
17898 It may be identical to @code{putchar} for your target system; a
17899 different name is used to allow you to distinguish the two if you wish.
17900 @end table
17901
17902 @cindex control C, and remote debugging
17903 @cindex interrupting remote targets
17904 If you want @value{GDBN} to be able to stop your program while it is
17905 running, you need to use an interrupt-driven serial driver, and arrange
17906 for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
17907 character). That is the character which @value{GDBN} uses to tell the
17908 remote system to stop.
17909
17910 Getting the debugging target to return the proper status to @value{GDBN}
17911 probably requires changes to the standard stub; one quick and dirty way
17912 is to just execute a breakpoint instruction (the ``dirty'' part is that
17913 @value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
17914
17915 Other routines you need to supply are:
17916
17917 @table @code
17918 @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
17919 @findex exceptionHandler
17920 Write this function to install @var{exception_address} in the exception
17921 handling tables. You need to do this because the stub does not have any
17922 way of knowing what the exception handling tables on your target system
17923 are like (for example, the processor's table might be in @sc{rom},
17924 containing entries which point to a table in @sc{ram}).
17925 @var{exception_number} is the exception number which should be changed;
17926 its meaning is architecture-dependent (for example, different numbers
17927 might represent divide by zero, misaligned access, etc). When this
17928 exception occurs, control should be transferred directly to
17929 @var{exception_address}, and the processor state (stack, registers,
17930 and so on) should be just as it is when a processor exception occurs. So if
17931 you want to use a jump instruction to reach @var{exception_address}, it
17932 should be a simple jump, not a jump to subroutine.
17933
17934 For the 386, @var{exception_address} should be installed as an interrupt
17935 gate so that interrupts are masked while the handler runs. The gate
17936 should be at privilege level 0 (the most privileged level). The
17937 @sc{sparc} and 68k stubs are able to mask interrupts themselves without
17938 help from @code{exceptionHandler}.
17939
17940 @item void flush_i_cache()
17941 @findex flush_i_cache
17942 On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
17943 instruction cache, if any, on your target machine. If there is no
17944 instruction cache, this subroutine may be a no-op.
17945
17946 On target machines that have instruction caches, @value{GDBN} requires this
17947 function to make certain that the state of your program is stable.
17948 @end table
17949
17950 @noindent
17951 You must also make sure this library routine is available:
17952
17953 @table @code
17954 @item void *memset(void *, int, int)
17955 @findex memset
17956 This is the standard library function @code{memset} that sets an area of
17957 memory to a known value. If you have one of the free versions of
17958 @code{libc.a}, @code{memset} can be found there; otherwise, you must
17959 either obtain it from your hardware manufacturer, or write your own.
17960 @end table
17961
17962 If you do not use the GNU C compiler, you may need other standard
17963 library subroutines as well; this varies from one stub to another,
17964 but in general the stubs are likely to use any of the common library
17965 subroutines which @code{@value{NGCC}} generates as inline code.
17966
17967
17968 @node Debug Session
17969 @subsection Putting it All Together
17970
17971 @cindex remote serial debugging summary
17972 In summary, when your program is ready to debug, you must follow these
17973 steps.
17974
17975 @enumerate
17976 @item
17977 Make sure you have defined the supporting low-level routines
17978 (@pxref{Bootstrapping,,What You Must Do for the Stub}):
17979 @display
17980 @code{getDebugChar}, @code{putDebugChar},
17981 @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
17982 @end display
17983
17984 @item
17985 Insert these lines in your program's startup code, before the main
17986 procedure is called:
17987
17988 @smallexample
17989 set_debug_traps();
17990 breakpoint();
17991 @end smallexample
17992
17993 On some machines, when a breakpoint trap is raised, the hardware
17994 automatically makes the PC point to the instruction after the
17995 breakpoint. If your machine doesn't do that, you may need to adjust
17996 @code{handle_exception} to arrange for it to return to the instruction
17997 after the breakpoint on this first invocation, so that your program
17998 doesn't keep hitting the initial breakpoint instead of making
17999 progress.
18000
18001 @item
18002 For the 680x0 stub only, you need to provide a variable called
18003 @code{exceptionHook}. Normally you just use:
18004
18005 @smallexample
18006 void (*exceptionHook)() = 0;
18007 @end smallexample
18008
18009 @noindent
18010 but if before calling @code{set_debug_traps}, you set it to point to a
18011 function in your program, that function is called when
18012 @code{@value{GDBN}} continues after stopping on a trap (for example, bus
18013 error). The function indicated by @code{exceptionHook} is called with
18014 one parameter: an @code{int} which is the exception number.
18015
18016 @item
18017 Compile and link together: your program, the @value{GDBN} debugging stub for
18018 your target architecture, and the supporting subroutines.
18019
18020 @item
18021 Make sure you have a serial connection between your target machine and
18022 the @value{GDBN} host, and identify the serial port on the host.
18023
18024 @item
18025 @c The "remote" target now provides a `load' command, so we should
18026 @c document that. FIXME.
18027 Download your program to your target machine (or get it there by
18028 whatever means the manufacturer provides), and start it.
18029
18030 @item
18031 Start @value{GDBN} on the host, and connect to the target
18032 (@pxref{Connecting,,Connecting to a Remote Target}).
18033
18034 @end enumerate
18035
18036 @node Configurations
18037 @chapter Configuration-Specific Information
18038
18039 While nearly all @value{GDBN} commands are available for all native and
18040 cross versions of the debugger, there are some exceptions. This chapter
18041 describes things that are only available in certain configurations.
18042
18043 There are three major categories of configurations: native
18044 configurations, where the host and target are the same, embedded
18045 operating system configurations, which are usually the same for several
18046 different processor architectures, and bare embedded processors, which
18047 are quite different from each other.
18048
18049 @menu
18050 * Native::
18051 * Embedded OS::
18052 * Embedded Processors::
18053 * Architectures::
18054 @end menu
18055
18056 @node Native
18057 @section Native
18058
18059 This section describes details specific to particular native
18060 configurations.
18061
18062 @menu
18063 * HP-UX:: HP-UX
18064 * BSD libkvm Interface:: Debugging BSD kernel memory images
18065 * SVR4 Process Information:: SVR4 process information
18066 * DJGPP Native:: Features specific to the DJGPP port
18067 * Cygwin Native:: Features specific to the Cygwin port
18068 * Hurd Native:: Features specific to @sc{gnu} Hurd
18069 * Neutrino:: Features specific to QNX Neutrino
18070 * Darwin:: Features specific to Darwin
18071 @end menu
18072
18073 @node HP-UX
18074 @subsection HP-UX
18075
18076 On HP-UX systems, if you refer to a function or variable name that
18077 begins with a dollar sign, @value{GDBN} searches for a user or system
18078 name first, before it searches for a convenience variable.
18079
18080
18081 @node BSD libkvm Interface
18082 @subsection BSD libkvm Interface
18083
18084 @cindex libkvm
18085 @cindex kernel memory image
18086 @cindex kernel crash dump
18087
18088 BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
18089 interface that provides a uniform interface for accessing kernel virtual
18090 memory images, including live systems and crash dumps. @value{GDBN}
18091 uses this interface to allow you to debug live kernels and kernel crash
18092 dumps on many native BSD configurations. This is implemented as a
18093 special @code{kvm} debugging target. For debugging a live system, load
18094 the currently running kernel into @value{GDBN} and connect to the
18095 @code{kvm} target:
18096
18097 @smallexample
18098 (@value{GDBP}) @b{target kvm}
18099 @end smallexample
18100
18101 For debugging crash dumps, provide the file name of the crash dump as an
18102 argument:
18103
18104 @smallexample
18105 (@value{GDBP}) @b{target kvm /var/crash/bsd.0}
18106 @end smallexample
18107
18108 Once connected to the @code{kvm} target, the following commands are
18109 available:
18110
18111 @table @code
18112 @kindex kvm
18113 @item kvm pcb
18114 Set current context from the @dfn{Process Control Block} (PCB) address.
18115
18116 @item kvm proc
18117 Set current context from proc address. This command isn't available on
18118 modern FreeBSD systems.
18119 @end table
18120
18121 @node SVR4 Process Information
18122 @subsection SVR4 Process Information
18123 @cindex /proc
18124 @cindex examine process image
18125 @cindex process info via @file{/proc}
18126
18127 Many versions of SVR4 and compatible systems provide a facility called
18128 @samp{/proc} that can be used to examine the image of a running
18129 process using file-system subroutines. If @value{GDBN} is configured
18130 for an operating system with this facility, the command @code{info
18131 proc} is available to report information about the process running
18132 your program, or about any process running on your system. @code{info
18133 proc} works only on SVR4 systems that include the @code{procfs} code.
18134 This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
18135 Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
18136
18137 @table @code
18138 @kindex info proc
18139 @cindex process ID
18140 @item info proc
18141 @itemx info proc @var{process-id}
18142 Summarize available information about any running process. If a
18143 process ID is specified by @var{process-id}, display information about
18144 that process; otherwise display information about the program being
18145 debugged. The summary includes the debugged process ID, the command
18146 line used to invoke it, its current working directory, and its
18147 executable file's absolute file name.
18148
18149 On some systems, @var{process-id} can be of the form
18150 @samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
18151 within a process. If the optional @var{pid} part is missing, it means
18152 a thread from the process being debugged (the leading @samp{/} still
18153 needs to be present, or else @value{GDBN} will interpret the number as
18154 a process ID rather than a thread ID).
18155
18156 @item info proc mappings
18157 @cindex memory address space mappings
18158 Report the memory address space ranges accessible in the program, with
18159 information on whether the process has read, write, or execute access
18160 rights to each range. On @sc{gnu}/Linux systems, each memory range
18161 includes the object file which is mapped to that range, instead of the
18162 memory access rights to that range.
18163
18164 @item info proc stat
18165 @itemx info proc status
18166 @cindex process detailed status information
18167 These subcommands are specific to @sc{gnu}/Linux systems. They show
18168 the process-related information, including the user ID and group ID;
18169 how many threads are there in the process; its virtual memory usage;
18170 the signals that are pending, blocked, and ignored; its TTY; its
18171 consumption of system and user time; its stack size; its @samp{nice}
18172 value; etc. For more information, see the @samp{proc} man page
18173 (type @kbd{man 5 proc} from your shell prompt).
18174
18175 @item info proc all
18176 Show all the information about the process described under all of the
18177 above @code{info proc} subcommands.
18178
18179 @ignore
18180 @comment These sub-options of 'info proc' were not included when
18181 @comment procfs.c was re-written. Keep their descriptions around
18182 @comment against the day when someone finds the time to put them back in.
18183 @kindex info proc times
18184 @item info proc times
18185 Starting time, user CPU time, and system CPU time for your program and
18186 its children.
18187
18188 @kindex info proc id
18189 @item info proc id
18190 Report on the process IDs related to your program: its own process ID,
18191 the ID of its parent, the process group ID, and the session ID.
18192 @end ignore
18193
18194 @item set procfs-trace
18195 @kindex set procfs-trace
18196 @cindex @code{procfs} API calls
18197 This command enables and disables tracing of @code{procfs} API calls.
18198
18199 @item show procfs-trace
18200 @kindex show procfs-trace
18201 Show the current state of @code{procfs} API call tracing.
18202
18203 @item set procfs-file @var{file}
18204 @kindex set procfs-file
18205 Tell @value{GDBN} to write @code{procfs} API trace to the named
18206 @var{file}. @value{GDBN} appends the trace info to the previous
18207 contents of the file. The default is to display the trace on the
18208 standard output.
18209
18210 @item show procfs-file
18211 @kindex show procfs-file
18212 Show the file to which @code{procfs} API trace is written.
18213
18214 @item proc-trace-entry
18215 @itemx proc-trace-exit
18216 @itemx proc-untrace-entry
18217 @itemx proc-untrace-exit
18218 @kindex proc-trace-entry
18219 @kindex proc-trace-exit
18220 @kindex proc-untrace-entry
18221 @kindex proc-untrace-exit
18222 These commands enable and disable tracing of entries into and exits
18223 from the @code{syscall} interface.
18224
18225 @item info pidlist
18226 @kindex info pidlist
18227 @cindex process list, QNX Neutrino
18228 For QNX Neutrino only, this command displays the list of all the
18229 processes and all the threads within each process.
18230
18231 @item info meminfo
18232 @kindex info meminfo
18233 @cindex mapinfo list, QNX Neutrino
18234 For QNX Neutrino only, this command displays the list of all mapinfos.
18235 @end table
18236
18237 @node DJGPP Native
18238 @subsection Features for Debugging @sc{djgpp} Programs
18239 @cindex @sc{djgpp} debugging
18240 @cindex native @sc{djgpp} debugging
18241 @cindex MS-DOS-specific commands
18242
18243 @cindex DPMI
18244 @sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
18245 MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
18246 that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
18247 top of real-mode DOS systems and their emulations.
18248
18249 @value{GDBN} supports native debugging of @sc{djgpp} programs, and
18250 defines a few commands specific to the @sc{djgpp} port. This
18251 subsection describes those commands.
18252
18253 @table @code
18254 @kindex info dos
18255 @item info dos
18256 This is a prefix of @sc{djgpp}-specific commands which print
18257 information about the target system and important OS structures.
18258
18259 @kindex sysinfo
18260 @cindex MS-DOS system info
18261 @cindex free memory information (MS-DOS)
18262 @item info dos sysinfo
18263 This command displays assorted information about the underlying
18264 platform: the CPU type and features, the OS version and flavor, the
18265 DPMI version, and the available conventional and DPMI memory.
18266
18267 @cindex GDT
18268 @cindex LDT
18269 @cindex IDT
18270 @cindex segment descriptor tables
18271 @cindex descriptor tables display
18272 @item info dos gdt
18273 @itemx info dos ldt
18274 @itemx info dos idt
18275 These 3 commands display entries from, respectively, Global, Local,
18276 and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
18277 tables are data structures which store a descriptor for each segment
18278 that is currently in use. The segment's selector is an index into a
18279 descriptor table; the table entry for that index holds the
18280 descriptor's base address and limit, and its attributes and access
18281 rights.
18282
18283 A typical @sc{djgpp} program uses 3 segments: a code segment, a data
18284 segment (used for both data and the stack), and a DOS segment (which
18285 allows access to DOS/BIOS data structures and absolute addresses in
18286 conventional memory). However, the DPMI host will usually define
18287 additional segments in order to support the DPMI environment.
18288
18289 @cindex garbled pointers
18290 These commands allow to display entries from the descriptor tables.
18291 Without an argument, all entries from the specified table are
18292 displayed. An argument, which should be an integer expression, means
18293 display a single entry whose index is given by the argument. For
18294 example, here's a convenient way to display information about the
18295 debugged program's data segment:
18296
18297 @smallexample
18298 @exdent @code{(@value{GDBP}) info dos ldt $ds}
18299 @exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
18300 @end smallexample
18301
18302 @noindent
18303 This comes in handy when you want to see whether a pointer is outside
18304 the data segment's limit (i.e.@: @dfn{garbled}).
18305
18306 @cindex page tables display (MS-DOS)
18307 @item info dos pde
18308 @itemx info dos pte
18309 These two commands display entries from, respectively, the Page
18310 Directory and the Page Tables. Page Directories and Page Tables are
18311 data structures which control how virtual memory addresses are mapped
18312 into physical addresses. A Page Table includes an entry for every
18313 page of memory that is mapped into the program's address space; there
18314 may be several Page Tables, each one holding up to 4096 entries. A
18315 Page Directory has up to 4096 entries, one each for every Page Table
18316 that is currently in use.
18317
18318 Without an argument, @kbd{info dos pde} displays the entire Page
18319 Directory, and @kbd{info dos pte} displays all the entries in all of
18320 the Page Tables. An argument, an integer expression, given to the
18321 @kbd{info dos pde} command means display only that entry from the Page
18322 Directory table. An argument given to the @kbd{info dos pte} command
18323 means display entries from a single Page Table, the one pointed to by
18324 the specified entry in the Page Directory.
18325
18326 @cindex direct memory access (DMA) on MS-DOS
18327 These commands are useful when your program uses @dfn{DMA} (Direct
18328 Memory Access), which needs physical addresses to program the DMA
18329 controller.
18330
18331 These commands are supported only with some DPMI servers.
18332
18333 @cindex physical address from linear address
18334 @item info dos address-pte @var{addr}
18335 This command displays the Page Table entry for a specified linear
18336 address. The argument @var{addr} is a linear address which should
18337 already have the appropriate segment's base address added to it,
18338 because this command accepts addresses which may belong to @emph{any}
18339 segment. For example, here's how to display the Page Table entry for
18340 the page where a variable @code{i} is stored:
18341
18342 @smallexample
18343 @exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
18344 @exdent @code{Page Table entry for address 0x11a00d30:}
18345 @exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
18346 @end smallexample
18347
18348 @noindent
18349 This says that @code{i} is stored at offset @code{0xd30} from the page
18350 whose physical base address is @code{0x02698000}, and shows all the
18351 attributes of that page.
18352
18353 Note that you must cast the addresses of variables to a @code{char *},
18354 since otherwise the value of @code{__djgpp_base_address}, the base
18355 address of all variables and functions in a @sc{djgpp} program, will
18356 be added using the rules of C pointer arithmetics: if @code{i} is
18357 declared an @code{int}, @value{GDBN} will add 4 times the value of
18358 @code{__djgpp_base_address} to the address of @code{i}.
18359
18360 Here's another example, it displays the Page Table entry for the
18361 transfer buffer:
18362
18363 @smallexample
18364 @exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
18365 @exdent @code{Page Table entry for address 0x29110:}
18366 @exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
18367 @end smallexample
18368
18369 @noindent
18370 (The @code{+ 3} offset is because the transfer buffer's address is the
18371 3rd member of the @code{_go32_info_block} structure.) The output
18372 clearly shows that this DPMI server maps the addresses in conventional
18373 memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
18374 linear (@code{0x29110}) addresses are identical.
18375
18376 This command is supported only with some DPMI servers.
18377 @end table
18378
18379 @cindex DOS serial data link, remote debugging
18380 In addition to native debugging, the DJGPP port supports remote
18381 debugging via a serial data link. The following commands are specific
18382 to remote serial debugging in the DJGPP port of @value{GDBN}.
18383
18384 @table @code
18385 @kindex set com1base
18386 @kindex set com1irq
18387 @kindex set com2base
18388 @kindex set com2irq
18389 @kindex set com3base
18390 @kindex set com3irq
18391 @kindex set com4base
18392 @kindex set com4irq
18393 @item set com1base @var{addr}
18394 This command sets the base I/O port address of the @file{COM1} serial
18395 port.
18396
18397 @item set com1irq @var{irq}
18398 This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
18399 for the @file{COM1} serial port.
18400
18401 There are similar commands @samp{set com2base}, @samp{set com3irq},
18402 etc.@: for setting the port address and the @code{IRQ} lines for the
18403 other 3 COM ports.
18404
18405 @kindex show com1base
18406 @kindex show com1irq
18407 @kindex show com2base
18408 @kindex show com2irq
18409 @kindex show com3base
18410 @kindex show com3irq
18411 @kindex show com4base
18412 @kindex show com4irq
18413 The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
18414 display the current settings of the base address and the @code{IRQ}
18415 lines used by the COM ports.
18416
18417 @item info serial
18418 @kindex info serial
18419 @cindex DOS serial port status
18420 This command prints the status of the 4 DOS serial ports. For each
18421 port, it prints whether it's active or not, its I/O base address and
18422 IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
18423 counts of various errors encountered so far.
18424 @end table
18425
18426
18427 @node Cygwin Native
18428 @subsection Features for Debugging MS Windows PE Executables
18429 @cindex MS Windows debugging
18430 @cindex native Cygwin debugging
18431 @cindex Cygwin-specific commands
18432
18433 @value{GDBN} supports native debugging of MS Windows programs, including
18434 DLLs with and without symbolic debugging information.
18435
18436 @cindex Ctrl-BREAK, MS-Windows
18437 @cindex interrupt debuggee on MS-Windows
18438 MS-Windows programs that call @code{SetConsoleMode} to switch off the
18439 special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
18440 by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
18441 supports @kbd{C-@key{BREAK}} as an alternative interrupt key
18442 sequence, which can be used to interrupt the debuggee even if it
18443 ignores @kbd{C-c}.
18444
18445 There are various additional Cygwin-specific commands, described in
18446 this section. Working with DLLs that have no debugging symbols is
18447 described in @ref{Non-debug DLL Symbols}.
18448
18449 @table @code
18450 @kindex info w32
18451 @item info w32
18452 This is a prefix of MS Windows-specific commands which print
18453 information about the target system and important OS structures.
18454
18455 @item info w32 selector
18456 This command displays information returned by
18457 the Win32 API @code{GetThreadSelectorEntry} function.
18458 It takes an optional argument that is evaluated to
18459 a long value to give the information about this given selector.
18460 Without argument, this command displays information
18461 about the six segment registers.
18462
18463 @item info w32 thread-information-block
18464 This command displays thread specific information stored in the
18465 Thread Information Block (readable on the X86 CPU family using @code{$fs}
18466 selector for 32-bit programs and @code{$gs} for 64-bit programs).
18467
18468 @kindex info dll
18469 @item info dll
18470 This is a Cygwin-specific alias of @code{info shared}.
18471
18472 @kindex dll-symbols
18473 @item dll-symbols
18474 This command loads symbols from a dll similarly to
18475 add-sym command but without the need to specify a base address.
18476
18477 @kindex set cygwin-exceptions
18478 @cindex debugging the Cygwin DLL
18479 @cindex Cygwin DLL, debugging
18480 @item set cygwin-exceptions @var{mode}
18481 If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
18482 happen inside the Cygwin DLL. If @var{mode} is @code{off},
18483 @value{GDBN} will delay recognition of exceptions, and may ignore some
18484 exceptions which seem to be caused by internal Cygwin DLL
18485 ``bookkeeping''. This option is meant primarily for debugging the
18486 Cygwin DLL itself; the default value is @code{off} to avoid annoying
18487 @value{GDBN} users with false @code{SIGSEGV} signals.
18488
18489 @kindex show cygwin-exceptions
18490 @item show cygwin-exceptions
18491 Displays whether @value{GDBN} will break on exceptions that happen
18492 inside the Cygwin DLL itself.
18493
18494 @kindex set new-console
18495 @item set new-console @var{mode}
18496 If @var{mode} is @code{on} the debuggee will
18497 be started in a new console on next start.
18498 If @var{mode} is @code{off}, the debuggee will
18499 be started in the same console as the debugger.
18500
18501 @kindex show new-console
18502 @item show new-console
18503 Displays whether a new console is used
18504 when the debuggee is started.
18505
18506 @kindex set new-group
18507 @item set new-group @var{mode}
18508 This boolean value controls whether the debuggee should
18509 start a new group or stay in the same group as the debugger.
18510 This affects the way the Windows OS handles
18511 @samp{Ctrl-C}.
18512
18513 @kindex show new-group
18514 @item show new-group
18515 Displays current value of new-group boolean.
18516
18517 @kindex set debugevents
18518 @item set debugevents
18519 This boolean value adds debug output concerning kernel events related
18520 to the debuggee seen by the debugger. This includes events that
18521 signal thread and process creation and exit, DLL loading and
18522 unloading, console interrupts, and debugging messages produced by the
18523 Windows @code{OutputDebugString} API call.
18524
18525 @kindex set debugexec
18526 @item set debugexec
18527 This boolean value adds debug output concerning execute events
18528 (such as resume thread) seen by the debugger.
18529
18530 @kindex set debugexceptions
18531 @item set debugexceptions
18532 This boolean value adds debug output concerning exceptions in the
18533 debuggee seen by the debugger.
18534
18535 @kindex set debugmemory
18536 @item set debugmemory
18537 This boolean value adds debug output concerning debuggee memory reads
18538 and writes by the debugger.
18539
18540 @kindex set shell
18541 @item set shell
18542 This boolean values specifies whether the debuggee is called
18543 via a shell or directly (default value is on).
18544
18545 @kindex show shell
18546 @item show shell
18547 Displays if the debuggee will be started with a shell.
18548
18549 @end table
18550
18551 @menu
18552 * Non-debug DLL Symbols:: Support for DLLs without debugging symbols
18553 @end menu
18554
18555 @node Non-debug DLL Symbols
18556 @subsubsection Support for DLLs without Debugging Symbols
18557 @cindex DLLs with no debugging symbols
18558 @cindex Minimal symbols and DLLs
18559
18560 Very often on windows, some of the DLLs that your program relies on do
18561 not include symbolic debugging information (for example,
18562 @file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
18563 symbols in a DLL, it relies on the minimal amount of symbolic
18564 information contained in the DLL's export table. This section
18565 describes working with such symbols, known internally to @value{GDBN} as
18566 ``minimal symbols''.
18567
18568 Note that before the debugged program has started execution, no DLLs
18569 will have been loaded. The easiest way around this problem is simply to
18570 start the program --- either by setting a breakpoint or letting the
18571 program run once to completion. It is also possible to force
18572 @value{GDBN} to load a particular DLL before starting the executable ---
18573 see the shared library information in @ref{Files}, or the
18574 @code{dll-symbols} command in @ref{Cygwin Native}. Currently,
18575 explicitly loading symbols from a DLL with no debugging information will
18576 cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
18577 which may adversely affect symbol lookup performance.
18578
18579 @subsubsection DLL Name Prefixes
18580
18581 In keeping with the naming conventions used by the Microsoft debugging
18582 tools, DLL export symbols are made available with a prefix based on the
18583 DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
18584 also entered into the symbol table, so @code{CreateFileA} is often
18585 sufficient. In some cases there will be name clashes within a program
18586 (particularly if the executable itself includes full debugging symbols)
18587 necessitating the use of the fully qualified name when referring to the
18588 contents of the DLL. Use single-quotes around the name to avoid the
18589 exclamation mark (``!'') being interpreted as a language operator.
18590
18591 Note that the internal name of the DLL may be all upper-case, even
18592 though the file name of the DLL is lower-case, or vice-versa. Since
18593 symbols within @value{GDBN} are @emph{case-sensitive} this may cause
18594 some confusion. If in doubt, try the @code{info functions} and
18595 @code{info variables} commands or even @code{maint print msymbols}
18596 (@pxref{Symbols}). Here's an example:
18597
18598 @smallexample
18599 (@value{GDBP}) info function CreateFileA
18600 All functions matching regular expression "CreateFileA":
18601
18602 Non-debugging symbols:
18603 0x77e885f4 CreateFileA
18604 0x77e885f4 KERNEL32!CreateFileA
18605 @end smallexample
18606
18607 @smallexample
18608 (@value{GDBP}) info function !
18609 All functions matching regular expression "!":
18610
18611 Non-debugging symbols:
18612 0x6100114c cygwin1!__assert
18613 0x61004034 cygwin1!_dll_crt0@@0
18614 0x61004240 cygwin1!dll_crt0(per_process *)
18615 [etc...]
18616 @end smallexample
18617
18618 @subsubsection Working with Minimal Symbols
18619
18620 Symbols extracted from a DLL's export table do not contain very much
18621 type information. All that @value{GDBN} can do is guess whether a symbol
18622 refers to a function or variable depending on the linker section that
18623 contains the symbol. Also note that the actual contents of the memory
18624 contained in a DLL are not available unless the program is running. This
18625 means that you cannot examine the contents of a variable or disassemble
18626 a function within a DLL without a running program.
18627
18628 Variables are generally treated as pointers and dereferenced
18629 automatically. For this reason, it is often necessary to prefix a
18630 variable name with the address-of operator (``&'') and provide explicit
18631 type information in the command. Here's an example of the type of
18632 problem:
18633
18634 @smallexample
18635 (@value{GDBP}) print 'cygwin1!__argv'
18636 $1 = 268572168
18637 @end smallexample
18638
18639 @smallexample
18640 (@value{GDBP}) x 'cygwin1!__argv'
18641 0x10021610: "\230y\""
18642 @end smallexample
18643
18644 And two possible solutions:
18645
18646 @smallexample
18647 (@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
18648 $2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
18649 @end smallexample
18650
18651 @smallexample
18652 (@value{GDBP}) x/2x &'cygwin1!__argv'
18653 0x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
18654 (@value{GDBP}) x/x 0x10021608
18655 0x10021608: 0x0022fd98
18656 (@value{GDBP}) x/s 0x0022fd98
18657 0x22fd98: "/cygdrive/c/mydirectory/myprogram"
18658 @end smallexample
18659
18660 Setting a break point within a DLL is possible even before the program
18661 starts execution. However, under these circumstances, @value{GDBN} can't
18662 examine the initial instructions of the function in order to skip the
18663 function's frame set-up code. You can work around this by using ``*&''
18664 to set the breakpoint at a raw memory address:
18665
18666 @smallexample
18667 (@value{GDBP}) break *&'python22!PyOS_Readline'
18668 Breakpoint 1 at 0x1e04eff0
18669 @end smallexample
18670
18671 The author of these extensions is not entirely convinced that setting a
18672 break point within a shared DLL like @file{kernel32.dll} is completely
18673 safe.
18674
18675 @node Hurd Native
18676 @subsection Commands Specific to @sc{gnu} Hurd Systems
18677 @cindex @sc{gnu} Hurd debugging
18678
18679 This subsection describes @value{GDBN} commands specific to the
18680 @sc{gnu} Hurd native debugging.
18681
18682 @table @code
18683 @item set signals
18684 @itemx set sigs
18685 @kindex set signals@r{, Hurd command}
18686 @kindex set sigs@r{, Hurd command}
18687 This command toggles the state of inferior signal interception by
18688 @value{GDBN}. Mach exceptions, such as breakpoint traps, are not
18689 affected by this command. @code{sigs} is a shorthand alias for
18690 @code{signals}.
18691
18692 @item show signals
18693 @itemx show sigs
18694 @kindex show signals@r{, Hurd command}
18695 @kindex show sigs@r{, Hurd command}
18696 Show the current state of intercepting inferior's signals.
18697
18698 @item set signal-thread
18699 @itemx set sigthread
18700 @kindex set signal-thread
18701 @kindex set sigthread
18702 This command tells @value{GDBN} which thread is the @code{libc} signal
18703 thread. That thread is run when a signal is delivered to a running
18704 process. @code{set sigthread} is the shorthand alias of @code{set
18705 signal-thread}.
18706
18707 @item show signal-thread
18708 @itemx show sigthread
18709 @kindex show signal-thread
18710 @kindex show sigthread
18711 These two commands show which thread will run when the inferior is
18712 delivered a signal.
18713
18714 @item set stopped
18715 @kindex set stopped@r{, Hurd command}
18716 This commands tells @value{GDBN} that the inferior process is stopped,
18717 as with the @code{SIGSTOP} signal. The stopped process can be
18718 continued by delivering a signal to it.
18719
18720 @item show stopped
18721 @kindex show stopped@r{, Hurd command}
18722 This command shows whether @value{GDBN} thinks the debuggee is
18723 stopped.
18724
18725 @item set exceptions
18726 @kindex set exceptions@r{, Hurd command}
18727 Use this command to turn off trapping of exceptions in the inferior.
18728 When exception trapping is off, neither breakpoints nor
18729 single-stepping will work. To restore the default, set exception
18730 trapping on.
18731
18732 @item show exceptions
18733 @kindex show exceptions@r{, Hurd command}
18734 Show the current state of trapping exceptions in the inferior.
18735
18736 @item set task pause
18737 @kindex set task@r{, Hurd commands}
18738 @cindex task attributes (@sc{gnu} Hurd)
18739 @cindex pause current task (@sc{gnu} Hurd)
18740 This command toggles task suspension when @value{GDBN} has control.
18741 Setting it to on takes effect immediately, and the task is suspended
18742 whenever @value{GDBN} gets control. Setting it to off will take
18743 effect the next time the inferior is continued. If this option is set
18744 to off, you can use @code{set thread default pause on} or @code{set
18745 thread pause on} (see below) to pause individual threads.
18746
18747 @item show task pause
18748 @kindex show task@r{, Hurd commands}
18749 Show the current state of task suspension.
18750
18751 @item set task detach-suspend-count
18752 @cindex task suspend count
18753 @cindex detach from task, @sc{gnu} Hurd
18754 This command sets the suspend count the task will be left with when
18755 @value{GDBN} detaches from it.
18756
18757 @item show task detach-suspend-count
18758 Show the suspend count the task will be left with when detaching.
18759
18760 @item set task exception-port
18761 @itemx set task excp
18762 @cindex task exception port, @sc{gnu} Hurd
18763 This command sets the task exception port to which @value{GDBN} will
18764 forward exceptions. The argument should be the value of the @dfn{send
18765 rights} of the task. @code{set task excp} is a shorthand alias.
18766
18767 @item set noninvasive
18768 @cindex noninvasive task options
18769 This command switches @value{GDBN} to a mode that is the least
18770 invasive as far as interfering with the inferior is concerned. This
18771 is the same as using @code{set task pause}, @code{set exceptions}, and
18772 @code{set signals} to values opposite to the defaults.
18773
18774 @item info send-rights
18775 @itemx info receive-rights
18776 @itemx info port-rights
18777 @itemx info port-sets
18778 @itemx info dead-names
18779 @itemx info ports
18780 @itemx info psets
18781 @cindex send rights, @sc{gnu} Hurd
18782 @cindex receive rights, @sc{gnu} Hurd
18783 @cindex port rights, @sc{gnu} Hurd
18784 @cindex port sets, @sc{gnu} Hurd
18785 @cindex dead names, @sc{gnu} Hurd
18786 These commands display information about, respectively, send rights,
18787 receive rights, port rights, port sets, and dead names of a task.
18788 There are also shorthand aliases: @code{info ports} for @code{info
18789 port-rights} and @code{info psets} for @code{info port-sets}.
18790
18791 @item set thread pause
18792 @kindex set thread@r{, Hurd command}
18793 @cindex thread properties, @sc{gnu} Hurd
18794 @cindex pause current thread (@sc{gnu} Hurd)
18795 This command toggles current thread suspension when @value{GDBN} has
18796 control. Setting it to on takes effect immediately, and the current
18797 thread is suspended whenever @value{GDBN} gets control. Setting it to
18798 off will take effect the next time the inferior is continued.
18799 Normally, this command has no effect, since when @value{GDBN} has
18800 control, the whole task is suspended. However, if you used @code{set
18801 task pause off} (see above), this command comes in handy to suspend
18802 only the current thread.
18803
18804 @item show thread pause
18805 @kindex show thread@r{, Hurd command}
18806 This command shows the state of current thread suspension.
18807
18808 @item set thread run
18809 This command sets whether the current thread is allowed to run.
18810
18811 @item show thread run
18812 Show whether the current thread is allowed to run.
18813
18814 @item set thread detach-suspend-count
18815 @cindex thread suspend count, @sc{gnu} Hurd
18816 @cindex detach from thread, @sc{gnu} Hurd
18817 This command sets the suspend count @value{GDBN} will leave on a
18818 thread when detaching. This number is relative to the suspend count
18819 found by @value{GDBN} when it notices the thread; use @code{set thread
18820 takeover-suspend-count} to force it to an absolute value.
18821
18822 @item show thread detach-suspend-count
18823 Show the suspend count @value{GDBN} will leave on the thread when
18824 detaching.
18825
18826 @item set thread exception-port
18827 @itemx set thread excp
18828 Set the thread exception port to which to forward exceptions. This
18829 overrides the port set by @code{set task exception-port} (see above).
18830 @code{set thread excp} is the shorthand alias.
18831
18832 @item set thread takeover-suspend-count
18833 Normally, @value{GDBN}'s thread suspend counts are relative to the
18834 value @value{GDBN} finds when it notices each thread. This command
18835 changes the suspend counts to be absolute instead.
18836
18837 @item set thread default
18838 @itemx show thread default
18839 @cindex thread default settings, @sc{gnu} Hurd
18840 Each of the above @code{set thread} commands has a @code{set thread
18841 default} counterpart (e.g., @code{set thread default pause}, @code{set
18842 thread default exception-port}, etc.). The @code{thread default}
18843 variety of commands sets the default thread properties for all
18844 threads; you can then change the properties of individual threads with
18845 the non-default commands.
18846 @end table
18847
18848
18849 @node Neutrino
18850 @subsection QNX Neutrino
18851 @cindex QNX Neutrino
18852
18853 @value{GDBN} provides the following commands specific to the QNX
18854 Neutrino target:
18855
18856 @table @code
18857 @item set debug nto-debug
18858 @kindex set debug nto-debug
18859 When set to on, enables debugging messages specific to the QNX
18860 Neutrino support.
18861
18862 @item show debug nto-debug
18863 @kindex show debug nto-debug
18864 Show the current state of QNX Neutrino messages.
18865 @end table
18866
18867 @node Darwin
18868 @subsection Darwin
18869 @cindex Darwin
18870
18871 @value{GDBN} provides the following commands specific to the Darwin target:
18872
18873 @table @code
18874 @item set debug darwin @var{num}
18875 @kindex set debug darwin
18876 When set to a non zero value, enables debugging messages specific to
18877 the Darwin support. Higher values produce more verbose output.
18878
18879 @item show debug darwin
18880 @kindex show debug darwin
18881 Show the current state of Darwin messages.
18882
18883 @item set debug mach-o @var{num}
18884 @kindex set debug mach-o
18885 When set to a non zero value, enables debugging messages while
18886 @value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
18887 file format used on Darwin for object and executable files.) Higher
18888 values produce more verbose output. This is a command to diagnose
18889 problems internal to @value{GDBN} and should not be needed in normal
18890 usage.
18891
18892 @item show debug mach-o
18893 @kindex show debug mach-o
18894 Show the current state of Mach-O file messages.
18895
18896 @item set mach-exceptions on
18897 @itemx set mach-exceptions off
18898 @kindex set mach-exceptions
18899 On Darwin, faults are first reported as a Mach exception and are then
18900 mapped to a Posix signal. Use this command to turn on trapping of
18901 Mach exceptions in the inferior. This might be sometimes useful to
18902 better understand the cause of a fault. The default is off.
18903
18904 @item show mach-exceptions
18905 @kindex show mach-exceptions
18906 Show the current state of exceptions trapping.
18907 @end table
18908
18909
18910 @node Embedded OS
18911 @section Embedded Operating Systems
18912
18913 This section describes configurations involving the debugging of
18914 embedded operating systems that are available for several different
18915 architectures.
18916
18917 @menu
18918 * VxWorks:: Using @value{GDBN} with VxWorks
18919 @end menu
18920
18921 @value{GDBN} includes the ability to debug programs running on
18922 various real-time operating systems.
18923
18924 @node VxWorks
18925 @subsection Using @value{GDBN} with VxWorks
18926
18927 @cindex VxWorks
18928
18929 @table @code
18930
18931 @kindex target vxworks
18932 @item target vxworks @var{machinename}
18933 A VxWorks system, attached via TCP/IP. The argument @var{machinename}
18934 is the target system's machine name or IP address.
18935
18936 @end table
18937
18938 On VxWorks, @code{load} links @var{filename} dynamically on the
18939 current target system as well as adding its symbols in @value{GDBN}.
18940
18941 @value{GDBN} enables developers to spawn and debug tasks running on networked
18942 VxWorks targets from a Unix host. Already-running tasks spawned from
18943 the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
18944 both the Unix host and on the VxWorks target. The program
18945 @code{@value{GDBP}} is installed and executed on the Unix host. (It may be
18946 installed with the name @code{vxgdb}, to distinguish it from a
18947 @value{GDBN} for debugging programs on the host itself.)
18948
18949 @table @code
18950 @item VxWorks-timeout @var{args}
18951 @kindex vxworks-timeout
18952 All VxWorks-based targets now support the option @code{vxworks-timeout}.
18953 This option is set by the user, and @var{args} represents the number of
18954 seconds @value{GDBN} waits for responses to rpc's. You might use this if
18955 your VxWorks target is a slow software simulator or is on the far side
18956 of a thin network line.
18957 @end table
18958
18959 The following information on connecting to VxWorks was current when
18960 this manual was produced; newer releases of VxWorks may use revised
18961 procedures.
18962
18963 @findex INCLUDE_RDB
18964 To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
18965 to include the remote debugging interface routines in the VxWorks
18966 library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
18967 VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
18968 kernel. The resulting kernel contains @file{rdb.a}, and spawns the
18969 source debugging task @code{tRdbTask} when VxWorks is booted. For more
18970 information on configuring and remaking VxWorks, see the manufacturer's
18971 manual.
18972 @c VxWorks, see the @cite{VxWorks Programmer's Guide}.
18973
18974 Once you have included @file{rdb.a} in your VxWorks system image and set
18975 your Unix execution search path to find @value{GDBN}, you are ready to
18976 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
18977 @code{vxgdb}, depending on your installation).
18978
18979 @value{GDBN} comes up showing the prompt:
18980
18981 @smallexample
18982 (vxgdb)
18983 @end smallexample
18984
18985 @menu
18986 * VxWorks Connection:: Connecting to VxWorks
18987 * VxWorks Download:: VxWorks download
18988 * VxWorks Attach:: Running tasks
18989 @end menu
18990
18991 @node VxWorks Connection
18992 @subsubsection Connecting to VxWorks
18993
18994 The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
18995 network. To connect to a target whose host name is ``@code{tt}'', type:
18996
18997 @smallexample
18998 (vxgdb) target vxworks tt
18999 @end smallexample
19000
19001 @need 750
19002 @value{GDBN} displays messages like these:
19003
19004 @smallexample
19005 Attaching remote machine across net...
19006 Connected to tt.
19007 @end smallexample
19008
19009 @need 1000
19010 @value{GDBN} then attempts to read the symbol tables of any object modules
19011 loaded into the VxWorks target since it was last booted. @value{GDBN} locates
19012 these files by searching the directories listed in the command search
19013 path (@pxref{Environment, ,Your Program's Environment}); if it fails
19014 to find an object file, it displays a message such as:
19015
19016 @smallexample
19017 prog.o: No such file or directory.
19018 @end smallexample
19019
19020 When this happens, add the appropriate directory to the search path with
19021 the @value{GDBN} command @code{path}, and execute the @code{target}
19022 command again.
19023
19024 @node VxWorks Download
19025 @subsubsection VxWorks Download
19026
19027 @cindex download to VxWorks
19028 If you have connected to the VxWorks target and you want to debug an
19029 object that has not yet been loaded, you can use the @value{GDBN}
19030 @code{load} command to download a file from Unix to VxWorks
19031 incrementally. The object file given as an argument to the @code{load}
19032 command is actually opened twice: first by the VxWorks target in order
19033 to download the code, then by @value{GDBN} in order to read the symbol
19034 table. This can lead to problems if the current working directories on
19035 the two systems differ. If both systems have NFS mounted the same
19036 filesystems, you can avoid these problems by using absolute paths.
19037 Otherwise, it is simplest to set the working directory on both systems
19038 to the directory in which the object file resides, and then to reference
19039 the file by its name, without any path. For instance, a program
19040 @file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
19041 and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
19042 program, type this on VxWorks:
19043
19044 @smallexample
19045 -> cd "@var{vxpath}/vw/demo/rdb"
19046 @end smallexample
19047
19048 @noindent
19049 Then, in @value{GDBN}, type:
19050
19051 @smallexample
19052 (vxgdb) cd @var{hostpath}/vw/demo/rdb
19053 (vxgdb) load prog.o
19054 @end smallexample
19055
19056 @value{GDBN} displays a response similar to this:
19057
19058 @smallexample
19059 Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
19060 @end smallexample
19061
19062 You can also use the @code{load} command to reload an object module
19063 after editing and recompiling the corresponding source file. Note that
19064 this makes @value{GDBN} delete all currently-defined breakpoints,
19065 auto-displays, and convenience variables, and to clear the value
19066 history. (This is necessary in order to preserve the integrity of
19067 debugger's data structures that reference the target system's symbol
19068 table.)
19069
19070 @node VxWorks Attach
19071 @subsubsection Running Tasks
19072
19073 @cindex running VxWorks tasks
19074 You can also attach to an existing task using the @code{attach} command as
19075 follows:
19076
19077 @smallexample
19078 (vxgdb) attach @var{task}
19079 @end smallexample
19080
19081 @noindent
19082 where @var{task} is the VxWorks hexadecimal task ID. The task can be running
19083 or suspended when you attach to it. Running tasks are suspended at
19084 the time of attachment.
19085
19086 @node Embedded Processors
19087 @section Embedded Processors
19088
19089 This section goes into details specific to particular embedded
19090 configurations.
19091
19092 @cindex send command to simulator
19093 Whenever a specific embedded processor has a simulator, @value{GDBN}
19094 allows to send an arbitrary command to the simulator.
19095
19096 @table @code
19097 @item sim @var{command}
19098 @kindex sim@r{, a command}
19099 Send an arbitrary @var{command} string to the simulator. Consult the
19100 documentation for the specific simulator in use for information about
19101 acceptable commands.
19102 @end table
19103
19104
19105 @menu
19106 * ARM:: ARM RDI
19107 * M32R/D:: Renesas M32R/D
19108 * M68K:: Motorola M68K
19109 * MicroBlaze:: Xilinx MicroBlaze
19110 * MIPS Embedded:: MIPS Embedded
19111 * OpenRISC 1000:: OpenRisc 1000
19112 * PA:: HP PA Embedded
19113 * PowerPC Embedded:: PowerPC Embedded
19114 * Sparclet:: Tsqware Sparclet
19115 * Sparclite:: Fujitsu Sparclite
19116 * Z8000:: Zilog Z8000
19117 * AVR:: Atmel AVR
19118 * CRIS:: CRIS
19119 * Super-H:: Renesas Super-H
19120 @end menu
19121
19122 @node ARM
19123 @subsection ARM
19124 @cindex ARM RDI
19125
19126 @table @code
19127 @kindex target rdi
19128 @item target rdi @var{dev}
19129 ARM Angel monitor, via RDI library interface to ADP protocol. You may
19130 use this target to communicate with both boards running the Angel
19131 monitor, or with the EmbeddedICE JTAG debug device.
19132
19133 @kindex target rdp
19134 @item target rdp @var{dev}
19135 ARM Demon monitor.
19136
19137 @end table
19138
19139 @value{GDBN} provides the following ARM-specific commands:
19140
19141 @table @code
19142 @item set arm disassembler
19143 @kindex set arm
19144 This commands selects from a list of disassembly styles. The
19145 @code{"std"} style is the standard style.
19146
19147 @item show arm disassembler
19148 @kindex show arm
19149 Show the current disassembly style.
19150
19151 @item set arm apcs32
19152 @cindex ARM 32-bit mode
19153 This command toggles ARM operation mode between 32-bit and 26-bit.
19154
19155 @item show arm apcs32
19156 Display the current usage of the ARM 32-bit mode.
19157
19158 @item set arm fpu @var{fputype}
19159 This command sets the ARM floating-point unit (FPU) type. The
19160 argument @var{fputype} can be one of these:
19161
19162 @table @code
19163 @item auto
19164 Determine the FPU type by querying the OS ABI.
19165 @item softfpa
19166 Software FPU, with mixed-endian doubles on little-endian ARM
19167 processors.
19168 @item fpa
19169 GCC-compiled FPA co-processor.
19170 @item softvfp
19171 Software FPU with pure-endian doubles.
19172 @item vfp
19173 VFP co-processor.
19174 @end table
19175
19176 @item show arm fpu
19177 Show the current type of the FPU.
19178
19179 @item set arm abi
19180 This command forces @value{GDBN} to use the specified ABI.
19181
19182 @item show arm abi
19183 Show the currently used ABI.
19184
19185 @item set arm fallback-mode (arm|thumb|auto)
19186 @value{GDBN} uses the symbol table, when available, to determine
19187 whether instructions are ARM or Thumb. This command controls
19188 @value{GDBN}'s default behavior when the symbol table is not
19189 available. The default is @samp{auto}, which causes @value{GDBN} to
19190 use the current execution mode (from the @code{T} bit in the @code{CPSR}
19191 register).
19192
19193 @item show arm fallback-mode
19194 Show the current fallback instruction mode.
19195
19196 @item set arm force-mode (arm|thumb|auto)
19197 This command overrides use of the symbol table to determine whether
19198 instructions are ARM or Thumb. The default is @samp{auto}, which
19199 causes @value{GDBN} to use the symbol table and then the setting
19200 of @samp{set arm fallback-mode}.
19201
19202 @item show arm force-mode
19203 Show the current forced instruction mode.
19204
19205 @item set debug arm
19206 Toggle whether to display ARM-specific debugging messages from the ARM
19207 target support subsystem.
19208
19209 @item show debug arm
19210 Show whether ARM-specific debugging messages are enabled.
19211 @end table
19212
19213 The following commands are available when an ARM target is debugged
19214 using the RDI interface:
19215
19216 @table @code
19217 @item rdilogfile @r{[}@var{file}@r{]}
19218 @kindex rdilogfile
19219 @cindex ADP (Angel Debugger Protocol) logging
19220 Set the filename for the ADP (Angel Debugger Protocol) packet log.
19221 With an argument, sets the log file to the specified @var{file}. With
19222 no argument, show the current log file name. The default log file is
19223 @file{rdi.log}.
19224
19225 @item rdilogenable @r{[}@var{arg}@r{]}
19226 @kindex rdilogenable
19227 Control logging of ADP packets. With an argument of 1 or @code{"yes"}
19228 enables logging, with an argument 0 or @code{"no"} disables it. With
19229 no arguments displays the current setting. When logging is enabled,
19230 ADP packets exchanged between @value{GDBN} and the RDI target device
19231 are logged to a file.
19232
19233 @item set rdiromatzero
19234 @kindex set rdiromatzero
19235 @cindex ROM at zero address, RDI
19236 Tell @value{GDBN} whether the target has ROM at address 0. If on,
19237 vector catching is disabled, so that zero address can be used. If off
19238 (the default), vector catching is enabled. For this command to take
19239 effect, it needs to be invoked prior to the @code{target rdi} command.
19240
19241 @item show rdiromatzero
19242 @kindex show rdiromatzero
19243 Show the current setting of ROM at zero address.
19244
19245 @item set rdiheartbeat
19246 @kindex set rdiheartbeat
19247 @cindex RDI heartbeat
19248 Enable or disable RDI heartbeat packets. It is not recommended to
19249 turn on this option, since it confuses ARM and EPI JTAG interface, as
19250 well as the Angel monitor.
19251
19252 @item show rdiheartbeat
19253 @kindex show rdiheartbeat
19254 Show the setting of RDI heartbeat packets.
19255 @end table
19256
19257 @table @code
19258 @item target sim @r{[}@var{simargs}@r{]} @dots{}
19259 The @value{GDBN} ARM simulator accepts the following optional arguments.
19260
19261 @table @code
19262 @item --swi-support=@var{type}
19263 Tell the simulator which SWI interfaces to support.
19264 @var{type} may be a comma separated list of the following values.
19265 The default value is @code{all}.
19266
19267 @table @code
19268 @item none
19269 @item demon
19270 @item angel
19271 @item redboot
19272 @item all
19273 @end table
19274 @end table
19275 @end table
19276
19277 @node M32R/D
19278 @subsection Renesas M32R/D and M32R/SDI
19279
19280 @table @code
19281 @kindex target m32r
19282 @item target m32r @var{dev}
19283 Renesas M32R/D ROM monitor.
19284
19285 @kindex target m32rsdi
19286 @item target m32rsdi @var{dev}
19287 Renesas M32R SDI server, connected via parallel port to the board.
19288 @end table
19289
19290 The following @value{GDBN} commands are specific to the M32R monitor:
19291
19292 @table @code
19293 @item set download-path @var{path}
19294 @kindex set download-path
19295 @cindex find downloadable @sc{srec} files (M32R)
19296 Set the default path for finding downloadable @sc{srec} files.
19297
19298 @item show download-path
19299 @kindex show download-path
19300 Show the default path for downloadable @sc{srec} files.
19301
19302 @item set board-address @var{addr}
19303 @kindex set board-address
19304 @cindex M32-EVA target board address
19305 Set the IP address for the M32R-EVA target board.
19306
19307 @item show board-address
19308 @kindex show board-address
19309 Show the current IP address of the target board.
19310
19311 @item set server-address @var{addr}
19312 @kindex set server-address
19313 @cindex download server address (M32R)
19314 Set the IP address for the download server, which is the @value{GDBN}'s
19315 host machine.
19316
19317 @item show server-address
19318 @kindex show server-address
19319 Display the IP address of the download server.
19320
19321 @item upload @r{[}@var{file}@r{]}
19322 @kindex upload@r{, M32R}
19323 Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
19324 upload capability. If no @var{file} argument is given, the current
19325 executable file is uploaded.
19326
19327 @item tload @r{[}@var{file}@r{]}
19328 @kindex tload@r{, M32R}
19329 Test the @code{upload} command.
19330 @end table
19331
19332 The following commands are available for M32R/SDI:
19333
19334 @table @code
19335 @item sdireset
19336 @kindex sdireset
19337 @cindex reset SDI connection, M32R
19338 This command resets the SDI connection.
19339
19340 @item sdistatus
19341 @kindex sdistatus
19342 This command shows the SDI connection status.
19343
19344 @item debug_chaos
19345 @kindex debug_chaos
19346 @cindex M32R/Chaos debugging
19347 Instructs the remote that M32R/Chaos debugging is to be used.
19348
19349 @item use_debug_dma
19350 @kindex use_debug_dma
19351 Instructs the remote to use the DEBUG_DMA method of accessing memory.
19352
19353 @item use_mon_code
19354 @kindex use_mon_code
19355 Instructs the remote to use the MON_CODE method of accessing memory.
19356
19357 @item use_ib_break
19358 @kindex use_ib_break
19359 Instructs the remote to set breakpoints by IB break.
19360
19361 @item use_dbt_break
19362 @kindex use_dbt_break
19363 Instructs the remote to set breakpoints by DBT.
19364 @end table
19365
19366 @node M68K
19367 @subsection M68k
19368
19369 The Motorola m68k configuration includes ColdFire support, and a
19370 target command for the following ROM monitor.
19371
19372 @table @code
19373
19374 @kindex target dbug
19375 @item target dbug @var{dev}
19376 dBUG ROM monitor for Motorola ColdFire.
19377
19378 @end table
19379
19380 @node MicroBlaze
19381 @subsection MicroBlaze
19382 @cindex Xilinx MicroBlaze
19383 @cindex XMD, Xilinx Microprocessor Debugger
19384
19385 The MicroBlaze is a soft-core processor supported on various Xilinx
19386 FPGAs, such as Spartan or Virtex series. Boards with these processors
19387 usually have JTAG ports which connect to a host system running the Xilinx
19388 Embedded Development Kit (EDK) or Software Development Kit (SDK).
19389 This host system is used to download the configuration bitstream to
19390 the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
19391 communicates with the target board using the JTAG interface and
19392 presents a @code{gdbserver} interface to the board. By default
19393 @code{xmd} uses port @code{1234}. (While it is possible to change
19394 this default port, it requires the use of undocumented @code{xmd}
19395 commands. Contact Xilinx support if you need to do this.)
19396
19397 Use these GDB commands to connect to the MicroBlaze target processor.
19398
19399 @table @code
19400 @item target remote :1234
19401 Use this command to connect to the target if you are running @value{GDBN}
19402 on the same system as @code{xmd}.
19403
19404 @item target remote @var{xmd-host}:1234
19405 Use this command to connect to the target if it is connected to @code{xmd}
19406 running on a different system named @var{xmd-host}.
19407
19408 @item load
19409 Use this command to download a program to the MicroBlaze target.
19410
19411 @item set debug microblaze @var{n}
19412 Enable MicroBlaze-specific debugging messages if non-zero.
19413
19414 @item show debug microblaze @var{n}
19415 Show MicroBlaze-specific debugging level.
19416 @end table
19417
19418 @node MIPS Embedded
19419 @subsection MIPS Embedded
19420
19421 @cindex MIPS boards
19422 @value{GDBN} can use the MIPS remote debugging protocol to talk to a
19423 MIPS board attached to a serial line. This is available when
19424 you configure @value{GDBN} with @samp{--target=mips-elf}.
19425
19426 @need 1000
19427 Use these @value{GDBN} commands to specify the connection to your target board:
19428
19429 @table @code
19430 @item target mips @var{port}
19431 @kindex target mips @var{port}
19432 To run a program on the board, start up @code{@value{GDBP}} with the
19433 name of your program as the argument. To connect to the board, use the
19434 command @samp{target mips @var{port}}, where @var{port} is the name of
19435 the serial port connected to the board. If the program has not already
19436 been downloaded to the board, you may use the @code{load} command to
19437 download it. You can then use all the usual @value{GDBN} commands.
19438
19439 For example, this sequence connects to the target board through a serial
19440 port, and loads and runs a program called @var{prog} through the
19441 debugger:
19442
19443 @smallexample
19444 host$ @value{GDBP} @var{prog}
19445 @value{GDBN} is free software and @dots{}
19446 (@value{GDBP}) target mips /dev/ttyb
19447 (@value{GDBP}) load @var{prog}
19448 (@value{GDBP}) run
19449 @end smallexample
19450
19451 @item target mips @var{hostname}:@var{portnumber}
19452 On some @value{GDBN} host configurations, you can specify a TCP
19453 connection (for instance, to a serial line managed by a terminal
19454 concentrator) instead of a serial port, using the syntax
19455 @samp{@var{hostname}:@var{portnumber}}.
19456
19457 @item target pmon @var{port}
19458 @kindex target pmon @var{port}
19459 PMON ROM monitor.
19460
19461 @item target ddb @var{port}
19462 @kindex target ddb @var{port}
19463 NEC's DDB variant of PMON for Vr4300.
19464
19465 @item target lsi @var{port}
19466 @kindex target lsi @var{port}
19467 LSI variant of PMON.
19468
19469 @kindex target r3900
19470 @item target r3900 @var{dev}
19471 Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
19472
19473 @kindex target array
19474 @item target array @var{dev}
19475 Array Tech LSI33K RAID controller board.
19476
19477 @end table
19478
19479
19480 @noindent
19481 @value{GDBN} also supports these special commands for MIPS targets:
19482
19483 @table @code
19484 @item set mipsfpu double
19485 @itemx set mipsfpu single
19486 @itemx set mipsfpu none
19487 @itemx set mipsfpu auto
19488 @itemx show mipsfpu
19489 @kindex set mipsfpu
19490 @kindex show mipsfpu
19491 @cindex MIPS remote floating point
19492 @cindex floating point, MIPS remote
19493 If your target board does not support the MIPS floating point
19494 coprocessor, you should use the command @samp{set mipsfpu none} (if you
19495 need this, you may wish to put the command in your @value{GDBN} init
19496 file). This tells @value{GDBN} how to find the return value of
19497 functions which return floating point values. It also allows
19498 @value{GDBN} to avoid saving the floating point registers when calling
19499 functions on the board. If you are using a floating point coprocessor
19500 with only single precision floating point support, as on the @sc{r4650}
19501 processor, use the command @samp{set mipsfpu single}. The default
19502 double precision floating point coprocessor may be selected using
19503 @samp{set mipsfpu double}.
19504
19505 In previous versions the only choices were double precision or no
19506 floating point, so @samp{set mipsfpu on} will select double precision
19507 and @samp{set mipsfpu off} will select no floating point.
19508
19509 As usual, you can inquire about the @code{mipsfpu} variable with
19510 @samp{show mipsfpu}.
19511
19512 @item set timeout @var{seconds}
19513 @itemx set retransmit-timeout @var{seconds}
19514 @itemx show timeout
19515 @itemx show retransmit-timeout
19516 @cindex @code{timeout}, MIPS protocol
19517 @cindex @code{retransmit-timeout}, MIPS protocol
19518 @kindex set timeout
19519 @kindex show timeout
19520 @kindex set retransmit-timeout
19521 @kindex show retransmit-timeout
19522 You can control the timeout used while waiting for a packet, in the MIPS
19523 remote protocol, with the @code{set timeout @var{seconds}} command. The
19524 default is 5 seconds. Similarly, you can control the timeout used while
19525 waiting for an acknowledgment of a packet with the @code{set
19526 retransmit-timeout @var{seconds}} command. The default is 3 seconds.
19527 You can inspect both values with @code{show timeout} and @code{show
19528 retransmit-timeout}. (These commands are @emph{only} available when
19529 @value{GDBN} is configured for @samp{--target=mips-elf}.)
19530
19531 The timeout set by @code{set timeout} does not apply when @value{GDBN}
19532 is waiting for your program to stop. In that case, @value{GDBN} waits
19533 forever because it has no way of knowing how long the program is going
19534 to run before stopping.
19535
19536 @item set syn-garbage-limit @var{num}
19537 @kindex set syn-garbage-limit@r{, MIPS remote}
19538 @cindex synchronize with remote MIPS target
19539 Limit the maximum number of characters @value{GDBN} should ignore when
19540 it tries to synchronize with the remote target. The default is 10
19541 characters. Setting the limit to -1 means there's no limit.
19542
19543 @item show syn-garbage-limit
19544 @kindex show syn-garbage-limit@r{, MIPS remote}
19545 Show the current limit on the number of characters to ignore when
19546 trying to synchronize with the remote system.
19547
19548 @item set monitor-prompt @var{prompt}
19549 @kindex set monitor-prompt@r{, MIPS remote}
19550 @cindex remote monitor prompt
19551 Tell @value{GDBN} to expect the specified @var{prompt} string from the
19552 remote monitor. The default depends on the target:
19553 @table @asis
19554 @item pmon target
19555 @samp{PMON}
19556 @item ddb target
19557 @samp{NEC010}
19558 @item lsi target
19559 @samp{PMON>}
19560 @end table
19561
19562 @item show monitor-prompt
19563 @kindex show monitor-prompt@r{, MIPS remote}
19564 Show the current strings @value{GDBN} expects as the prompt from the
19565 remote monitor.
19566
19567 @item set monitor-warnings
19568 @kindex set monitor-warnings@r{, MIPS remote}
19569 Enable or disable monitor warnings about hardware breakpoints. This
19570 has effect only for the @code{lsi} target. When on, @value{GDBN} will
19571 display warning messages whose codes are returned by the @code{lsi}
19572 PMON monitor for breakpoint commands.
19573
19574 @item show monitor-warnings
19575 @kindex show monitor-warnings@r{, MIPS remote}
19576 Show the current setting of printing monitor warnings.
19577
19578 @item pmon @var{command}
19579 @kindex pmon@r{, MIPS remote}
19580 @cindex send PMON command
19581 This command allows sending an arbitrary @var{command} string to the
19582 monitor. The monitor must be in debug mode for this to work.
19583 @end table
19584
19585 @node OpenRISC 1000
19586 @subsection OpenRISC 1000
19587 @cindex OpenRISC 1000
19588
19589 @cindex or1k boards
19590 See OR1k Architecture document (@uref{www.opencores.org}) for more information
19591 about platform and commands.
19592
19593 @table @code
19594
19595 @kindex target jtag
19596 @item target jtag jtag://@var{host}:@var{port}
19597
19598 Connects to remote JTAG server.
19599 JTAG remote server can be either an or1ksim or JTAG server,
19600 connected via parallel port to the board.
19601
19602 Example: @code{target jtag jtag://localhost:9999}
19603
19604 @kindex or1ksim
19605 @item or1ksim @var{command}
19606 If connected to @code{or1ksim} OpenRISC 1000 Architectural
19607 Simulator, proprietary commands can be executed.
19608
19609 @kindex info or1k spr
19610 @item info or1k spr
19611 Displays spr groups.
19612
19613 @item info or1k spr @var{group}
19614 @itemx info or1k spr @var{groupno}
19615 Displays register names in selected group.
19616
19617 @item info or1k spr @var{group} @var{register}
19618 @itemx info or1k spr @var{register}
19619 @itemx info or1k spr @var{groupno} @var{registerno}
19620 @itemx info or1k spr @var{registerno}
19621 Shows information about specified spr register.
19622
19623 @kindex spr
19624 @item spr @var{group} @var{register} @var{value}
19625 @itemx spr @var{register @var{value}}
19626 @itemx spr @var{groupno} @var{registerno @var{value}}
19627 @itemx spr @var{registerno @var{value}}
19628 Writes @var{value} to specified spr register.
19629 @end table
19630
19631 Some implementations of OpenRISC 1000 Architecture also have hardware trace.
19632 It is very similar to @value{GDBN} trace, except it does not interfere with normal
19633 program execution and is thus much faster. Hardware breakpoints/watchpoint
19634 triggers can be set using:
19635 @table @code
19636 @item $LEA/$LDATA
19637 Load effective address/data
19638 @item $SEA/$SDATA
19639 Store effective address/data
19640 @item $AEA/$ADATA
19641 Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
19642 @item $FETCH
19643 Fetch data
19644 @end table
19645
19646 When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
19647 @code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
19648
19649 @code{htrace} commands:
19650 @cindex OpenRISC 1000 htrace
19651 @table @code
19652 @kindex hwatch
19653 @item hwatch @var{conditional}
19654 Set hardware watchpoint on combination of Load/Store Effective Address(es)
19655 or Data. For example:
19656
19657 @code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
19658
19659 @code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
19660
19661 @kindex htrace
19662 @item htrace info
19663 Display information about current HW trace configuration.
19664
19665 @item htrace trigger @var{conditional}
19666 Set starting criteria for HW trace.
19667
19668 @item htrace qualifier @var{conditional}
19669 Set acquisition qualifier for HW trace.
19670
19671 @item htrace stop @var{conditional}
19672 Set HW trace stopping criteria.
19673
19674 @item htrace record [@var{data}]*
19675 Selects the data to be recorded, when qualifier is met and HW trace was
19676 triggered.
19677
19678 @item htrace enable
19679 @itemx htrace disable
19680 Enables/disables the HW trace.
19681
19682 @item htrace rewind [@var{filename}]
19683 Clears currently recorded trace data.
19684
19685 If filename is specified, new trace file is made and any newly collected data
19686 will be written there.
19687
19688 @item htrace print [@var{start} [@var{len}]]
19689 Prints trace buffer, using current record configuration.
19690
19691 @item htrace mode continuous
19692 Set continuous trace mode.
19693
19694 @item htrace mode suspend
19695 Set suspend trace mode.
19696
19697 @end table
19698
19699 @node PowerPC Embedded
19700 @subsection PowerPC Embedded
19701
19702 @cindex DVC register
19703 @value{GDBN} supports using the DVC (Data Value Compare) register to
19704 implement in hardware simple hardware watchpoint conditions of the form:
19705
19706 @smallexample
19707 (@value{GDBP}) watch @var{ADDRESS|VARIABLE} \
19708 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION}
19709 @end smallexample
19710
19711 The DVC register will be automatically used when @value{GDBN} detects
19712 such pattern in a condition expression, and the created watchpoint uses one
19713 debug register (either the @code{exact-watchpoints} option is on and the
19714 variable is scalar, or the variable has a length of one byte). This feature
19715 is available in native @value{GDBN} running on a Linux kernel version 2.6.34
19716 or newer.
19717
19718 When running on PowerPC embedded processors, @value{GDBN} automatically uses
19719 ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on,
19720 in which case watchpoints using only one debug register are created when
19721 watching variables of scalar types.
19722
19723 You can create an artificial array to watch an arbitrary memory
19724 region using one of the following commands (@pxref{Expressions}):
19725
19726 @smallexample
19727 (@value{GDBP}) watch *((char *) @var{address})@@@var{length}
19728 (@value{GDBP}) watch @{char[@var{length}]@} @var{address}
19729 @end smallexample
19730
19731 PowerPC embedded processors support masked watchpoints. See the discussion
19732 about the @code{mask} argument in @ref{Set Watchpoints}.
19733
19734 @cindex ranged breakpoint
19735 PowerPC embedded processors support hardware accelerated
19736 @dfn{ranged breakpoints}. A ranged breakpoint stops execution of
19737 the inferior whenever it executes an instruction at any address within
19738 the range it specifies. To set a ranged breakpoint in @value{GDBN},
19739 use the @code{break-range} command.
19740
19741 @value{GDBN} provides the following PowerPC-specific commands:
19742
19743 @table @code
19744 @kindex break-range
19745 @item break-range @var{start-location}, @var{end-location}
19746 Set a breakpoint for an address range.
19747 @var{start-location} and @var{end-location} can specify a function name,
19748 a line number, an offset of lines from the current line or from the start
19749 location, or an address of an instruction (see @ref{Specify Location},
19750 for a list of all the possible ways to specify a @var{location}.)
19751 The breakpoint will stop execution of the inferior whenever it
19752 executes an instruction at any address within the specified range,
19753 (including @var{start-location} and @var{end-location}.)
19754
19755 @kindex set powerpc
19756 @item set powerpc soft-float
19757 @itemx show powerpc soft-float
19758 Force @value{GDBN} to use (or not use) a software floating point calling
19759 convention. By default, @value{GDBN} selects the calling convention based
19760 on the selected architecture and the provided executable file.
19761
19762 @item set powerpc vector-abi
19763 @itemx show powerpc vector-abi
19764 Force @value{GDBN} to use the specified calling convention for vector
19765 arguments and return values. The valid options are @samp{auto};
19766 @samp{generic}, to avoid vector registers even if they are present;
19767 @samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
19768 registers. By default, @value{GDBN} selects the calling convention
19769 based on the selected architecture and the provided executable file.
19770
19771 @item set powerpc exact-watchpoints
19772 @itemx show powerpc exact-watchpoints
19773 Allow @value{GDBN} to use only one debug register when watching a variable
19774 of scalar type, thus assuming that the variable is accessed through the
19775 address of its first byte.
19776
19777 @kindex target dink32
19778 @item target dink32 @var{dev}
19779 DINK32 ROM monitor.
19780
19781 @kindex target ppcbug
19782 @item target ppcbug @var{dev}
19783 @kindex target ppcbug1
19784 @item target ppcbug1 @var{dev}
19785 PPCBUG ROM monitor for PowerPC.
19786
19787 @kindex target sds
19788 @item target sds @var{dev}
19789 SDS monitor, running on a PowerPC board (such as Motorola's ADS).
19790 @end table
19791
19792 @cindex SDS protocol
19793 The following commands specific to the SDS protocol are supported
19794 by @value{GDBN}:
19795
19796 @table @code
19797 @item set sdstimeout @var{nsec}
19798 @kindex set sdstimeout
19799 Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
19800 default is 2 seconds.
19801
19802 @item show sdstimeout
19803 @kindex show sdstimeout
19804 Show the current value of the SDS timeout.
19805
19806 @item sds @var{command}
19807 @kindex sds@r{, a command}
19808 Send the specified @var{command} string to the SDS monitor.
19809 @end table
19810
19811
19812 @node PA
19813 @subsection HP PA Embedded
19814
19815 @table @code
19816
19817 @kindex target op50n
19818 @item target op50n @var{dev}
19819 OP50N monitor, running on an OKI HPPA board.
19820
19821 @kindex target w89k
19822 @item target w89k @var{dev}
19823 W89K monitor, running on a Winbond HPPA board.
19824
19825 @end table
19826
19827 @node Sparclet
19828 @subsection Tsqware Sparclet
19829
19830 @cindex Sparclet
19831
19832 @value{GDBN} enables developers to debug tasks running on
19833 Sparclet targets from a Unix host.
19834 @value{GDBN} uses code that runs on
19835 both the Unix host and on the Sparclet target. The program
19836 @code{@value{GDBP}} is installed and executed on the Unix host.
19837
19838 @table @code
19839 @item remotetimeout @var{args}
19840 @kindex remotetimeout
19841 @value{GDBN} supports the option @code{remotetimeout}.
19842 This option is set by the user, and @var{args} represents the number of
19843 seconds @value{GDBN} waits for responses.
19844 @end table
19845
19846 @cindex compiling, on Sparclet
19847 When compiling for debugging, include the options @samp{-g} to get debug
19848 information and @samp{-Ttext} to relocate the program to where you wish to
19849 load it on the target. You may also want to add the options @samp{-n} or
19850 @samp{-N} in order to reduce the size of the sections. Example:
19851
19852 @smallexample
19853 sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
19854 @end smallexample
19855
19856 You can use @code{objdump} to verify that the addresses are what you intended:
19857
19858 @smallexample
19859 sparclet-aout-objdump --headers --syms prog
19860 @end smallexample
19861
19862 @cindex running, on Sparclet
19863 Once you have set
19864 your Unix execution search path to find @value{GDBN}, you are ready to
19865 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
19866 (or @code{sparclet-aout-gdb}, depending on your installation).
19867
19868 @value{GDBN} comes up showing the prompt:
19869
19870 @smallexample
19871 (gdbslet)
19872 @end smallexample
19873
19874 @menu
19875 * Sparclet File:: Setting the file to debug
19876 * Sparclet Connection:: Connecting to Sparclet
19877 * Sparclet Download:: Sparclet download
19878 * Sparclet Execution:: Running and debugging
19879 @end menu
19880
19881 @node Sparclet File
19882 @subsubsection Setting File to Debug
19883
19884 The @value{GDBN} command @code{file} lets you choose with program to debug.
19885
19886 @smallexample
19887 (gdbslet) file prog
19888 @end smallexample
19889
19890 @need 1000
19891 @value{GDBN} then attempts to read the symbol table of @file{prog}.
19892 @value{GDBN} locates
19893 the file by searching the directories listed in the command search
19894 path.
19895 If the file was compiled with debug information (option @samp{-g}), source
19896 files will be searched as well.
19897 @value{GDBN} locates
19898 the source files by searching the directories listed in the directory search
19899 path (@pxref{Environment, ,Your Program's Environment}).
19900 If it fails
19901 to find a file, it displays a message such as:
19902
19903 @smallexample
19904 prog: No such file or directory.
19905 @end smallexample
19906
19907 When this happens, add the appropriate directories to the search paths with
19908 the @value{GDBN} commands @code{path} and @code{dir}, and execute the
19909 @code{target} command again.
19910
19911 @node Sparclet Connection
19912 @subsubsection Connecting to Sparclet
19913
19914 The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
19915 To connect to a target on serial port ``@code{ttya}'', type:
19916
19917 @smallexample
19918 (gdbslet) target sparclet /dev/ttya
19919 Remote target sparclet connected to /dev/ttya
19920 main () at ../prog.c:3
19921 @end smallexample
19922
19923 @need 750
19924 @value{GDBN} displays messages like these:
19925
19926 @smallexample
19927 Connected to ttya.
19928 @end smallexample
19929
19930 @node Sparclet Download
19931 @subsubsection Sparclet Download
19932
19933 @cindex download to Sparclet
19934 Once connected to the Sparclet target,
19935 you can use the @value{GDBN}
19936 @code{load} command to download the file from the host to the target.
19937 The file name and load offset should be given as arguments to the @code{load}
19938 command.
19939 Since the file format is aout, the program must be loaded to the starting
19940 address. You can use @code{objdump} to find out what this value is. The load
19941 offset is an offset which is added to the VMA (virtual memory address)
19942 of each of the file's sections.
19943 For instance, if the program
19944 @file{prog} was linked to text address 0x1201000, with data at 0x12010160
19945 and bss at 0x12010170, in @value{GDBN}, type:
19946
19947 @smallexample
19948 (gdbslet) load prog 0x12010000
19949 Loading section .text, size 0xdb0 vma 0x12010000
19950 @end smallexample
19951
19952 If the code is loaded at a different address then what the program was linked
19953 to, you may need to use the @code{section} and @code{add-symbol-file} commands
19954 to tell @value{GDBN} where to map the symbol table.
19955
19956 @node Sparclet Execution
19957 @subsubsection Running and Debugging
19958
19959 @cindex running and debugging Sparclet programs
19960 You can now begin debugging the task using @value{GDBN}'s execution control
19961 commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
19962 manual for the list of commands.
19963
19964 @smallexample
19965 (gdbslet) b main
19966 Breakpoint 1 at 0x12010000: file prog.c, line 3.
19967 (gdbslet) run
19968 Starting program: prog
19969 Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
19970 3 char *symarg = 0;
19971 (gdbslet) step
19972 4 char *execarg = "hello!";
19973 (gdbslet)
19974 @end smallexample
19975
19976 @node Sparclite
19977 @subsection Fujitsu Sparclite
19978
19979 @table @code
19980
19981 @kindex target sparclite
19982 @item target sparclite @var{dev}
19983 Fujitsu sparclite boards, used only for the purpose of loading.
19984 You must use an additional command to debug the program.
19985 For example: target remote @var{dev} using @value{GDBN} standard
19986 remote protocol.
19987
19988 @end table
19989
19990 @node Z8000
19991 @subsection Zilog Z8000
19992
19993 @cindex Z8000
19994 @cindex simulator, Z8000
19995 @cindex Zilog Z8000 simulator
19996
19997 When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
19998 a Z8000 simulator.
19999
20000 For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
20001 unsegmented variant of the Z8000 architecture) or the Z8001 (the
20002 segmented variant). The simulator recognizes which architecture is
20003 appropriate by inspecting the object code.
20004
20005 @table @code
20006 @item target sim @var{args}
20007 @kindex sim
20008 @kindex target sim@r{, with Z8000}
20009 Debug programs on a simulated CPU. If the simulator supports setup
20010 options, specify them via @var{args}.
20011 @end table
20012
20013 @noindent
20014 After specifying this target, you can debug programs for the simulated
20015 CPU in the same style as programs for your host computer; use the
20016 @code{file} command to load a new program image, the @code{run} command
20017 to run your program, and so on.
20018
20019 As well as making available all the usual machine registers
20020 (@pxref{Registers, ,Registers}), the Z8000 simulator provides three
20021 additional items of information as specially named registers:
20022
20023 @table @code
20024
20025 @item cycles
20026 Counts clock-ticks in the simulator.
20027
20028 @item insts
20029 Counts instructions run in the simulator.
20030
20031 @item time
20032 Execution time in 60ths of a second.
20033
20034 @end table
20035
20036 You can refer to these values in @value{GDBN} expressions with the usual
20037 conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
20038 conditional breakpoint that suspends only after at least 5000
20039 simulated clock ticks.
20040
20041 @node AVR
20042 @subsection Atmel AVR
20043 @cindex AVR
20044
20045 When configured for debugging the Atmel AVR, @value{GDBN} supports the
20046 following AVR-specific commands:
20047
20048 @table @code
20049 @item info io_registers
20050 @kindex info io_registers@r{, AVR}
20051 @cindex I/O registers (Atmel AVR)
20052 This command displays information about the AVR I/O registers. For
20053 each register, @value{GDBN} prints its number and value.
20054 @end table
20055
20056 @node CRIS
20057 @subsection CRIS
20058 @cindex CRIS
20059
20060 When configured for debugging CRIS, @value{GDBN} provides the
20061 following CRIS-specific commands:
20062
20063 @table @code
20064 @item set cris-version @var{ver}
20065 @cindex CRIS version
20066 Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
20067 The CRIS version affects register names and sizes. This command is useful in
20068 case autodetection of the CRIS version fails.
20069
20070 @item show cris-version
20071 Show the current CRIS version.
20072
20073 @item set cris-dwarf2-cfi
20074 @cindex DWARF-2 CFI and CRIS
20075 Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
20076 Change to @samp{off} when using @code{gcc-cris} whose version is below
20077 @code{R59}.
20078
20079 @item show cris-dwarf2-cfi
20080 Show the current state of using DWARF-2 CFI.
20081
20082 @item set cris-mode @var{mode}
20083 @cindex CRIS mode
20084 Set the current CRIS mode to @var{mode}. It should only be changed when
20085 debugging in guru mode, in which case it should be set to
20086 @samp{guru} (the default is @samp{normal}).
20087
20088 @item show cris-mode
20089 Show the current CRIS mode.
20090 @end table
20091
20092 @node Super-H
20093 @subsection Renesas Super-H
20094 @cindex Super-H
20095
20096 For the Renesas Super-H processor, @value{GDBN} provides these
20097 commands:
20098
20099 @table @code
20100 @item regs
20101 @kindex regs@r{, Super-H}
20102 Show the values of all Super-H registers.
20103
20104 @item set sh calling-convention @var{convention}
20105 @kindex set sh calling-convention
20106 Set the calling-convention used when calling functions from @value{GDBN}.
20107 Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
20108 With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
20109 convention. If the DWARF-2 information of the called function specifies
20110 that the function follows the Renesas calling convention, the function
20111 is called using the Renesas calling convention. If the calling convention
20112 is set to @samp{renesas}, the Renesas calling convention is always used,
20113 regardless of the DWARF-2 information. This can be used to override the
20114 default of @samp{gcc} if debug information is missing, or the compiler
20115 does not emit the DWARF-2 calling convention entry for a function.
20116
20117 @item show sh calling-convention
20118 @kindex show sh calling-convention
20119 Show the current calling convention setting.
20120
20121 @end table
20122
20123
20124 @node Architectures
20125 @section Architectures
20126
20127 This section describes characteristics of architectures that affect
20128 all uses of @value{GDBN} with the architecture, both native and cross.
20129
20130 @menu
20131 * i386::
20132 * A29K::
20133 * Alpha::
20134 * MIPS::
20135 * HPPA:: HP PA architecture
20136 * SPU:: Cell Broadband Engine SPU architecture
20137 * PowerPC::
20138 @end menu
20139
20140 @node i386
20141 @subsection x86 Architecture-specific Issues
20142
20143 @table @code
20144 @item set struct-convention @var{mode}
20145 @kindex set struct-convention
20146 @cindex struct return convention
20147 @cindex struct/union returned in registers
20148 Set the convention used by the inferior to return @code{struct}s and
20149 @code{union}s from functions to @var{mode}. Possible values of
20150 @var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
20151 default). @code{"default"} or @code{"pcc"} means that @code{struct}s
20152 are returned on the stack, while @code{"reg"} means that a
20153 @code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
20154 be returned in a register.
20155
20156 @item show struct-convention
20157 @kindex show struct-convention
20158 Show the current setting of the convention to return @code{struct}s
20159 from functions.
20160 @end table
20161
20162 @node A29K
20163 @subsection A29K
20164
20165 @table @code
20166
20167 @kindex set rstack_high_address
20168 @cindex AMD 29K register stack
20169 @cindex register stack, AMD29K
20170 @item set rstack_high_address @var{address}
20171 On AMD 29000 family processors, registers are saved in a separate
20172 @dfn{register stack}. There is no way for @value{GDBN} to determine the
20173 extent of this stack. Normally, @value{GDBN} just assumes that the
20174 stack is ``large enough''. This may result in @value{GDBN} referencing
20175 memory locations that do not exist. If necessary, you can get around
20176 this problem by specifying the ending address of the register stack with
20177 the @code{set rstack_high_address} command. The argument should be an
20178 address, which you probably want to precede with @samp{0x} to specify in
20179 hexadecimal.
20180
20181 @kindex show rstack_high_address
20182 @item show rstack_high_address
20183 Display the current limit of the register stack, on AMD 29000 family
20184 processors.
20185
20186 @end table
20187
20188 @node Alpha
20189 @subsection Alpha
20190
20191 See the following section.
20192
20193 @node MIPS
20194 @subsection MIPS
20195
20196 @cindex stack on Alpha
20197 @cindex stack on MIPS
20198 @cindex Alpha stack
20199 @cindex MIPS stack
20200 Alpha- and MIPS-based computers use an unusual stack frame, which
20201 sometimes requires @value{GDBN} to search backward in the object code to
20202 find the beginning of a function.
20203
20204 @cindex response time, MIPS debugging
20205 To improve response time (especially for embedded applications, where
20206 @value{GDBN} may be restricted to a slow serial line for this search)
20207 you may want to limit the size of this search, using one of these
20208 commands:
20209
20210 @table @code
20211 @cindex @code{heuristic-fence-post} (Alpha, MIPS)
20212 @item set heuristic-fence-post @var{limit}
20213 Restrict @value{GDBN} to examining at most @var{limit} bytes in its
20214 search for the beginning of a function. A value of @var{0} (the
20215 default) means there is no limit. However, except for @var{0}, the
20216 larger the limit the more bytes @code{heuristic-fence-post} must search
20217 and therefore the longer it takes to run. You should only need to use
20218 this command when debugging a stripped executable.
20219
20220 @item show heuristic-fence-post
20221 Display the current limit.
20222 @end table
20223
20224 @noindent
20225 These commands are available @emph{only} when @value{GDBN} is configured
20226 for debugging programs on Alpha or MIPS processors.
20227
20228 Several MIPS-specific commands are available when debugging MIPS
20229 programs:
20230
20231 @table @code
20232 @item set mips abi @var{arg}
20233 @kindex set mips abi
20234 @cindex set ABI for MIPS
20235 Tell @value{GDBN} which MIPS ABI is used by the inferior. Possible
20236 values of @var{arg} are:
20237
20238 @table @samp
20239 @item auto
20240 The default ABI associated with the current binary (this is the
20241 default).
20242 @item o32
20243 @item o64
20244 @item n32
20245 @item n64
20246 @item eabi32
20247 @item eabi64
20248 @end table
20249
20250 @item show mips abi
20251 @kindex show mips abi
20252 Show the MIPS ABI used by @value{GDBN} to debug the inferior.
20253
20254 @item set mipsfpu
20255 @itemx show mipsfpu
20256 @xref{MIPS Embedded, set mipsfpu}.
20257
20258 @item set mips mask-address @var{arg}
20259 @kindex set mips mask-address
20260 @cindex MIPS addresses, masking
20261 This command determines whether the most-significant 32 bits of 64-bit
20262 MIPS addresses are masked off. The argument @var{arg} can be
20263 @samp{on}, @samp{off}, or @samp{auto}. The latter is the default
20264 setting, which lets @value{GDBN} determine the correct value.
20265
20266 @item show mips mask-address
20267 @kindex show mips mask-address
20268 Show whether the upper 32 bits of MIPS addresses are masked off or
20269 not.
20270
20271 @item set remote-mips64-transfers-32bit-regs
20272 @kindex set remote-mips64-transfers-32bit-regs
20273 This command controls compatibility with 64-bit MIPS targets that
20274 transfer data in 32-bit quantities. If you have an old MIPS 64 target
20275 that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
20276 and 64 bits for other registers, set this option to @samp{on}.
20277
20278 @item show remote-mips64-transfers-32bit-regs
20279 @kindex show remote-mips64-transfers-32bit-regs
20280 Show the current setting of compatibility with older MIPS 64 targets.
20281
20282 @item set debug mips
20283 @kindex set debug mips
20284 This command turns on and off debugging messages for the MIPS-specific
20285 target code in @value{GDBN}.
20286
20287 @item show debug mips
20288 @kindex show debug mips
20289 Show the current setting of MIPS debugging messages.
20290 @end table
20291
20292
20293 @node HPPA
20294 @subsection HPPA
20295 @cindex HPPA support
20296
20297 When @value{GDBN} is debugging the HP PA architecture, it provides the
20298 following special commands:
20299
20300 @table @code
20301 @item set debug hppa
20302 @kindex set debug hppa
20303 This command determines whether HPPA architecture-specific debugging
20304 messages are to be displayed.
20305
20306 @item show debug hppa
20307 Show whether HPPA debugging messages are displayed.
20308
20309 @item maint print unwind @var{address}
20310 @kindex maint print unwind@r{, HPPA}
20311 This command displays the contents of the unwind table entry at the
20312 given @var{address}.
20313
20314 @end table
20315
20316
20317 @node SPU
20318 @subsection Cell Broadband Engine SPU architecture
20319 @cindex Cell Broadband Engine
20320 @cindex SPU
20321
20322 When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
20323 it provides the following special commands:
20324
20325 @table @code
20326 @item info spu event
20327 @kindex info spu
20328 Display SPU event facility status. Shows current event mask
20329 and pending event status.
20330
20331 @item info spu signal
20332 Display SPU signal notification facility status. Shows pending
20333 signal-control word and signal notification mode of both signal
20334 notification channels.
20335
20336 @item info spu mailbox
20337 Display SPU mailbox facility status. Shows all pending entries,
20338 in order of processing, in each of the SPU Write Outbound,
20339 SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
20340
20341 @item info spu dma
20342 Display MFC DMA status. Shows all pending commands in the MFC
20343 DMA queue. For each entry, opcode, tag, class IDs, effective
20344 and local store addresses and transfer size are shown.
20345
20346 @item info spu proxydma
20347 Display MFC Proxy-DMA status. Shows all pending commands in the MFC
20348 Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
20349 and local store addresses and transfer size are shown.
20350
20351 @end table
20352
20353 When @value{GDBN} is debugging a combined PowerPC/SPU application
20354 on the Cell Broadband Engine, it provides in addition the following
20355 special commands:
20356
20357 @table @code
20358 @item set spu stop-on-load @var{arg}
20359 @kindex set spu
20360 Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
20361 will give control to the user when a new SPE thread enters its @code{main}
20362 function. The default is @code{off}.
20363
20364 @item show spu stop-on-load
20365 @kindex show spu
20366 Show whether to stop for new SPE threads.
20367
20368 @item set spu auto-flush-cache @var{arg}
20369 Set whether to automatically flush the software-managed cache. When set to
20370 @code{on}, @value{GDBN} will automatically cause the SPE software-managed
20371 cache to be flushed whenever SPE execution stops. This provides a consistent
20372 view of PowerPC memory that is accessed via the cache. If an application
20373 does not use the software-managed cache, this option has no effect.
20374
20375 @item show spu auto-flush-cache
20376 Show whether to automatically flush the software-managed cache.
20377
20378 @end table
20379
20380 @node PowerPC
20381 @subsection PowerPC
20382 @cindex PowerPC architecture
20383
20384 When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
20385 pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
20386 numbers stored in the floating point registers. These values must be stored
20387 in two consecutive registers, always starting at an even register like
20388 @code{f0} or @code{f2}.
20389
20390 The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
20391 by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
20392 @code{f2} and @code{f3} for @code{$dl1} and so on.
20393
20394 For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
20395 wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
20396
20397
20398 @node Controlling GDB
20399 @chapter Controlling @value{GDBN}
20400
20401 You can alter the way @value{GDBN} interacts with you by using the
20402 @code{set} command. For commands controlling how @value{GDBN} displays
20403 data, see @ref{Print Settings, ,Print Settings}. Other settings are
20404 described here.
20405
20406 @menu
20407 * Prompt:: Prompt
20408 * Editing:: Command editing
20409 * Command History:: Command history
20410 * Screen Size:: Screen size
20411 * Numbers:: Numbers
20412 * ABI:: Configuring the current ABI
20413 * Messages/Warnings:: Optional warnings and messages
20414 * Debugging Output:: Optional messages about internal happenings
20415 * Other Misc Settings:: Other Miscellaneous Settings
20416 @end menu
20417
20418 @node Prompt
20419 @section Prompt
20420
20421 @cindex prompt
20422
20423 @value{GDBN} indicates its readiness to read a command by printing a string
20424 called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
20425 can change the prompt string with the @code{set prompt} command. For
20426 instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
20427 the prompt in one of the @value{GDBN} sessions so that you can always tell
20428 which one you are talking to.
20429
20430 @emph{Note:} @code{set prompt} does not add a space for you after the
20431 prompt you set. This allows you to set a prompt which ends in a space
20432 or a prompt that does not.
20433
20434 @table @code
20435 @kindex set prompt
20436 @item set prompt @var{newprompt}
20437 Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
20438
20439 @kindex show prompt
20440 @item show prompt
20441 Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
20442 @end table
20443
20444 Versions of @value{GDBN} that ship with Python scripting enabled have
20445 prompt extensions. The commands for interacting with these extensions
20446 are:
20447
20448 @table @code
20449 @kindex set extended-prompt
20450 @item set extended-prompt @var{prompt}
20451 Set an extended prompt that allows for substitutions.
20452 @xref{gdb.prompt}, for a list of escape sequences that can be used for
20453 substitution. Any escape sequences specified as part of the prompt
20454 string are replaced with the corresponding strings each time the prompt
20455 is displayed.
20456
20457 For example:
20458
20459 @smallexample
20460 set extended-prompt Current working directory: \w (gdb)
20461 @end smallexample
20462
20463 Note that when an extended-prompt is set, it takes control of the
20464 @var{prompt_hook} hook. @xref{prompt_hook}, for further information.
20465
20466 @kindex show extended-prompt
20467 @item show extended-prompt
20468 Prints the extended prompt. Any escape sequences specified as part of
20469 the prompt string with @code{set extended-prompt}, are replaced with the
20470 corresponding strings each time the prompt is displayed.
20471 @end table
20472
20473 @node Editing
20474 @section Command Editing
20475 @cindex readline
20476 @cindex command line editing
20477
20478 @value{GDBN} reads its input commands via the @dfn{Readline} interface. This
20479 @sc{gnu} library provides consistent behavior for programs which provide a
20480 command line interface to the user. Advantages are @sc{gnu} Emacs-style
20481 or @dfn{vi}-style inline editing of commands, @code{csh}-like history
20482 substitution, and a storage and recall of command history across
20483 debugging sessions.
20484
20485 You may control the behavior of command line editing in @value{GDBN} with the
20486 command @code{set}.
20487
20488 @table @code
20489 @kindex set editing
20490 @cindex editing
20491 @item set editing
20492 @itemx set editing on
20493 Enable command line editing (enabled by default).
20494
20495 @item set editing off
20496 Disable command line editing.
20497
20498 @kindex show editing
20499 @item show editing
20500 Show whether command line editing is enabled.
20501 @end table
20502
20503 @ifset SYSTEM_READLINE
20504 @xref{Command Line Editing, , , rluserman, GNU Readline Library},
20505 @end ifset
20506 @ifclear SYSTEM_READLINE
20507 @xref{Command Line Editing},
20508 @end ifclear
20509 for more details about the Readline
20510 interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
20511 encouraged to read that chapter.
20512
20513 @node Command History
20514 @section Command History
20515 @cindex command history
20516
20517 @value{GDBN} can keep track of the commands you type during your
20518 debugging sessions, so that you can be certain of precisely what
20519 happened. Use these commands to manage the @value{GDBN} command
20520 history facility.
20521
20522 @value{GDBN} uses the @sc{gnu} History library, a part of the Readline
20523 package, to provide the history facility.
20524 @ifset SYSTEM_READLINE
20525 @xref{Using History Interactively, , , history, GNU History Library},
20526 @end ifset
20527 @ifclear SYSTEM_READLINE
20528 @xref{Using History Interactively},
20529 @end ifclear
20530 for the detailed description of the History library.
20531
20532 To issue a command to @value{GDBN} without affecting certain aspects of
20533 the state which is seen by users, prefix it with @samp{server }
20534 (@pxref{Server Prefix}). This
20535 means that this command will not affect the command history, nor will it
20536 affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
20537 pressed on a line by itself.
20538
20539 @cindex @code{server}, command prefix
20540 The server prefix does not affect the recording of values into the value
20541 history; to print a value without recording it into the value history,
20542 use the @code{output} command instead of the @code{print} command.
20543
20544 Here is the description of @value{GDBN} commands related to command
20545 history.
20546
20547 @table @code
20548 @cindex history substitution
20549 @cindex history file
20550 @kindex set history filename
20551 @cindex @env{GDBHISTFILE}, environment variable
20552 @item set history filename @var{fname}
20553 Set the name of the @value{GDBN} command history file to @var{fname}.
20554 This is the file where @value{GDBN} reads an initial command history
20555 list, and where it writes the command history from this session when it
20556 exits. You can access this list through history expansion or through
20557 the history command editing characters listed below. This file defaults
20558 to the value of the environment variable @code{GDBHISTFILE}, or to
20559 @file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
20560 is not set.
20561
20562 @cindex save command history
20563 @kindex set history save
20564 @item set history save
20565 @itemx set history save on
20566 Record command history in a file, whose name may be specified with the
20567 @code{set history filename} command. By default, this option is disabled.
20568
20569 @item set history save off
20570 Stop recording command history in a file.
20571
20572 @cindex history size
20573 @kindex set history size
20574 @cindex @env{HISTSIZE}, environment variable
20575 @item set history size @var{size}
20576 Set the number of commands which @value{GDBN} keeps in its history list.
20577 This defaults to the value of the environment variable
20578 @code{HISTSIZE}, or to 256 if this variable is not set.
20579 @end table
20580
20581 History expansion assigns special meaning to the character @kbd{!}.
20582 @ifset SYSTEM_READLINE
20583 @xref{Event Designators, , , history, GNU History Library},
20584 @end ifset
20585 @ifclear SYSTEM_READLINE
20586 @xref{Event Designators},
20587 @end ifclear
20588 for more details.
20589
20590 @cindex history expansion, turn on/off
20591 Since @kbd{!} is also the logical not operator in C, history expansion
20592 is off by default. If you decide to enable history expansion with the
20593 @code{set history expansion on} command, you may sometimes need to
20594 follow @kbd{!} (when it is used as logical not, in an expression) with
20595 a space or a tab to prevent it from being expanded. The readline
20596 history facilities do not attempt substitution on the strings
20597 @kbd{!=} and @kbd{!(}, even when history expansion is enabled.
20598
20599 The commands to control history expansion are:
20600
20601 @table @code
20602 @item set history expansion on
20603 @itemx set history expansion
20604 @kindex set history expansion
20605 Enable history expansion. History expansion is off by default.
20606
20607 @item set history expansion off
20608 Disable history expansion.
20609
20610 @c @group
20611 @kindex show history
20612 @item show history
20613 @itemx show history filename
20614 @itemx show history save
20615 @itemx show history size
20616 @itemx show history expansion
20617 These commands display the state of the @value{GDBN} history parameters.
20618 @code{show history} by itself displays all four states.
20619 @c @end group
20620 @end table
20621
20622 @table @code
20623 @kindex show commands
20624 @cindex show last commands
20625 @cindex display command history
20626 @item show commands
20627 Display the last ten commands in the command history.
20628
20629 @item show commands @var{n}
20630 Print ten commands centered on command number @var{n}.
20631
20632 @item show commands +
20633 Print ten commands just after the commands last printed.
20634 @end table
20635
20636 @node Screen Size
20637 @section Screen Size
20638 @cindex size of screen
20639 @cindex pauses in output
20640
20641 Certain commands to @value{GDBN} may produce large amounts of
20642 information output to the screen. To help you read all of it,
20643 @value{GDBN} pauses and asks you for input at the end of each page of
20644 output. Type @key{RET} when you want to continue the output, or @kbd{q}
20645 to discard the remaining output. Also, the screen width setting
20646 determines when to wrap lines of output. Depending on what is being
20647 printed, @value{GDBN} tries to break the line at a readable place,
20648 rather than simply letting it overflow onto the following line.
20649
20650 Normally @value{GDBN} knows the size of the screen from the terminal
20651 driver software. For example, on Unix @value{GDBN} uses the termcap data base
20652 together with the value of the @code{TERM} environment variable and the
20653 @code{stty rows} and @code{stty cols} settings. If this is not correct,
20654 you can override it with the @code{set height} and @code{set
20655 width} commands:
20656
20657 @table @code
20658 @kindex set height
20659 @kindex set width
20660 @kindex show width
20661 @kindex show height
20662 @item set height @var{lpp}
20663 @itemx show height
20664 @itemx set width @var{cpl}
20665 @itemx show width
20666 These @code{set} commands specify a screen height of @var{lpp} lines and
20667 a screen width of @var{cpl} characters. The associated @code{show}
20668 commands display the current settings.
20669
20670 If you specify a height of zero lines, @value{GDBN} does not pause during
20671 output no matter how long the output is. This is useful if output is to a
20672 file or to an editor buffer.
20673
20674 Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
20675 from wrapping its output.
20676
20677 @item set pagination on
20678 @itemx set pagination off
20679 @kindex set pagination
20680 Turn the output pagination on or off; the default is on. Turning
20681 pagination off is the alternative to @code{set height 0}. Note that
20682 running @value{GDBN} with the @option{--batch} option (@pxref{Mode
20683 Options, -batch}) also automatically disables pagination.
20684
20685 @item show pagination
20686 @kindex show pagination
20687 Show the current pagination mode.
20688 @end table
20689
20690 @node Numbers
20691 @section Numbers
20692 @cindex number representation
20693 @cindex entering numbers
20694
20695 You can always enter numbers in octal, decimal, or hexadecimal in
20696 @value{GDBN} by the usual conventions: octal numbers begin with
20697 @samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
20698 begin with @samp{0x}. Numbers that neither begin with @samp{0} or
20699 @samp{0x}, nor end with a @samp{.} are, by default, entered in base
20700 10; likewise, the default display for numbers---when no particular
20701 format is specified---is base 10. You can change the default base for
20702 both input and output with the commands described below.
20703
20704 @table @code
20705 @kindex set input-radix
20706 @item set input-radix @var{base}
20707 Set the default base for numeric input. Supported choices
20708 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
20709 specified either unambiguously or using the current input radix; for
20710 example, any of
20711
20712 @smallexample
20713 set input-radix 012
20714 set input-radix 10.
20715 set input-radix 0xa
20716 @end smallexample
20717
20718 @noindent
20719 sets the input base to decimal. On the other hand, @samp{set input-radix 10}
20720 leaves the input radix unchanged, no matter what it was, since
20721 @samp{10}, being without any leading or trailing signs of its base, is
20722 interpreted in the current radix. Thus, if the current radix is 16,
20723 @samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
20724 change the radix.
20725
20726 @kindex set output-radix
20727 @item set output-radix @var{base}
20728 Set the default base for numeric display. Supported choices
20729 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
20730 specified either unambiguously or using the current input radix.
20731
20732 @kindex show input-radix
20733 @item show input-radix
20734 Display the current default base for numeric input.
20735
20736 @kindex show output-radix
20737 @item show output-radix
20738 Display the current default base for numeric display.
20739
20740 @item set radix @r{[}@var{base}@r{]}
20741 @itemx show radix
20742 @kindex set radix
20743 @kindex show radix
20744 These commands set and show the default base for both input and output
20745 of numbers. @code{set radix} sets the radix of input and output to
20746 the same base; without an argument, it resets the radix back to its
20747 default value of 10.
20748
20749 @end table
20750
20751 @node ABI
20752 @section Configuring the Current ABI
20753
20754 @value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
20755 application automatically. However, sometimes you need to override its
20756 conclusions. Use these commands to manage @value{GDBN}'s view of the
20757 current ABI.
20758
20759 @cindex OS ABI
20760 @kindex set osabi
20761 @kindex show osabi
20762
20763 One @value{GDBN} configuration can debug binaries for multiple operating
20764 system targets, either via remote debugging or native emulation.
20765 @value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
20766 but you can override its conclusion using the @code{set osabi} command.
20767 One example where this is useful is in debugging of binaries which use
20768 an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
20769 not have the same identifying marks that the standard C library for your
20770 platform provides.
20771
20772 @table @code
20773 @item show osabi
20774 Show the OS ABI currently in use.
20775
20776 @item set osabi
20777 With no argument, show the list of registered available OS ABI's.
20778
20779 @item set osabi @var{abi}
20780 Set the current OS ABI to @var{abi}.
20781 @end table
20782
20783 @cindex float promotion
20784
20785 Generally, the way that an argument of type @code{float} is passed to a
20786 function depends on whether the function is prototyped. For a prototyped
20787 (i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
20788 according to the architecture's convention for @code{float}. For unprototyped
20789 (i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
20790 @code{double} and then passed.
20791
20792 Unfortunately, some forms of debug information do not reliably indicate whether
20793 a function is prototyped. If @value{GDBN} calls a function that is not marked
20794 as prototyped, it consults @kbd{set coerce-float-to-double}.
20795
20796 @table @code
20797 @kindex set coerce-float-to-double
20798 @item set coerce-float-to-double
20799 @itemx set coerce-float-to-double on
20800 Arguments of type @code{float} will be promoted to @code{double} when passed
20801 to an unprototyped function. This is the default setting.
20802
20803 @item set coerce-float-to-double off
20804 Arguments of type @code{float} will be passed directly to unprototyped
20805 functions.
20806
20807 @kindex show coerce-float-to-double
20808 @item show coerce-float-to-double
20809 Show the current setting of promoting @code{float} to @code{double}.
20810 @end table
20811
20812 @kindex set cp-abi
20813 @kindex show cp-abi
20814 @value{GDBN} needs to know the ABI used for your program's C@t{++}
20815 objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
20816 used to build your application. @value{GDBN} only fully supports
20817 programs with a single C@t{++} ABI; if your program contains code using
20818 multiple C@t{++} ABI's or if @value{GDBN} can not identify your
20819 program's ABI correctly, you can tell @value{GDBN} which ABI to use.
20820 Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
20821 before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
20822 ``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
20823 use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
20824 ``auto''.
20825
20826 @table @code
20827 @item show cp-abi
20828 Show the C@t{++} ABI currently in use.
20829
20830 @item set cp-abi
20831 With no argument, show the list of supported C@t{++} ABI's.
20832
20833 @item set cp-abi @var{abi}
20834 @itemx set cp-abi auto
20835 Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
20836 @end table
20837
20838 @node Messages/Warnings
20839 @section Optional Warnings and Messages
20840
20841 @cindex verbose operation
20842 @cindex optional warnings
20843 By default, @value{GDBN} is silent about its inner workings. If you are
20844 running on a slow machine, you may want to use the @code{set verbose}
20845 command. This makes @value{GDBN} tell you when it does a lengthy
20846 internal operation, so you will not think it has crashed.
20847
20848 Currently, the messages controlled by @code{set verbose} are those
20849 which announce that the symbol table for a source file is being read;
20850 see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
20851
20852 @table @code
20853 @kindex set verbose
20854 @item set verbose on
20855 Enables @value{GDBN} output of certain informational messages.
20856
20857 @item set verbose off
20858 Disables @value{GDBN} output of certain informational messages.
20859
20860 @kindex show verbose
20861 @item show verbose
20862 Displays whether @code{set verbose} is on or off.
20863 @end table
20864
20865 By default, if @value{GDBN} encounters bugs in the symbol table of an
20866 object file, it is silent; but if you are debugging a compiler, you may
20867 find this information useful (@pxref{Symbol Errors, ,Errors Reading
20868 Symbol Files}).
20869
20870 @table @code
20871
20872 @kindex set complaints
20873 @item set complaints @var{limit}
20874 Permits @value{GDBN} to output @var{limit} complaints about each type of
20875 unusual symbols before becoming silent about the problem. Set
20876 @var{limit} to zero to suppress all complaints; set it to a large number
20877 to prevent complaints from being suppressed.
20878
20879 @kindex show complaints
20880 @item show complaints
20881 Displays how many symbol complaints @value{GDBN} is permitted to produce.
20882
20883 @end table
20884
20885 @anchor{confirmation requests}
20886 By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
20887 lot of stupid questions to confirm certain commands. For example, if
20888 you try to run a program which is already running:
20889
20890 @smallexample
20891 (@value{GDBP}) run
20892 The program being debugged has been started already.
20893 Start it from the beginning? (y or n)
20894 @end smallexample
20895
20896 If you are willing to unflinchingly face the consequences of your own
20897 commands, you can disable this ``feature'':
20898
20899 @table @code
20900
20901 @kindex set confirm
20902 @cindex flinching
20903 @cindex confirmation
20904 @cindex stupid questions
20905 @item set confirm off
20906 Disables confirmation requests. Note that running @value{GDBN} with
20907 the @option{--batch} option (@pxref{Mode Options, -batch}) also
20908 automatically disables confirmation requests.
20909
20910 @item set confirm on
20911 Enables confirmation requests (the default).
20912
20913 @kindex show confirm
20914 @item show confirm
20915 Displays state of confirmation requests.
20916
20917 @end table
20918
20919 @cindex command tracing
20920 If you need to debug user-defined commands or sourced files you may find it
20921 useful to enable @dfn{command tracing}. In this mode each command will be
20922 printed as it is executed, prefixed with one or more @samp{+} symbols, the
20923 quantity denoting the call depth of each command.
20924
20925 @table @code
20926 @kindex set trace-commands
20927 @cindex command scripts, debugging
20928 @item set trace-commands on
20929 Enable command tracing.
20930 @item set trace-commands off
20931 Disable command tracing.
20932 @item show trace-commands
20933 Display the current state of command tracing.
20934 @end table
20935
20936 @node Debugging Output
20937 @section Optional Messages about Internal Happenings
20938 @cindex optional debugging messages
20939
20940 @value{GDBN} has commands that enable optional debugging messages from
20941 various @value{GDBN} subsystems; normally these commands are of
20942 interest to @value{GDBN} maintainers, or when reporting a bug. This
20943 section documents those commands.
20944
20945 @table @code
20946 @kindex set exec-done-display
20947 @item set exec-done-display
20948 Turns on or off the notification of asynchronous commands'
20949 completion. When on, @value{GDBN} will print a message when an
20950 asynchronous command finishes its execution. The default is off.
20951 @kindex show exec-done-display
20952 @item show exec-done-display
20953 Displays the current setting of asynchronous command completion
20954 notification.
20955 @kindex set debug
20956 @cindex gdbarch debugging info
20957 @cindex architecture debugging info
20958 @item set debug arch
20959 Turns on or off display of gdbarch debugging info. The default is off
20960 @kindex show debug
20961 @item show debug arch
20962 Displays the current state of displaying gdbarch debugging info.
20963 @item set debug aix-thread
20964 @cindex AIX threads
20965 Display debugging messages about inner workings of the AIX thread
20966 module.
20967 @item show debug aix-thread
20968 Show the current state of AIX thread debugging info display.
20969 @item set debug check-physname
20970 @cindex physname
20971 Check the results of the ``physname'' computation. When reading DWARF
20972 debugging information for C@t{++}, @value{GDBN} attempts to compute
20973 each entity's name. @value{GDBN} can do this computation in two
20974 different ways, depending on exactly what information is present.
20975 When enabled, this setting causes @value{GDBN} to compute the names
20976 both ways and display any discrepancies.
20977 @item show debug check-physname
20978 Show the current state of ``physname'' checking.
20979 @item set debug dwarf2-die
20980 @cindex DWARF2 DIEs
20981 Dump DWARF2 DIEs after they are read in.
20982 The value is the number of nesting levels to print.
20983 A value of zero turns off the display.
20984 @item show debug dwarf2-die
20985 Show the current state of DWARF2 DIE debugging.
20986 @item set debug displaced
20987 @cindex displaced stepping debugging info
20988 Turns on or off display of @value{GDBN} debugging info for the
20989 displaced stepping support. The default is off.
20990 @item show debug displaced
20991 Displays the current state of displaying @value{GDBN} debugging info
20992 related to displaced stepping.
20993 @item set debug event
20994 @cindex event debugging info
20995 Turns on or off display of @value{GDBN} event debugging info. The
20996 default is off.
20997 @item show debug event
20998 Displays the current state of displaying @value{GDBN} event debugging
20999 info.
21000 @item set debug expression
21001 @cindex expression debugging info
21002 Turns on or off display of debugging info about @value{GDBN}
21003 expression parsing. The default is off.
21004 @item show debug expression
21005 Displays the current state of displaying debugging info about
21006 @value{GDBN} expression parsing.
21007 @item set debug frame
21008 @cindex frame debugging info
21009 Turns on or off display of @value{GDBN} frame debugging info. The
21010 default is off.
21011 @item show debug frame
21012 Displays the current state of displaying @value{GDBN} frame debugging
21013 info.
21014 @item set debug gnu-nat
21015 @cindex @sc{gnu}/Hurd debug messages
21016 Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
21017 @item show debug gnu-nat
21018 Show the current state of @sc{gnu}/Hurd debugging messages.
21019 @item set debug infrun
21020 @cindex inferior debugging info
21021 Turns on or off display of @value{GDBN} debugging info for running the inferior.
21022 The default is off. @file{infrun.c} contains GDB's runtime state machine used
21023 for implementing operations such as single-stepping the inferior.
21024 @item show debug infrun
21025 Displays the current state of @value{GDBN} inferior debugging.
21026 @item set debug jit
21027 @cindex just-in-time compilation, debugging messages
21028 Turns on or off debugging messages from JIT debug support.
21029 @item show debug jit
21030 Displays the current state of @value{GDBN} JIT debugging.
21031 @item set debug lin-lwp
21032 @cindex @sc{gnu}/Linux LWP debug messages
21033 @cindex Linux lightweight processes
21034 Turns on or off debugging messages from the Linux LWP debug support.
21035 @item show debug lin-lwp
21036 Show the current state of Linux LWP debugging messages.
21037 @item set debug observer
21038 @cindex observer debugging info
21039 Turns on or off display of @value{GDBN} observer debugging. This
21040 includes info such as the notification of observable events.
21041 @item show debug observer
21042 Displays the current state of observer debugging.
21043 @item set debug overload
21044 @cindex C@t{++} overload debugging info
21045 Turns on or off display of @value{GDBN} C@t{++} overload debugging
21046 info. This includes info such as ranking of functions, etc. The default
21047 is off.
21048 @item show debug overload
21049 Displays the current state of displaying @value{GDBN} C@t{++} overload
21050 debugging info.
21051 @cindex expression parser, debugging info
21052 @cindex debug expression parser
21053 @item set debug parser
21054 Turns on or off the display of expression parser debugging output.
21055 Internally, this sets the @code{yydebug} variable in the expression
21056 parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
21057 details. The default is off.
21058 @item show debug parser
21059 Show the current state of expression parser debugging.
21060 @cindex packets, reporting on stdout
21061 @cindex serial connections, debugging
21062 @cindex debug remote protocol
21063 @cindex remote protocol debugging
21064 @cindex display remote packets
21065 @item set debug remote
21066 Turns on or off display of reports on all packets sent back and forth across
21067 the serial line to the remote machine. The info is printed on the
21068 @value{GDBN} standard output stream. The default is off.
21069 @item show debug remote
21070 Displays the state of display of remote packets.
21071 @item set debug serial
21072 Turns on or off display of @value{GDBN} serial debugging info. The
21073 default is off.
21074 @item show debug serial
21075 Displays the current state of displaying @value{GDBN} serial debugging
21076 info.
21077 @item set debug solib-frv
21078 @cindex FR-V shared-library debugging
21079 Turns on or off debugging messages for FR-V shared-library code.
21080 @item show debug solib-frv
21081 Display the current state of FR-V shared-library code debugging
21082 messages.
21083 @item set debug target
21084 @cindex target debugging info
21085 Turns on or off display of @value{GDBN} target debugging info. This info
21086 includes what is going on at the target level of GDB, as it happens. The
21087 default is 0. Set it to 1 to track events, and to 2 to also track the
21088 value of large memory transfers. Changes to this flag do not take effect
21089 until the next time you connect to a target or use the @code{run} command.
21090 @item show debug target
21091 Displays the current state of displaying @value{GDBN} target debugging
21092 info.
21093 @item set debug timestamp
21094 @cindex timestampping debugging info
21095 Turns on or off display of timestamps with @value{GDBN} debugging info.
21096 When enabled, seconds and microseconds are displayed before each debugging
21097 message.
21098 @item show debug timestamp
21099 Displays the current state of displaying timestamps with @value{GDBN}
21100 debugging info.
21101 @item set debugvarobj
21102 @cindex variable object debugging info
21103 Turns on or off display of @value{GDBN} variable object debugging
21104 info. The default is off.
21105 @item show debugvarobj
21106 Displays the current state of displaying @value{GDBN} variable object
21107 debugging info.
21108 @item set debug xml
21109 @cindex XML parser debugging
21110 Turns on or off debugging messages for built-in XML parsers.
21111 @item show debug xml
21112 Displays the current state of XML debugging messages.
21113 @end table
21114
21115 @node Other Misc Settings
21116 @section Other Miscellaneous Settings
21117 @cindex miscellaneous settings
21118
21119 @table @code
21120 @kindex set interactive-mode
21121 @item set interactive-mode
21122 If @code{on}, forces @value{GDBN} to assume that GDB was started
21123 in a terminal. In practice, this means that @value{GDBN} should wait
21124 for the user to answer queries generated by commands entered at
21125 the command prompt. If @code{off}, forces @value{GDBN} to operate
21126 in the opposite mode, and it uses the default answers to all queries.
21127 If @code{auto} (the default), @value{GDBN} tries to determine whether
21128 its standard input is a terminal, and works in interactive-mode if it
21129 is, non-interactively otherwise.
21130
21131 In the vast majority of cases, the debugger should be able to guess
21132 correctly which mode should be used. But this setting can be useful
21133 in certain specific cases, such as running a MinGW @value{GDBN}
21134 inside a cygwin window.
21135
21136 @kindex show interactive-mode
21137 @item show interactive-mode
21138 Displays whether the debugger is operating in interactive mode or not.
21139 @end table
21140
21141 @node Extending GDB
21142 @chapter Extending @value{GDBN}
21143 @cindex extending GDB
21144
21145 @value{GDBN} provides three mechanisms for extension. The first is based
21146 on composition of @value{GDBN} commands, the second is based on the
21147 Python scripting language, and the third is for defining new aliases of
21148 existing commands.
21149
21150 To facilitate the use of the first two extensions, @value{GDBN} is capable
21151 of evaluating the contents of a file. When doing so, @value{GDBN}
21152 can recognize which scripting language is being used by looking at
21153 the filename extension. Files with an unrecognized filename extension
21154 are always treated as a @value{GDBN} Command Files.
21155 @xref{Command Files,, Command files}.
21156
21157 You can control how @value{GDBN} evaluates these files with the following
21158 setting:
21159
21160 @table @code
21161 @kindex set script-extension
21162 @kindex show script-extension
21163 @item set script-extension off
21164 All scripts are always evaluated as @value{GDBN} Command Files.
21165
21166 @item set script-extension soft
21167 The debugger determines the scripting language based on filename
21168 extension. If this scripting language is supported, @value{GDBN}
21169 evaluates the script using that language. Otherwise, it evaluates
21170 the file as a @value{GDBN} Command File.
21171
21172 @item set script-extension strict
21173 The debugger determines the scripting language based on filename
21174 extension, and evaluates the script using that language. If the
21175 language is not supported, then the evaluation fails.
21176
21177 @item show script-extension
21178 Display the current value of the @code{script-extension} option.
21179
21180 @end table
21181
21182 @menu
21183 * Sequences:: Canned Sequences of Commands
21184 * Python:: Scripting @value{GDBN} using Python
21185 * Aliases:: Creating new spellings of existing commands
21186 @end menu
21187
21188 @node Sequences
21189 @section Canned Sequences of Commands
21190
21191 Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
21192 Command Lists}), @value{GDBN} provides two ways to store sequences of
21193 commands for execution as a unit: user-defined commands and command
21194 files.
21195
21196 @menu
21197 * Define:: How to define your own commands
21198 * Hooks:: Hooks for user-defined commands
21199 * Command Files:: How to write scripts of commands to be stored in a file
21200 * Output:: Commands for controlled output
21201 @end menu
21202
21203 @node Define
21204 @subsection User-defined Commands
21205
21206 @cindex user-defined command
21207 @cindex arguments, to user-defined commands
21208 A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
21209 which you assign a new name as a command. This is done with the
21210 @code{define} command. User commands may accept up to 10 arguments
21211 separated by whitespace. Arguments are accessed within the user command
21212 via @code{$arg0@dots{}$arg9}. A trivial example:
21213
21214 @smallexample
21215 define adder
21216 print $arg0 + $arg1 + $arg2
21217 end
21218 @end smallexample
21219
21220 @noindent
21221 To execute the command use:
21222
21223 @smallexample
21224 adder 1 2 3
21225 @end smallexample
21226
21227 @noindent
21228 This defines the command @code{adder}, which prints the sum of
21229 its three arguments. Note the arguments are text substitutions, so they may
21230 reference variables, use complex expressions, or even perform inferior
21231 functions calls.
21232
21233 @cindex argument count in user-defined commands
21234 @cindex how many arguments (user-defined commands)
21235 In addition, @code{$argc} may be used to find out how many arguments have
21236 been passed. This expands to a number in the range 0@dots{}10.
21237
21238 @smallexample
21239 define adder
21240 if $argc == 2
21241 print $arg0 + $arg1
21242 end
21243 if $argc == 3
21244 print $arg0 + $arg1 + $arg2
21245 end
21246 end
21247 @end smallexample
21248
21249 @table @code
21250
21251 @kindex define
21252 @item define @var{commandname}
21253 Define a command named @var{commandname}. If there is already a command
21254 by that name, you are asked to confirm that you want to redefine it.
21255 @var{commandname} may be a bare command name consisting of letters,
21256 numbers, dashes, and underscores. It may also start with any predefined
21257 prefix command. For example, @samp{define target my-target} creates
21258 a user-defined @samp{target my-target} command.
21259
21260 The definition of the command is made up of other @value{GDBN} command lines,
21261 which are given following the @code{define} command. The end of these
21262 commands is marked by a line containing @code{end}.
21263
21264 @kindex document
21265 @kindex end@r{ (user-defined commands)}
21266 @item document @var{commandname}
21267 Document the user-defined command @var{commandname}, so that it can be
21268 accessed by @code{help}. The command @var{commandname} must already be
21269 defined. This command reads lines of documentation just as @code{define}
21270 reads the lines of the command definition, ending with @code{end}.
21271 After the @code{document} command is finished, @code{help} on command
21272 @var{commandname} displays the documentation you have written.
21273
21274 You may use the @code{document} command again to change the
21275 documentation of a command. Redefining the command with @code{define}
21276 does not change the documentation.
21277
21278 @kindex dont-repeat
21279 @cindex don't repeat command
21280 @item dont-repeat
21281 Used inside a user-defined command, this tells @value{GDBN} that this
21282 command should not be repeated when the user hits @key{RET}
21283 (@pxref{Command Syntax, repeat last command}).
21284
21285 @kindex help user-defined
21286 @item help user-defined
21287 List all user-defined commands and all python commands defined in class
21288 COMAND_USER. The first line of the documentation or docstring is
21289 included (if any).
21290
21291 @kindex show user
21292 @item show user
21293 @itemx show user @var{commandname}
21294 Display the @value{GDBN} commands used to define @var{commandname} (but
21295 not its documentation). If no @var{commandname} is given, display the
21296 definitions for all user-defined commands.
21297 This does not work for user-defined python commands.
21298
21299 @cindex infinite recursion in user-defined commands
21300 @kindex show max-user-call-depth
21301 @kindex set max-user-call-depth
21302 @item show max-user-call-depth
21303 @itemx set max-user-call-depth
21304 The value of @code{max-user-call-depth} controls how many recursion
21305 levels are allowed in user-defined commands before @value{GDBN} suspects an
21306 infinite recursion and aborts the command.
21307 This does not apply to user-defined python commands.
21308 @end table
21309
21310 In addition to the above commands, user-defined commands frequently
21311 use control flow commands, described in @ref{Command Files}.
21312
21313 When user-defined commands are executed, the
21314 commands of the definition are not printed. An error in any command
21315 stops execution of the user-defined command.
21316
21317 If used interactively, commands that would ask for confirmation proceed
21318 without asking when used inside a user-defined command. Many @value{GDBN}
21319 commands that normally print messages to say what they are doing omit the
21320 messages when used in a user-defined command.
21321
21322 @node Hooks
21323 @subsection User-defined Command Hooks
21324 @cindex command hooks
21325 @cindex hooks, for commands
21326 @cindex hooks, pre-command
21327
21328 @kindex hook
21329 You may define @dfn{hooks}, which are a special kind of user-defined
21330 command. Whenever you run the command @samp{foo}, if the user-defined
21331 command @samp{hook-foo} exists, it is executed (with no arguments)
21332 before that command.
21333
21334 @cindex hooks, post-command
21335 @kindex hookpost
21336 A hook may also be defined which is run after the command you executed.
21337 Whenever you run the command @samp{foo}, if the user-defined command
21338 @samp{hookpost-foo} exists, it is executed (with no arguments) after
21339 that command. Post-execution hooks may exist simultaneously with
21340 pre-execution hooks, for the same command.
21341
21342 It is valid for a hook to call the command which it hooks. If this
21343 occurs, the hook is not re-executed, thereby avoiding infinite recursion.
21344
21345 @c It would be nice if hookpost could be passed a parameter indicating
21346 @c if the command it hooks executed properly or not. FIXME!
21347
21348 @kindex stop@r{, a pseudo-command}
21349 In addition, a pseudo-command, @samp{stop} exists. Defining
21350 (@samp{hook-stop}) makes the associated commands execute every time
21351 execution stops in your program: before breakpoint commands are run,
21352 displays are printed, or the stack frame is printed.
21353
21354 For example, to ignore @code{SIGALRM} signals while
21355 single-stepping, but treat them normally during normal execution,
21356 you could define:
21357
21358 @smallexample
21359 define hook-stop
21360 handle SIGALRM nopass
21361 end
21362
21363 define hook-run
21364 handle SIGALRM pass
21365 end
21366
21367 define hook-continue
21368 handle SIGALRM pass
21369 end
21370 @end smallexample
21371
21372 As a further example, to hook at the beginning and end of the @code{echo}
21373 command, and to add extra text to the beginning and end of the message,
21374 you could define:
21375
21376 @smallexample
21377 define hook-echo
21378 echo <<<---
21379 end
21380
21381 define hookpost-echo
21382 echo --->>>\n
21383 end
21384
21385 (@value{GDBP}) echo Hello World
21386 <<<---Hello World--->>>
21387 (@value{GDBP})
21388
21389 @end smallexample
21390
21391 You can define a hook for any single-word command in @value{GDBN}, but
21392 not for command aliases; you should define a hook for the basic command
21393 name, e.g.@: @code{backtrace} rather than @code{bt}.
21394 @c FIXME! So how does Joe User discover whether a command is an alias
21395 @c or not?
21396 You can hook a multi-word command by adding @code{hook-} or
21397 @code{hookpost-} to the last word of the command, e.g.@:
21398 @samp{define target hook-remote} to add a hook to @samp{target remote}.
21399
21400 If an error occurs during the execution of your hook, execution of
21401 @value{GDBN} commands stops and @value{GDBN} issues a prompt
21402 (before the command that you actually typed had a chance to run).
21403
21404 If you try to define a hook which does not match any known command, you
21405 get a warning from the @code{define} command.
21406
21407 @node Command Files
21408 @subsection Command Files
21409
21410 @cindex command files
21411 @cindex scripting commands
21412 A command file for @value{GDBN} is a text file made of lines that are
21413 @value{GDBN} commands. Comments (lines starting with @kbd{#}) may
21414 also be included. An empty line in a command file does nothing; it
21415 does not mean to repeat the last command, as it would from the
21416 terminal.
21417
21418 You can request the execution of a command file with the @code{source}
21419 command. Note that the @code{source} command is also used to evaluate
21420 scripts that are not Command Files. The exact behavior can be configured
21421 using the @code{script-extension} setting.
21422 @xref{Extending GDB,, Extending GDB}.
21423
21424 @table @code
21425 @kindex source
21426 @cindex execute commands from a file
21427 @item source [-s] [-v] @var{filename}
21428 Execute the command file @var{filename}.
21429 @end table
21430
21431 The lines in a command file are generally executed sequentially,
21432 unless the order of execution is changed by one of the
21433 @emph{flow-control commands} described below. The commands are not
21434 printed as they are executed. An error in any command terminates
21435 execution of the command file and control is returned to the console.
21436
21437 @value{GDBN} first searches for @var{filename} in the current directory.
21438 If the file is not found there, and @var{filename} does not specify a
21439 directory, then @value{GDBN} also looks for the file on the source search path
21440 (specified with the @samp{directory} command);
21441 except that @file{$cdir} is not searched because the compilation directory
21442 is not relevant to scripts.
21443
21444 If @code{-s} is specified, then @value{GDBN} searches for @var{filename}
21445 on the search path even if @var{filename} specifies a directory.
21446 The search is done by appending @var{filename} to each element of the
21447 search path. So, for example, if @var{filename} is @file{mylib/myscript}
21448 and the search path contains @file{/home/user} then @value{GDBN} will
21449 look for the script @file{/home/user/mylib/myscript}.
21450 The search is also done if @var{filename} is an absolute path.
21451 For example, if @var{filename} is @file{/tmp/myscript} and
21452 the search path contains @file{/home/user} then @value{GDBN} will
21453 look for the script @file{/home/user/tmp/myscript}.
21454 For DOS-like systems, if @var{filename} contains a drive specification,
21455 it is stripped before concatenation. For example, if @var{filename} is
21456 @file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN}
21457 will look for the script @file{c:/tmp/myscript}.
21458
21459 If @code{-v}, for verbose mode, is given then @value{GDBN} displays
21460 each command as it is executed. The option must be given before
21461 @var{filename}, and is interpreted as part of the filename anywhere else.
21462
21463 Commands that would ask for confirmation if used interactively proceed
21464 without asking when used in a command file. Many @value{GDBN} commands that
21465 normally print messages to say what they are doing omit the messages
21466 when called from command files.
21467
21468 @value{GDBN} also accepts command input from standard input. In this
21469 mode, normal output goes to standard output and error output goes to
21470 standard error. Errors in a command file supplied on standard input do
21471 not terminate execution of the command file---execution continues with
21472 the next command.
21473
21474 @smallexample
21475 gdb < cmds > log 2>&1
21476 @end smallexample
21477
21478 (The syntax above will vary depending on the shell used.) This example
21479 will execute commands from the file @file{cmds}. All output and errors
21480 would be directed to @file{log}.
21481
21482 Since commands stored on command files tend to be more general than
21483 commands typed interactively, they frequently need to deal with
21484 complicated situations, such as different or unexpected values of
21485 variables and symbols, changes in how the program being debugged is
21486 built, etc. @value{GDBN} provides a set of flow-control commands to
21487 deal with these complexities. Using these commands, you can write
21488 complex scripts that loop over data structures, execute commands
21489 conditionally, etc.
21490
21491 @table @code
21492 @kindex if
21493 @kindex else
21494 @item if
21495 @itemx else
21496 This command allows to include in your script conditionally executed
21497 commands. The @code{if} command takes a single argument, which is an
21498 expression to evaluate. It is followed by a series of commands that
21499 are executed only if the expression is true (its value is nonzero).
21500 There can then optionally be an @code{else} line, followed by a series
21501 of commands that are only executed if the expression was false. The
21502 end of the list is marked by a line containing @code{end}.
21503
21504 @kindex while
21505 @item while
21506 This command allows to write loops. Its syntax is similar to
21507 @code{if}: the command takes a single argument, which is an expression
21508 to evaluate, and must be followed by the commands to execute, one per
21509 line, terminated by an @code{end}. These commands are called the
21510 @dfn{body} of the loop. The commands in the body of @code{while} are
21511 executed repeatedly as long as the expression evaluates to true.
21512
21513 @kindex loop_break
21514 @item loop_break
21515 This command exits the @code{while} loop in whose body it is included.
21516 Execution of the script continues after that @code{while}s @code{end}
21517 line.
21518
21519 @kindex loop_continue
21520 @item loop_continue
21521 This command skips the execution of the rest of the body of commands
21522 in the @code{while} loop in whose body it is included. Execution
21523 branches to the beginning of the @code{while} loop, where it evaluates
21524 the controlling expression.
21525
21526 @kindex end@r{ (if/else/while commands)}
21527 @item end
21528 Terminate the block of commands that are the body of @code{if},
21529 @code{else}, or @code{while} flow-control commands.
21530 @end table
21531
21532
21533 @node Output
21534 @subsection Commands for Controlled Output
21535
21536 During the execution of a command file or a user-defined command, normal
21537 @value{GDBN} output is suppressed; the only output that appears is what is
21538 explicitly printed by the commands in the definition. This section
21539 describes three commands useful for generating exactly the output you
21540 want.
21541
21542 @table @code
21543 @kindex echo
21544 @item echo @var{text}
21545 @c I do not consider backslash-space a standard C escape sequence
21546 @c because it is not in ANSI.
21547 Print @var{text}. Nonprinting characters can be included in
21548 @var{text} using C escape sequences, such as @samp{\n} to print a
21549 newline. @strong{No newline is printed unless you specify one.}
21550 In addition to the standard C escape sequences, a backslash followed
21551 by a space stands for a space. This is useful for displaying a
21552 string with spaces at the beginning or the end, since leading and
21553 trailing spaces are otherwise trimmed from all arguments.
21554 To print @samp{@w{ }and foo =@w{ }}, use the command
21555 @samp{echo \@w{ }and foo = \@w{ }}.
21556
21557 A backslash at the end of @var{text} can be used, as in C, to continue
21558 the command onto subsequent lines. For example,
21559
21560 @smallexample
21561 echo This is some text\n\
21562 which is continued\n\
21563 onto several lines.\n
21564 @end smallexample
21565
21566 produces the same output as
21567
21568 @smallexample
21569 echo This is some text\n
21570 echo which is continued\n
21571 echo onto several lines.\n
21572 @end smallexample
21573
21574 @kindex output
21575 @item output @var{expression}
21576 Print the value of @var{expression} and nothing but that value: no
21577 newlines, no @samp{$@var{nn} = }. The value is not entered in the
21578 value history either. @xref{Expressions, ,Expressions}, for more information
21579 on expressions.
21580
21581 @item output/@var{fmt} @var{expression}
21582 Print the value of @var{expression} in format @var{fmt}. You can use
21583 the same formats as for @code{print}. @xref{Output Formats,,Output
21584 Formats}, for more information.
21585
21586 @kindex printf
21587 @item printf @var{template}, @var{expressions}@dots{}
21588 Print the values of one or more @var{expressions} under the control of
21589 the string @var{template}. To print several values, make
21590 @var{expressions} be a comma-separated list of individual expressions,
21591 which may be either numbers or pointers. Their values are printed as
21592 specified by @var{template}, exactly as a C program would do by
21593 executing the code below:
21594
21595 @smallexample
21596 printf (@var{template}, @var{expressions}@dots{});
21597 @end smallexample
21598
21599 As in @code{C} @code{printf}, ordinary characters in @var{template}
21600 are printed verbatim, while @dfn{conversion specification} introduced
21601 by the @samp{%} character cause subsequent @var{expressions} to be
21602 evaluated, their values converted and formatted according to type and
21603 style information encoded in the conversion specifications, and then
21604 printed.
21605
21606 For example, you can print two values in hex like this:
21607
21608 @smallexample
21609 printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
21610 @end smallexample
21611
21612 @code{printf} supports all the standard @code{C} conversion
21613 specifications, including the flags and modifiers between the @samp{%}
21614 character and the conversion letter, with the following exceptions:
21615
21616 @itemize @bullet
21617 @item
21618 The argument-ordering modifiers, such as @samp{2$}, are not supported.
21619
21620 @item
21621 The modifier @samp{*} is not supported for specifying precision or
21622 width.
21623
21624 @item
21625 The @samp{'} flag (for separation of digits into groups according to
21626 @code{LC_NUMERIC'}) is not supported.
21627
21628 @item
21629 The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
21630 supported.
21631
21632 @item
21633 The conversion letter @samp{n} (as in @samp{%n}) is not supported.
21634
21635 @item
21636 The conversion letters @samp{a} and @samp{A} are not supported.
21637 @end itemize
21638
21639 @noindent
21640 Note that the @samp{ll} type modifier is supported only if the
21641 underlying @code{C} implementation used to build @value{GDBN} supports
21642 the @code{long long int} type, and the @samp{L} type modifier is
21643 supported only if @code{long double} type is available.
21644
21645 As in @code{C}, @code{printf} supports simple backslash-escape
21646 sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
21647 @samp{\a}, and @samp{\f}, that consist of backslash followed by a
21648 single character. Octal and hexadecimal escape sequences are not
21649 supported.
21650
21651 Additionally, @code{printf} supports conversion specifications for DFP
21652 (@dfn{Decimal Floating Point}) types using the following length modifiers
21653 together with a floating point specifier.
21654 letters:
21655
21656 @itemize @bullet
21657 @item
21658 @samp{H} for printing @code{Decimal32} types.
21659
21660 @item
21661 @samp{D} for printing @code{Decimal64} types.
21662
21663 @item
21664 @samp{DD} for printing @code{Decimal128} types.
21665 @end itemize
21666
21667 If the underlying @code{C} implementation used to build @value{GDBN} has
21668 support for the three length modifiers for DFP types, other modifiers
21669 such as width and precision will also be available for @value{GDBN} to use.
21670
21671 In case there is no such @code{C} support, no additional modifiers will be
21672 available and the value will be printed in the standard way.
21673
21674 Here's an example of printing DFP types using the above conversion letters:
21675 @smallexample
21676 printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
21677 @end smallexample
21678
21679 @kindex eval
21680 @item eval @var{template}, @var{expressions}@dots{}
21681 Convert the values of one or more @var{expressions} under the control of
21682 the string @var{template} to a command line, and call it.
21683
21684 @end table
21685
21686 @node Python
21687 @section Scripting @value{GDBN} using Python
21688 @cindex python scripting
21689 @cindex scripting with python
21690
21691 You can script @value{GDBN} using the @uref{http://www.python.org/,
21692 Python programming language}. This feature is available only if
21693 @value{GDBN} was configured using @option{--with-python}.
21694
21695 @cindex python directory
21696 Python scripts used by @value{GDBN} should be installed in
21697 @file{@var{data-directory}/python}, where @var{data-directory} is
21698 the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
21699 This directory, known as the @dfn{python directory},
21700 is automatically added to the Python Search Path in order to allow
21701 the Python interpreter to locate all scripts installed at this location.
21702
21703 Additionally, @value{GDBN} commands and convenience functions which
21704 are written in Python and are located in the
21705 @file{@var{data-directory}/python/gdb/command} or
21706 @file{@var{data-directory}/python/gdb/function} directories are
21707 automatically imported when @value{GDBN} starts.
21708
21709 @menu
21710 * Python Commands:: Accessing Python from @value{GDBN}.
21711 * Python API:: Accessing @value{GDBN} from Python.
21712 * Auto-loading:: Automatically loading Python code.
21713 * Python modules:: Python modules provided by @value{GDBN}.
21714 @end menu
21715
21716 @node Python Commands
21717 @subsection Python Commands
21718 @cindex python commands
21719 @cindex commands to access python
21720
21721 @value{GDBN} provides one command for accessing the Python interpreter,
21722 and one related setting:
21723
21724 @table @code
21725 @kindex python
21726 @item python @r{[}@var{code}@r{]}
21727 The @code{python} command can be used to evaluate Python code.
21728
21729 If given an argument, the @code{python} command will evaluate the
21730 argument as a Python command. For example:
21731
21732 @smallexample
21733 (@value{GDBP}) python print 23
21734 23
21735 @end smallexample
21736
21737 If you do not provide an argument to @code{python}, it will act as a
21738 multi-line command, like @code{define}. In this case, the Python
21739 script is made up of subsequent command lines, given after the
21740 @code{python} command. This command list is terminated using a line
21741 containing @code{end}. For example:
21742
21743 @smallexample
21744 (@value{GDBP}) python
21745 Type python script
21746 End with a line saying just "end".
21747 >print 23
21748 >end
21749 23
21750 @end smallexample
21751
21752 @kindex set python print-stack
21753 @item set python print-stack
21754 By default, @value{GDBN} will print only the message component of a
21755 Python exception when an error occurs in a Python script. This can be
21756 controlled using @code{set python print-stack}: if @code{full}, then
21757 full Python stack printing is enabled; if @code{none}, then Python stack
21758 and message printing is disabled; if @code{message}, the default, only
21759 the message component of the error is printed.
21760 @end table
21761
21762 It is also possible to execute a Python script from the @value{GDBN}
21763 interpreter:
21764
21765 @table @code
21766 @item source @file{script-name}
21767 The script name must end with @samp{.py} and @value{GDBN} must be configured
21768 to recognize the script language based on filename extension using
21769 the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
21770
21771 @item python execfile ("script-name")
21772 This method is based on the @code{execfile} Python built-in function,
21773 and thus is always available.
21774 @end table
21775
21776 @node Python API
21777 @subsection Python API
21778 @cindex python api
21779 @cindex programming in python
21780
21781 @cindex python stdout
21782 @cindex python pagination
21783 At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
21784 @code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
21785 A Python program which outputs to one of these streams may have its
21786 output interrupted by the user (@pxref{Screen Size}). In this
21787 situation, a Python @code{KeyboardInterrupt} exception is thrown.
21788
21789 @menu
21790 * Basic Python:: Basic Python Functions.
21791 * Exception Handling:: How Python exceptions are translated.
21792 * Values From Inferior:: Python representation of values.
21793 * Types In Python:: Python representation of types.
21794 * Pretty Printing API:: Pretty-printing values.
21795 * Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
21796 * Writing a Pretty-Printer:: Writing a Pretty-Printer.
21797 * Inferiors In Python:: Python representation of inferiors (processes)
21798 * Events In Python:: Listening for events from @value{GDBN}.
21799 * Threads In Python:: Accessing inferior threads from Python.
21800 * Commands In Python:: Implementing new commands in Python.
21801 * Parameters In Python:: Adding new @value{GDBN} parameters.
21802 * Functions In Python:: Writing new convenience functions.
21803 * Progspaces In Python:: Program spaces.
21804 * Objfiles In Python:: Object files.
21805 * Frames In Python:: Accessing inferior stack frames from Python.
21806 * Blocks In Python:: Accessing frame blocks from Python.
21807 * Symbols In Python:: Python representation of symbols.
21808 * Symbol Tables In Python:: Python representation of symbol tables.
21809 * Lazy Strings In Python:: Python representation of lazy strings.
21810 * Breakpoints In Python:: Manipulating breakpoints using Python.
21811 * Finish Breakpoints in Python:: Setting Breakpoints on function return
21812 using Python.
21813 @end menu
21814
21815 @node Basic Python
21816 @subsubsection Basic Python
21817
21818 @cindex python functions
21819 @cindex python module
21820 @cindex gdb module
21821 @value{GDBN} introduces a new Python module, named @code{gdb}. All
21822 methods and classes added by @value{GDBN} are placed in this module.
21823 @value{GDBN} automatically @code{import}s the @code{gdb} module for
21824 use in all scripts evaluated by the @code{python} command.
21825
21826 @findex gdb.PYTHONDIR
21827 @defvar gdb.PYTHONDIR
21828 A string containing the python directory (@pxref{Python}).
21829 @end defvar
21830
21831 @findex gdb.execute
21832 @defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
21833 Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
21834 If a GDB exception happens while @var{command} runs, it is
21835 translated as described in @ref{Exception Handling,,Exception Handling}.
21836
21837 @var{from_tty} specifies whether @value{GDBN} ought to consider this
21838 command as having originated from the user invoking it interactively.
21839 It must be a boolean value. If omitted, it defaults to @code{False}.
21840
21841 By default, any output produced by @var{command} is sent to
21842 @value{GDBN}'s standard output. If the @var{to_string} parameter is
21843 @code{True}, then output will be collected by @code{gdb.execute} and
21844 returned as a string. The default is @code{False}, in which case the
21845 return value is @code{None}. If @var{to_string} is @code{True}, the
21846 @value{GDBN} virtual terminal will be temporarily set to unlimited width
21847 and height, and its pagination will be disabled; @pxref{Screen Size}.
21848 @end defun
21849
21850 @findex gdb.breakpoints
21851 @defun gdb.breakpoints ()
21852 Return a sequence holding all of @value{GDBN}'s breakpoints.
21853 @xref{Breakpoints In Python}, for more information.
21854 @end defun
21855
21856 @findex gdb.parameter
21857 @defun gdb.parameter (parameter)
21858 Return the value of a @value{GDBN} parameter. @var{parameter} is a
21859 string naming the parameter to look up; @var{parameter} may contain
21860 spaces if the parameter has a multi-part name. For example,
21861 @samp{print object} is a valid parameter name.
21862
21863 If the named parameter does not exist, this function throws a
21864 @code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
21865 parameter's value is converted to a Python value of the appropriate
21866 type, and returned.
21867 @end defun
21868
21869 @findex gdb.history
21870 @defun gdb.history (number)
21871 Return a value from @value{GDBN}'s value history (@pxref{Value
21872 History}). @var{number} indicates which history element to return.
21873 If @var{number} is negative, then @value{GDBN} will take its absolute value
21874 and count backward from the last element (i.e., the most recent element) to
21875 find the value to return. If @var{number} is zero, then @value{GDBN} will
21876 return the most recent element. If the element specified by @var{number}
21877 doesn't exist in the value history, a @code{gdb.error} exception will be
21878 raised.
21879
21880 If no exception is raised, the return value is always an instance of
21881 @code{gdb.Value} (@pxref{Values From Inferior}).
21882 @end defun
21883
21884 @findex gdb.parse_and_eval
21885 @defun gdb.parse_and_eval (expression)
21886 Parse @var{expression} as an expression in the current language,
21887 evaluate it, and return the result as a @code{gdb.Value}.
21888 @var{expression} must be a string.
21889
21890 This function can be useful when implementing a new command
21891 (@pxref{Commands In Python}), as it provides a way to parse the
21892 command's argument as an expression. It is also useful simply to
21893 compute values, for example, it is the only way to get the value of a
21894 convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
21895 @end defun
21896
21897 @findex gdb.post_event
21898 @defun gdb.post_event (event)
21899 Put @var{event}, a callable object taking no arguments, into
21900 @value{GDBN}'s internal event queue. This callable will be invoked at
21901 some later point, during @value{GDBN}'s event processing. Events
21902 posted using @code{post_event} will be run in the order in which they
21903 were posted; however, there is no way to know when they will be
21904 processed relative to other events inside @value{GDBN}.
21905
21906 @value{GDBN} is not thread-safe. If your Python program uses multiple
21907 threads, you must be careful to only call @value{GDBN}-specific
21908 functions in the main @value{GDBN} thread. @code{post_event} ensures
21909 this. For example:
21910
21911 @smallexample
21912 (@value{GDBP}) python
21913 >import threading
21914 >
21915 >class Writer():
21916 > def __init__(self, message):
21917 > self.message = message;
21918 > def __call__(self):
21919 > gdb.write(self.message)
21920 >
21921 >class MyThread1 (threading.Thread):
21922 > def run (self):
21923 > gdb.post_event(Writer("Hello "))
21924 >
21925 >class MyThread2 (threading.Thread):
21926 > def run (self):
21927 > gdb.post_event(Writer("World\n"))
21928 >
21929 >MyThread1().start()
21930 >MyThread2().start()
21931 >end
21932 (@value{GDBP}) Hello World
21933 @end smallexample
21934 @end defun
21935
21936 @findex gdb.write
21937 @defun gdb.write (string @r{[}, stream{]})
21938 Print a string to @value{GDBN}'s paginated output stream. The
21939 optional @var{stream} determines the stream to print to. The default
21940 stream is @value{GDBN}'s standard output stream. Possible stream
21941 values are:
21942
21943 @table @code
21944 @findex STDOUT
21945 @findex gdb.STDOUT
21946 @item gdb.STDOUT
21947 @value{GDBN}'s standard output stream.
21948
21949 @findex STDERR
21950 @findex gdb.STDERR
21951 @item gdb.STDERR
21952 @value{GDBN}'s standard error stream.
21953
21954 @findex STDLOG
21955 @findex gdb.STDLOG
21956 @item gdb.STDLOG
21957 @value{GDBN}'s log stream (@pxref{Logging Output}).
21958 @end table
21959
21960 Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
21961 call this function and will automatically direct the output to the
21962 relevant stream.
21963 @end defun
21964
21965 @findex gdb.flush
21966 @defun gdb.flush ()
21967 Flush the buffer of a @value{GDBN} paginated stream so that the
21968 contents are displayed immediately. @value{GDBN} will flush the
21969 contents of a stream automatically when it encounters a newline in the
21970 buffer. The optional @var{stream} determines the stream to flush. The
21971 default stream is @value{GDBN}'s standard output stream. Possible
21972 stream values are:
21973
21974 @table @code
21975 @findex STDOUT
21976 @findex gdb.STDOUT
21977 @item gdb.STDOUT
21978 @value{GDBN}'s standard output stream.
21979
21980 @findex STDERR
21981 @findex gdb.STDERR
21982 @item gdb.STDERR
21983 @value{GDBN}'s standard error stream.
21984
21985 @findex STDLOG
21986 @findex gdb.STDLOG
21987 @item gdb.STDLOG
21988 @value{GDBN}'s log stream (@pxref{Logging Output}).
21989
21990 @end table
21991
21992 Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
21993 call this function for the relevant stream.
21994 @end defun
21995
21996 @findex gdb.target_charset
21997 @defun gdb.target_charset ()
21998 Return the name of the current target character set (@pxref{Character
21999 Sets}). This differs from @code{gdb.parameter('target-charset')} in
22000 that @samp{auto} is never returned.
22001 @end defun
22002
22003 @findex gdb.target_wide_charset
22004 @defun gdb.target_wide_charset ()
22005 Return the name of the current target wide character set
22006 (@pxref{Character Sets}). This differs from
22007 @code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
22008 never returned.
22009 @end defun
22010
22011 @findex gdb.solib_name
22012 @defun gdb.solib_name (address)
22013 Return the name of the shared library holding the given @var{address}
22014 as a string, or @code{None}.
22015 @end defun
22016
22017 @findex gdb.decode_line
22018 @defun gdb.decode_line @r{[}expression@r{]}
22019 Return locations of the line specified by @var{expression}, or of the
22020 current line if no argument was given. This function returns a Python
22021 tuple containing two elements. The first element contains a string
22022 holding any unparsed section of @var{expression} (or @code{None} if
22023 the expression has been fully parsed). The second element contains
22024 either @code{None} or another tuple that contains all the locations
22025 that match the expression represented as @code{gdb.Symtab_and_line}
22026 objects (@pxref{Symbol Tables In Python}). If @var{expression} is
22027 provided, it is decoded the way that @value{GDBN}'s inbuilt
22028 @code{break} or @code{edit} commands do (@pxref{Specify Location}).
22029 @end defun
22030
22031 @defun gdb.prompt_hook (current_prompt)
22032 @anchor{prompt_hook}
22033
22034 If @var{prompt_hook} is callable, @value{GDBN} will call the method
22035 assigned to this operation before a prompt is displayed by
22036 @value{GDBN}.
22037
22038 The parameter @code{current_prompt} contains the current @value{GDBN}
22039 prompt. This method must return a Python string, or @code{None}. If
22040 a string is returned, the @value{GDBN} prompt will be set to that
22041 string. If @code{None} is returned, @value{GDBN} will continue to use
22042 the current prompt.
22043
22044 Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
22045 such as those used by readline for command input, and annotation
22046 related prompts are prohibited from being changed.
22047 @end defun
22048
22049 @node Exception Handling
22050 @subsubsection Exception Handling
22051 @cindex python exceptions
22052 @cindex exceptions, python
22053
22054 When executing the @code{python} command, Python exceptions
22055 uncaught within the Python code are translated to calls to
22056 @value{GDBN} error-reporting mechanism. If the command that called
22057 @code{python} does not handle the error, @value{GDBN} will
22058 terminate it and print an error message containing the Python
22059 exception name, the associated value, and the Python call stack
22060 backtrace at the point where the exception was raised. Example:
22061
22062 @smallexample
22063 (@value{GDBP}) python print foo
22064 Traceback (most recent call last):
22065 File "<string>", line 1, in <module>
22066 NameError: name 'foo' is not defined
22067 @end smallexample
22068
22069 @value{GDBN} errors that happen in @value{GDBN} commands invoked by
22070 Python code are converted to Python exceptions. The type of the
22071 Python exception depends on the error.
22072
22073 @ftable @code
22074 @item gdb.error
22075 This is the base class for most exceptions generated by @value{GDBN}.
22076 It is derived from @code{RuntimeError}, for compatibility with earlier
22077 versions of @value{GDBN}.
22078
22079 If an error occurring in @value{GDBN} does not fit into some more
22080 specific category, then the generated exception will have this type.
22081
22082 @item gdb.MemoryError
22083 This is a subclass of @code{gdb.error} which is thrown when an
22084 operation tried to access invalid memory in the inferior.
22085
22086 @item KeyboardInterrupt
22087 User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
22088 prompt) is translated to a Python @code{KeyboardInterrupt} exception.
22089 @end ftable
22090
22091 In all cases, your exception handler will see the @value{GDBN} error
22092 message as its value and the Python call stack backtrace at the Python
22093 statement closest to where the @value{GDBN} error occured as the
22094 traceback.
22095
22096 @findex gdb.GdbError
22097 When implementing @value{GDBN} commands in Python via @code{gdb.Command},
22098 it is useful to be able to throw an exception that doesn't cause a
22099 traceback to be printed. For example, the user may have invoked the
22100 command incorrectly. Use the @code{gdb.GdbError} exception
22101 to handle this case. Example:
22102
22103 @smallexample
22104 (gdb) python
22105 >class HelloWorld (gdb.Command):
22106 > """Greet the whole world."""
22107 > def __init__ (self):
22108 > super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
22109 > def invoke (self, args, from_tty):
22110 > argv = gdb.string_to_argv (args)
22111 > if len (argv) != 0:
22112 > raise gdb.GdbError ("hello-world takes no arguments")
22113 > print "Hello, World!"
22114 >HelloWorld ()
22115 >end
22116 (gdb) hello-world 42
22117 hello-world takes no arguments
22118 @end smallexample
22119
22120 @node Values From Inferior
22121 @subsubsection Values From Inferior
22122 @cindex values from inferior, with Python
22123 @cindex python, working with values from inferior
22124
22125 @cindex @code{gdb.Value}
22126 @value{GDBN} provides values it obtains from the inferior program in
22127 an object of type @code{gdb.Value}. @value{GDBN} uses this object
22128 for its internal bookkeeping of the inferior's values, and for
22129 fetching values when necessary.
22130
22131 Inferior values that are simple scalars can be used directly in
22132 Python expressions that are valid for the value's data type. Here's
22133 an example for an integer or floating-point value @code{some_val}:
22134
22135 @smallexample
22136 bar = some_val + 2
22137 @end smallexample
22138
22139 @noindent
22140 As result of this, @code{bar} will also be a @code{gdb.Value} object
22141 whose values are of the same type as those of @code{some_val}.
22142
22143 Inferior values that are structures or instances of some class can
22144 be accessed using the Python @dfn{dictionary syntax}. For example, if
22145 @code{some_val} is a @code{gdb.Value} instance holding a structure, you
22146 can access its @code{foo} element with:
22147
22148 @smallexample
22149 bar = some_val['foo']
22150 @end smallexample
22151
22152 Again, @code{bar} will also be a @code{gdb.Value} object.
22153
22154 A @code{gdb.Value} that represents a function can be executed via
22155 inferior function call. Any arguments provided to the call must match
22156 the function's prototype, and must be provided in the order specified
22157 by that prototype.
22158
22159 For example, @code{some_val} is a @code{gdb.Value} instance
22160 representing a function that takes two integers as arguments. To
22161 execute this function, call it like so:
22162
22163 @smallexample
22164 result = some_val (10,20)
22165 @end smallexample
22166
22167 Any values returned from a function call will be stored as a
22168 @code{gdb.Value}.
22169
22170 The following attributes are provided:
22171
22172 @table @code
22173 @defvar Value.address
22174 If this object is addressable, this read-only attribute holds a
22175 @code{gdb.Value} object representing the address. Otherwise,
22176 this attribute holds @code{None}.
22177 @end defvar
22178
22179 @cindex optimized out value in Python
22180 @defvar Value.is_optimized_out
22181 This read-only boolean attribute is true if the compiler optimized out
22182 this value, thus it is not available for fetching from the inferior.
22183 @end defvar
22184
22185 @defvar Value.type
22186 The type of this @code{gdb.Value}. The value of this attribute is a
22187 @code{gdb.Type} object (@pxref{Types In Python}).
22188 @end defvar
22189
22190 @defvar Value.dynamic_type
22191 The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time
22192 type information (@acronym{RTTI}) to determine the dynamic type of the
22193 value. If this value is of class type, it will return the class in
22194 which the value is embedded, if any. If this value is of pointer or
22195 reference to a class type, it will compute the dynamic type of the
22196 referenced object, and return a pointer or reference to that type,
22197 respectively. In all other cases, it will return the value's static
22198 type.
22199
22200 Note that this feature will only work when debugging a C@t{++} program
22201 that includes @acronym{RTTI} for the object in question. Otherwise,
22202 it will just return the static type of the value as in @kbd{ptype foo}
22203 (@pxref{Symbols, ptype}).
22204 @end defvar
22205
22206 @defvar Value.is_lazy
22207 The value of this read-only boolean attribute is @code{True} if this
22208 @code{gdb.Value} has not yet been fetched from the inferior.
22209 @value{GDBN} does not fetch values until necessary, for efficiency.
22210 For example:
22211
22212 @smallexample
22213 myval = gdb.parse_and_eval ('somevar')
22214 @end smallexample
22215
22216 The value of @code{somevar} is not fetched at this time. It will be
22217 fetched when the value is needed, or when the @code{fetch_lazy}
22218 method is invoked.
22219 @end defvar
22220 @end table
22221
22222 The following methods are provided:
22223
22224 @table @code
22225 @defun Value.__init__ (@var{val})
22226 Many Python values can be converted directly to a @code{gdb.Value} via
22227 this object initializer. Specifically:
22228
22229 @table @asis
22230 @item Python boolean
22231 A Python boolean is converted to the boolean type from the current
22232 language.
22233
22234 @item Python integer
22235 A Python integer is converted to the C @code{long} type for the
22236 current architecture.
22237
22238 @item Python long
22239 A Python long is converted to the C @code{long long} type for the
22240 current architecture.
22241
22242 @item Python float
22243 A Python float is converted to the C @code{double} type for the
22244 current architecture.
22245
22246 @item Python string
22247 A Python string is converted to a target string, using the current
22248 target encoding.
22249
22250 @item @code{gdb.Value}
22251 If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
22252
22253 @item @code{gdb.LazyString}
22254 If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
22255 Python}), then the lazy string's @code{value} method is called, and
22256 its result is used.
22257 @end table
22258 @end defun
22259
22260 @defun Value.cast (type)
22261 Return a new instance of @code{gdb.Value} that is the result of
22262 casting this instance to the type described by @var{type}, which must
22263 be a @code{gdb.Type} object. If the cast cannot be performed for some
22264 reason, this method throws an exception.
22265 @end defun
22266
22267 @defun Value.dereference ()
22268 For pointer data types, this method returns a new @code{gdb.Value} object
22269 whose contents is the object pointed to by the pointer. For example, if
22270 @code{foo} is a C pointer to an @code{int}, declared in your C program as
22271
22272 @smallexample
22273 int *foo;
22274 @end smallexample
22275
22276 @noindent
22277 then you can use the corresponding @code{gdb.Value} to access what
22278 @code{foo} points to like this:
22279
22280 @smallexample
22281 bar = foo.dereference ()
22282 @end smallexample
22283
22284 The result @code{bar} will be a @code{gdb.Value} object holding the
22285 value pointed to by @code{foo}.
22286
22287 A similar function @code{Value.referenced_value} exists which also
22288 returns @code{gdb.Value} objects corresonding to the values pointed to
22289 by pointer values (and additionally, values referenced by reference
22290 values). However, the behavior of @code{Value.dereference}
22291 differs from @code{Value.referenced_value} by the fact that the
22292 behavior of @code{Value.dereference} is identical to applying the C
22293 unary operator @code{*} on a given value. For example, consider a
22294 reference to a pointer @code{ptrref}, declared in your C@t{++} program
22295 as
22296
22297 @smallexample
22298 typedef int *intptr;
22299 ...
22300 int val = 10;
22301 intptr ptr = &val;
22302 intptr &ptrref = ptr;
22303 @end smallexample
22304
22305 Though @code{ptrref} is a reference value, one can apply the method
22306 @code{Value.dereference} to the @code{gdb.Value} object corresponding
22307 to it and obtain a @code{gdb.Value} which is identical to that
22308 corresponding to @code{val}. However, if you apply the method
22309 @code{Value.referenced_value}, the result would be a @code{gdb.Value}
22310 object identical to that corresponding to @code{ptr}.
22311
22312 @smallexample
22313 py_ptrref = gdb.parse_and_eval ("ptrref")
22314 py_val = py_ptrref.dereference ()
22315 py_ptr = py_ptrref.referenced_value ()
22316 @end smallexample
22317
22318 The @code{gdb.Value} object @code{py_val} is identical to that
22319 corresponding to @code{val}, and @code{py_ptr} is identical to that
22320 corresponding to @code{ptr}. In general, @code{Value.dereference} can
22321 be applied whenever the C unary operator @code{*} can be applied
22322 to the corresponding C value. For those cases where applying both
22323 @code{Value.dereference} and @code{Value.referenced_value} is allowed,
22324 the results obtained need not be identical (as we have seen in the above
22325 example). The results are however identical when applied on
22326 @code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
22327 objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
22328 @end defun
22329
22330 @defun Value.referenced_value ()
22331 For pointer or reference data types, this method returns a new
22332 @code{gdb.Value} object corresponding to the value referenced by the
22333 pointer/reference value. For pointer data types,
22334 @code{Value.dereference} and @code{Value.referenced_value} produce
22335 identical results. The difference between these methods is that
22336 @code{Value.dereference} cannot get the values referenced by reference
22337 values. For example, consider a reference to an @code{int}, declared
22338 in your C@t{++} program as
22339
22340 @smallexample
22341 int val = 10;
22342 int &ref = val;
22343 @end smallexample
22344
22345 @noindent
22346 then applying @code{Value.dereference} to the @code{gdb.Value} object
22347 corresponding to @code{ref} will result in an error, while applying
22348 @code{Value.referenced_value} will result in a @code{gdb.Value} object
22349 identical to that corresponding to @code{val}.
22350
22351 @smallexample
22352 py_ref = gdb.parse_and_eval ("ref")
22353 er_ref = py_ref.dereference () # Results in error
22354 py_val = py_ref.referenced_value () # Returns the referenced value
22355 @end smallexample
22356
22357 The @code{gdb.Value} object @code{py_val} is identical to that
22358 corresponding to @code{val}.
22359 @end defun
22360
22361 @defun Value.dynamic_cast (type)
22362 Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
22363 operator were used. Consult a C@t{++} reference for details.
22364 @end defun
22365
22366 @defun Value.reinterpret_cast (type)
22367 Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
22368 operator were used. Consult a C@t{++} reference for details.
22369 @end defun
22370
22371 @defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
22372 If this @code{gdb.Value} represents a string, then this method
22373 converts the contents to a Python string. Otherwise, this method will
22374 throw an exception.
22375
22376 Strings are recognized in a language-specific way; whether a given
22377 @code{gdb.Value} represents a string is determined by the current
22378 language.
22379
22380 For C-like languages, a value is a string if it is a pointer to or an
22381 array of characters or ints. The string is assumed to be terminated
22382 by a zero of the appropriate width. However if the optional length
22383 argument is given, the string will be converted to that given length,
22384 ignoring any embedded zeros that the string may contain.
22385
22386 If the optional @var{encoding} argument is given, it must be a string
22387 naming the encoding of the string in the @code{gdb.Value}, such as
22388 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
22389 the same encodings as the corresponding argument to Python's
22390 @code{string.decode} method, and the Python codec machinery will be used
22391 to convert the string. If @var{encoding} is not given, or if
22392 @var{encoding} is the empty string, then either the @code{target-charset}
22393 (@pxref{Character Sets}) will be used, or a language-specific encoding
22394 will be used, if the current language is able to supply one.
22395
22396 The optional @var{errors} argument is the same as the corresponding
22397 argument to Python's @code{string.decode} method.
22398
22399 If the optional @var{length} argument is given, the string will be
22400 fetched and converted to the given length.
22401 @end defun
22402
22403 @defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
22404 If this @code{gdb.Value} represents a string, then this method
22405 converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
22406 In Python}). Otherwise, this method will throw an exception.
22407
22408 If the optional @var{encoding} argument is given, it must be a string
22409 naming the encoding of the @code{gdb.LazyString}. Some examples are:
22410 @samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
22411 @var{encoding} argument is an encoding that @value{GDBN} does
22412 recognize, @value{GDBN} will raise an error.
22413
22414 When a lazy string is printed, the @value{GDBN} encoding machinery is
22415 used to convert the string during printing. If the optional
22416 @var{encoding} argument is not provided, or is an empty string,
22417 @value{GDBN} will automatically select the encoding most suitable for
22418 the string type. For further information on encoding in @value{GDBN}
22419 please see @ref{Character Sets}.
22420
22421 If the optional @var{length} argument is given, the string will be
22422 fetched and encoded to the length of characters specified. If
22423 the @var{length} argument is not provided, the string will be fetched
22424 and encoded until a null of appropriate width is found.
22425 @end defun
22426
22427 @defun Value.fetch_lazy ()
22428 If the @code{gdb.Value} object is currently a lazy value
22429 (@code{gdb.Value.is_lazy} is @code{True}), then the value is
22430 fetched from the inferior. Any errors that occur in the process
22431 will produce a Python exception.
22432
22433 If the @code{gdb.Value} object is not a lazy value, this method
22434 has no effect.
22435
22436 This method does not return a value.
22437 @end defun
22438
22439 @end table
22440
22441 @node Types In Python
22442 @subsubsection Types In Python
22443 @cindex types in Python
22444 @cindex Python, working with types
22445
22446 @tindex gdb.Type
22447 @value{GDBN} represents types from the inferior using the class
22448 @code{gdb.Type}.
22449
22450 The following type-related functions are available in the @code{gdb}
22451 module:
22452
22453 @findex gdb.lookup_type
22454 @defun gdb.lookup_type (name @r{[}, block@r{]})
22455 This function looks up a type by name. @var{name} is the name of the
22456 type to look up. It must be a string.
22457
22458 If @var{block} is given, then @var{name} is looked up in that scope.
22459 Otherwise, it is searched for globally.
22460
22461 Ordinarily, this function will return an instance of @code{gdb.Type}.
22462 If the named type cannot be found, it will throw an exception.
22463 @end defun
22464
22465 If the type is a structure or class type, or an enum type, the fields
22466 of that type can be accessed using the Python @dfn{dictionary syntax}.
22467 For example, if @code{some_type} is a @code{gdb.Type} instance holding
22468 a structure type, you can access its @code{foo} field with:
22469
22470 @smallexample
22471 bar = some_type['foo']
22472 @end smallexample
22473
22474 @code{bar} will be a @code{gdb.Field} object; see below under the
22475 description of the @code{Type.fields} method for a description of the
22476 @code{gdb.Field} class.
22477
22478 An instance of @code{Type} has the following attributes:
22479
22480 @table @code
22481 @defvar Type.code
22482 The type code for this type. The type code will be one of the
22483 @code{TYPE_CODE_} constants defined below.
22484 @end defvar
22485
22486 @defvar Type.sizeof
22487 The size of this type, in target @code{char} units. Usually, a
22488 target's @code{char} type will be an 8-bit byte. However, on some
22489 unusual platforms, this type may have a different size.
22490 @end defvar
22491
22492 @defvar Type.tag
22493 The tag name for this type. The tag name is the name after
22494 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
22495 languages have this concept. If this type has no tag name, then
22496 @code{None} is returned.
22497 @end defvar
22498 @end table
22499
22500 The following methods are provided:
22501
22502 @table @code
22503 @defun Type.fields ()
22504 For structure and union types, this method returns the fields. Range
22505 types have two fields, the minimum and maximum values. Enum types
22506 have one field per enum constant. Function and method types have one
22507 field per parameter. The base types of C@t{++} classes are also
22508 represented as fields. If the type has no fields, or does not fit
22509 into one of these categories, an empty sequence will be returned.
22510
22511 Each field is a @code{gdb.Field} object, with some pre-defined attributes:
22512 @table @code
22513 @item bitpos
22514 This attribute is not available for @code{static} fields (as in
22515 C@t{++} or Java). For non-@code{static} fields, the value is the bit
22516 position of the field. For @code{enum} fields, the value is the
22517 enumeration member's integer representation.
22518
22519 @item name
22520 The name of the field, or @code{None} for anonymous fields.
22521
22522 @item artificial
22523 This is @code{True} if the field is artificial, usually meaning that
22524 it was provided by the compiler and not the user. This attribute is
22525 always provided, and is @code{False} if the field is not artificial.
22526
22527 @item is_base_class
22528 This is @code{True} if the field represents a base class of a C@t{++}
22529 structure. This attribute is always provided, and is @code{False}
22530 if the field is not a base class of the type that is the argument of
22531 @code{fields}, or if that type was not a C@t{++} class.
22532
22533 @item bitsize
22534 If the field is packed, or is a bitfield, then this will have a
22535 non-zero value, which is the size of the field in bits. Otherwise,
22536 this will be zero; in this case the field's size is given by its type.
22537
22538 @item type
22539 The type of the field. This is usually an instance of @code{Type},
22540 but it can be @code{None} in some situations.
22541 @end table
22542 @end defun
22543
22544 @defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
22545 Return a new @code{gdb.Type} object which represents an array of this
22546 type. If one argument is given, it is the inclusive upper bound of
22547 the array; in this case the lower bound is zero. If two arguments are
22548 given, the first argument is the lower bound of the array, and the
22549 second argument is the upper bound of the array. An array's length
22550 must not be negative, but the bounds can be.
22551 @end defun
22552
22553 @defun Type.const ()
22554 Return a new @code{gdb.Type} object which represents a
22555 @code{const}-qualified variant of this type.
22556 @end defun
22557
22558 @defun Type.volatile ()
22559 Return a new @code{gdb.Type} object which represents a
22560 @code{volatile}-qualified variant of this type.
22561 @end defun
22562
22563 @defun Type.unqualified ()
22564 Return a new @code{gdb.Type} object which represents an unqualified
22565 variant of this type. That is, the result is neither @code{const} nor
22566 @code{volatile}.
22567 @end defun
22568
22569 @defun Type.range ()
22570 Return a Python @code{Tuple} object that contains two elements: the
22571 low bound of the argument type and the high bound of that type. If
22572 the type does not have a range, @value{GDBN} will raise a
22573 @code{gdb.error} exception (@pxref{Exception Handling}).
22574 @end defun
22575
22576 @defun Type.reference ()
22577 Return a new @code{gdb.Type} object which represents a reference to this
22578 type.
22579 @end defun
22580
22581 @defun Type.pointer ()
22582 Return a new @code{gdb.Type} object which represents a pointer to this
22583 type.
22584 @end defun
22585
22586 @defun Type.strip_typedefs ()
22587 Return a new @code{gdb.Type} that represents the real type,
22588 after removing all layers of typedefs.
22589 @end defun
22590
22591 @defun Type.target ()
22592 Return a new @code{gdb.Type} object which represents the target type
22593 of this type.
22594
22595 For a pointer type, the target type is the type of the pointed-to
22596 object. For an array type (meaning C-like arrays), the target type is
22597 the type of the elements of the array. For a function or method type,
22598 the target type is the type of the return value. For a complex type,
22599 the target type is the type of the elements. For a typedef, the
22600 target type is the aliased type.
22601
22602 If the type does not have a target, this method will throw an
22603 exception.
22604 @end defun
22605
22606 @defun Type.template_argument (n @r{[}, block@r{]})
22607 If this @code{gdb.Type} is an instantiation of a template, this will
22608 return a new @code{gdb.Type} which represents the type of the
22609 @var{n}th template argument.
22610
22611 If this @code{gdb.Type} is not a template type, this will throw an
22612 exception. Ordinarily, only C@t{++} code will have template types.
22613
22614 If @var{block} is given, then @var{name} is looked up in that scope.
22615 Otherwise, it is searched for globally.
22616 @end defun
22617 @end table
22618
22619
22620 Each type has a code, which indicates what category this type falls
22621 into. The available type categories are represented by constants
22622 defined in the @code{gdb} module:
22623
22624 @table @code
22625 @findex TYPE_CODE_PTR
22626 @findex gdb.TYPE_CODE_PTR
22627 @item gdb.TYPE_CODE_PTR
22628 The type is a pointer.
22629
22630 @findex TYPE_CODE_ARRAY
22631 @findex gdb.TYPE_CODE_ARRAY
22632 @item gdb.TYPE_CODE_ARRAY
22633 The type is an array.
22634
22635 @findex TYPE_CODE_STRUCT
22636 @findex gdb.TYPE_CODE_STRUCT
22637 @item gdb.TYPE_CODE_STRUCT
22638 The type is a structure.
22639
22640 @findex TYPE_CODE_UNION
22641 @findex gdb.TYPE_CODE_UNION
22642 @item gdb.TYPE_CODE_UNION
22643 The type is a union.
22644
22645 @findex TYPE_CODE_ENUM
22646 @findex gdb.TYPE_CODE_ENUM
22647 @item gdb.TYPE_CODE_ENUM
22648 The type is an enum.
22649
22650 @findex TYPE_CODE_FLAGS
22651 @findex gdb.TYPE_CODE_FLAGS
22652 @item gdb.TYPE_CODE_FLAGS
22653 A bit flags type, used for things such as status registers.
22654
22655 @findex TYPE_CODE_FUNC
22656 @findex gdb.TYPE_CODE_FUNC
22657 @item gdb.TYPE_CODE_FUNC
22658 The type is a function.
22659
22660 @findex TYPE_CODE_INT
22661 @findex gdb.TYPE_CODE_INT
22662 @item gdb.TYPE_CODE_INT
22663 The type is an integer type.
22664
22665 @findex TYPE_CODE_FLT
22666 @findex gdb.TYPE_CODE_FLT
22667 @item gdb.TYPE_CODE_FLT
22668 A floating point type.
22669
22670 @findex TYPE_CODE_VOID
22671 @findex gdb.TYPE_CODE_VOID
22672 @item gdb.TYPE_CODE_VOID
22673 The special type @code{void}.
22674
22675 @findex TYPE_CODE_SET
22676 @findex gdb.TYPE_CODE_SET
22677 @item gdb.TYPE_CODE_SET
22678 A Pascal set type.
22679
22680 @findex TYPE_CODE_RANGE
22681 @findex gdb.TYPE_CODE_RANGE
22682 @item gdb.TYPE_CODE_RANGE
22683 A range type, that is, an integer type with bounds.
22684
22685 @findex TYPE_CODE_STRING
22686 @findex gdb.TYPE_CODE_STRING
22687 @item gdb.TYPE_CODE_STRING
22688 A string type. Note that this is only used for certain languages with
22689 language-defined string types; C strings are not represented this way.
22690
22691 @findex TYPE_CODE_BITSTRING
22692 @findex gdb.TYPE_CODE_BITSTRING
22693 @item gdb.TYPE_CODE_BITSTRING
22694 A string of bits.
22695
22696 @findex TYPE_CODE_ERROR
22697 @findex gdb.TYPE_CODE_ERROR
22698 @item gdb.TYPE_CODE_ERROR
22699 An unknown or erroneous type.
22700
22701 @findex TYPE_CODE_METHOD
22702 @findex gdb.TYPE_CODE_METHOD
22703 @item gdb.TYPE_CODE_METHOD
22704 A method type, as found in C@t{++} or Java.
22705
22706 @findex TYPE_CODE_METHODPTR
22707 @findex gdb.TYPE_CODE_METHODPTR
22708 @item gdb.TYPE_CODE_METHODPTR
22709 A pointer-to-member-function.
22710
22711 @findex TYPE_CODE_MEMBERPTR
22712 @findex gdb.TYPE_CODE_MEMBERPTR
22713 @item gdb.TYPE_CODE_MEMBERPTR
22714 A pointer-to-member.
22715
22716 @findex TYPE_CODE_REF
22717 @findex gdb.TYPE_CODE_REF
22718 @item gdb.TYPE_CODE_REF
22719 A reference type.
22720
22721 @findex TYPE_CODE_CHAR
22722 @findex gdb.TYPE_CODE_CHAR
22723 @item gdb.TYPE_CODE_CHAR
22724 A character type.
22725
22726 @findex TYPE_CODE_BOOL
22727 @findex gdb.TYPE_CODE_BOOL
22728 @item gdb.TYPE_CODE_BOOL
22729 A boolean type.
22730
22731 @findex TYPE_CODE_COMPLEX
22732 @findex gdb.TYPE_CODE_COMPLEX
22733 @item gdb.TYPE_CODE_COMPLEX
22734 A complex float type.
22735
22736 @findex TYPE_CODE_TYPEDEF
22737 @findex gdb.TYPE_CODE_TYPEDEF
22738 @item gdb.TYPE_CODE_TYPEDEF
22739 A typedef to some other type.
22740
22741 @findex TYPE_CODE_NAMESPACE
22742 @findex gdb.TYPE_CODE_NAMESPACE
22743 @item gdb.TYPE_CODE_NAMESPACE
22744 A C@t{++} namespace.
22745
22746 @findex TYPE_CODE_DECFLOAT
22747 @findex gdb.TYPE_CODE_DECFLOAT
22748 @item gdb.TYPE_CODE_DECFLOAT
22749 A decimal floating point type.
22750
22751 @findex TYPE_CODE_INTERNAL_FUNCTION
22752 @findex gdb.TYPE_CODE_INTERNAL_FUNCTION
22753 @item gdb.TYPE_CODE_INTERNAL_FUNCTION
22754 A function internal to @value{GDBN}. This is the type used to represent
22755 convenience functions.
22756 @end table
22757
22758 Further support for types is provided in the @code{gdb.types}
22759 Python module (@pxref{gdb.types}).
22760
22761 @node Pretty Printing API
22762 @subsubsection Pretty Printing API
22763
22764 An example output is provided (@pxref{Pretty Printing}).
22765
22766 A pretty-printer is just an object that holds a value and implements a
22767 specific interface, defined here.
22768
22769 @defun pretty_printer.children (self)
22770 @value{GDBN} will call this method on a pretty-printer to compute the
22771 children of the pretty-printer's value.
22772
22773 This method must return an object conforming to the Python iterator
22774 protocol. Each item returned by the iterator must be a tuple holding
22775 two elements. The first element is the ``name'' of the child; the
22776 second element is the child's value. The value can be any Python
22777 object which is convertible to a @value{GDBN} value.
22778
22779 This method is optional. If it does not exist, @value{GDBN} will act
22780 as though the value has no children.
22781 @end defun
22782
22783 @defun pretty_printer.display_hint (self)
22784 The CLI may call this method and use its result to change the
22785 formatting of a value. The result will also be supplied to an MI
22786 consumer as a @samp{displayhint} attribute of the variable being
22787 printed.
22788
22789 This method is optional. If it does exist, this method must return a
22790 string.
22791
22792 Some display hints are predefined by @value{GDBN}:
22793
22794 @table @samp
22795 @item array
22796 Indicate that the object being printed is ``array-like''. The CLI
22797 uses this to respect parameters such as @code{set print elements} and
22798 @code{set print array}.
22799
22800 @item map
22801 Indicate that the object being printed is ``map-like'', and that the
22802 children of this value can be assumed to alternate between keys and
22803 values.
22804
22805 @item string
22806 Indicate that the object being printed is ``string-like''. If the
22807 printer's @code{to_string} method returns a Python string of some
22808 kind, then @value{GDBN} will call its internal language-specific
22809 string-printing function to format the string. For the CLI this means
22810 adding quotation marks, possibly escaping some characters, respecting
22811 @code{set print elements}, and the like.
22812 @end table
22813 @end defun
22814
22815 @defun pretty_printer.to_string (self)
22816 @value{GDBN} will call this method to display the string
22817 representation of the value passed to the object's constructor.
22818
22819 When printing from the CLI, if the @code{to_string} method exists,
22820 then @value{GDBN} will prepend its result to the values returned by
22821 @code{children}. Exactly how this formatting is done is dependent on
22822 the display hint, and may change as more hints are added. Also,
22823 depending on the print settings (@pxref{Print Settings}), the CLI may
22824 print just the result of @code{to_string} in a stack trace, omitting
22825 the result of @code{children}.
22826
22827 If this method returns a string, it is printed verbatim.
22828
22829 Otherwise, if this method returns an instance of @code{gdb.Value},
22830 then @value{GDBN} prints this value. This may result in a call to
22831 another pretty-printer.
22832
22833 If instead the method returns a Python value which is convertible to a
22834 @code{gdb.Value}, then @value{GDBN} performs the conversion and prints
22835 the resulting value. Again, this may result in a call to another
22836 pretty-printer. Python scalars (integers, floats, and booleans) and
22837 strings are convertible to @code{gdb.Value}; other types are not.
22838
22839 Finally, if this method returns @code{None} then no further operations
22840 are peformed in this method and nothing is printed.
22841
22842 If the result is not one of these types, an exception is raised.
22843 @end defun
22844
22845 @value{GDBN} provides a function which can be used to look up the
22846 default pretty-printer for a @code{gdb.Value}:
22847
22848 @findex gdb.default_visualizer
22849 @defun gdb.default_visualizer (value)
22850 This function takes a @code{gdb.Value} object as an argument. If a
22851 pretty-printer for this value exists, then it is returned. If no such
22852 printer exists, then this returns @code{None}.
22853 @end defun
22854
22855 @node Selecting Pretty-Printers
22856 @subsubsection Selecting Pretty-Printers
22857
22858 The Python list @code{gdb.pretty_printers} contains an array of
22859 functions or callable objects that have been registered via addition
22860 as a pretty-printer. Printers in this list are called @code{global}
22861 printers, they're available when debugging all inferiors.
22862 Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
22863 Each @code{gdb.Objfile} also contains a @code{pretty_printers}
22864 attribute.
22865
22866 Each function on these lists is passed a single @code{gdb.Value}
22867 argument and should return a pretty-printer object conforming to the
22868 interface definition above (@pxref{Pretty Printing API}). If a function
22869 cannot create a pretty-printer for the value, it should return
22870 @code{None}.
22871
22872 @value{GDBN} first checks the @code{pretty_printers} attribute of each
22873 @code{gdb.Objfile} in the current program space and iteratively calls
22874 each enabled lookup routine in the list for that @code{gdb.Objfile}
22875 until it receives a pretty-printer object.
22876 If no pretty-printer is found in the objfile lists, @value{GDBN} then
22877 searches the pretty-printer list of the current program space,
22878 calling each enabled function until an object is returned.
22879 After these lists have been exhausted, it tries the global
22880 @code{gdb.pretty_printers} list, again calling each enabled function until an
22881 object is returned.
22882
22883 The order in which the objfiles are searched is not specified. For a
22884 given list, functions are always invoked from the head of the list,
22885 and iterated over sequentially until the end of the list, or a printer
22886 object is returned.
22887
22888 For various reasons a pretty-printer may not work.
22889 For example, the underlying data structure may have changed and
22890 the pretty-printer is out of date.
22891
22892 The consequences of a broken pretty-printer are severe enough that
22893 @value{GDBN} provides support for enabling and disabling individual
22894 printers. For example, if @code{print frame-arguments} is on,
22895 a backtrace can become highly illegible if any argument is printed
22896 with a broken printer.
22897
22898 Pretty-printers are enabled and disabled by attaching an @code{enabled}
22899 attribute to the registered function or callable object. If this attribute
22900 is present and its value is @code{False}, the printer is disabled, otherwise
22901 the printer is enabled.
22902
22903 @node Writing a Pretty-Printer
22904 @subsubsection Writing a Pretty-Printer
22905 @cindex writing a pretty-printer
22906
22907 A pretty-printer consists of two parts: a lookup function to detect
22908 if the type is supported, and the printer itself.
22909
22910 Here is an example showing how a @code{std::string} printer might be
22911 written. @xref{Pretty Printing API}, for details on the API this class
22912 must provide.
22913
22914 @smallexample
22915 class StdStringPrinter(object):
22916 "Print a std::string"
22917
22918 def __init__(self, val):
22919 self.val = val
22920
22921 def to_string(self):
22922 return self.val['_M_dataplus']['_M_p']
22923
22924 def display_hint(self):
22925 return 'string'
22926 @end smallexample
22927
22928 And here is an example showing how a lookup function for the printer
22929 example above might be written.
22930
22931 @smallexample
22932 def str_lookup_function(val):
22933 lookup_tag = val.type.tag
22934 if lookup_tag == None:
22935 return None
22936 regex = re.compile("^std::basic_string<char,.*>$")
22937 if regex.match(lookup_tag):
22938 return StdStringPrinter(val)
22939 return None
22940 @end smallexample
22941
22942 The example lookup function extracts the value's type, and attempts to
22943 match it to a type that it can pretty-print. If it is a type the
22944 printer can pretty-print, it will return a printer object. If not, it
22945 returns @code{None}.
22946
22947 We recommend that you put your core pretty-printers into a Python
22948 package. If your pretty-printers are for use with a library, we
22949 further recommend embedding a version number into the package name.
22950 This practice will enable @value{GDBN} to load multiple versions of
22951 your pretty-printers at the same time, because they will have
22952 different names.
22953
22954 You should write auto-loaded code (@pxref{Auto-loading}) such that it
22955 can be evaluated multiple times without changing its meaning. An
22956 ideal auto-load file will consist solely of @code{import}s of your
22957 printer modules, followed by a call to a register pretty-printers with
22958 the current objfile.
22959
22960 Taken as a whole, this approach will scale nicely to multiple
22961 inferiors, each potentially using a different library version.
22962 Embedding a version number in the Python package name will ensure that
22963 @value{GDBN} is able to load both sets of printers simultaneously.
22964 Then, because the search for pretty-printers is done by objfile, and
22965 because your auto-loaded code took care to register your library's
22966 printers with a specific objfile, @value{GDBN} will find the correct
22967 printers for the specific version of the library used by each
22968 inferior.
22969
22970 To continue the @code{std::string} example (@pxref{Pretty Printing API}),
22971 this code might appear in @code{gdb.libstdcxx.v6}:
22972
22973 @smallexample
22974 def register_printers(objfile):
22975 objfile.pretty_printers.append(str_lookup_function)
22976 @end smallexample
22977
22978 @noindent
22979 And then the corresponding contents of the auto-load file would be:
22980
22981 @smallexample
22982 import gdb.libstdcxx.v6
22983 gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
22984 @end smallexample
22985
22986 The previous example illustrates a basic pretty-printer.
22987 There are a few things that can be improved on.
22988 The printer doesn't have a name, making it hard to identify in a
22989 list of installed printers. The lookup function has a name, but
22990 lookup functions can have arbitrary, even identical, names.
22991
22992 Second, the printer only handles one type, whereas a library typically has
22993 several types. One could install a lookup function for each desired type
22994 in the library, but one could also have a single lookup function recognize
22995 several types. The latter is the conventional way this is handled.
22996 If a pretty-printer can handle multiple data types, then its
22997 @dfn{subprinters} are the printers for the individual data types.
22998
22999 The @code{gdb.printing} module provides a formal way of solving these
23000 problems (@pxref{gdb.printing}).
23001 Here is another example that handles multiple types.
23002
23003 These are the types we are going to pretty-print:
23004
23005 @smallexample
23006 struct foo @{ int a, b; @};
23007 struct bar @{ struct foo x, y; @};
23008 @end smallexample
23009
23010 Here are the printers:
23011
23012 @smallexample
23013 class fooPrinter:
23014 """Print a foo object."""
23015
23016 def __init__(self, val):
23017 self.val = val
23018
23019 def to_string(self):
23020 return ("a=<" + str(self.val["a"]) +
23021 "> b=<" + str(self.val["b"]) + ">")
23022
23023 class barPrinter:
23024 """Print a bar object."""
23025
23026 def __init__(self, val):
23027 self.val = val
23028
23029 def to_string(self):
23030 return ("x=<" + str(self.val["x"]) +
23031 "> y=<" + str(self.val["y"]) + ">")
23032 @end smallexample
23033
23034 This example doesn't need a lookup function, that is handled by the
23035 @code{gdb.printing} module. Instead a function is provided to build up
23036 the object that handles the lookup.
23037
23038 @smallexample
23039 import gdb.printing
23040
23041 def build_pretty_printer():
23042 pp = gdb.printing.RegexpCollectionPrettyPrinter(
23043 "my_library")
23044 pp.add_printer('foo', '^foo$', fooPrinter)
23045 pp.add_printer('bar', '^bar$', barPrinter)
23046 return pp
23047 @end smallexample
23048
23049 And here is the autoload support:
23050
23051 @smallexample
23052 import gdb.printing
23053 import my_library
23054 gdb.printing.register_pretty_printer(
23055 gdb.current_objfile(),
23056 my_library.build_pretty_printer())
23057 @end smallexample
23058
23059 Finally, when this printer is loaded into @value{GDBN}, here is the
23060 corresponding output of @samp{info pretty-printer}:
23061
23062 @smallexample
23063 (gdb) info pretty-printer
23064 my_library.so:
23065 my_library
23066 foo
23067 bar
23068 @end smallexample
23069
23070 @node Inferiors In Python
23071 @subsubsection Inferiors In Python
23072 @cindex inferiors in Python
23073
23074 @findex gdb.Inferior
23075 Programs which are being run under @value{GDBN} are called inferiors
23076 (@pxref{Inferiors and Programs}). Python scripts can access
23077 information about and manipulate inferiors controlled by @value{GDBN}
23078 via objects of the @code{gdb.Inferior} class.
23079
23080 The following inferior-related functions are available in the @code{gdb}
23081 module:
23082
23083 @defun gdb.inferiors ()
23084 Return a tuple containing all inferior objects.
23085 @end defun
23086
23087 @defun gdb.selected_inferior ()
23088 Return an object representing the current inferior.
23089 @end defun
23090
23091 A @code{gdb.Inferior} object has the following attributes:
23092
23093 @table @code
23094 @defvar Inferior.num
23095 ID of inferior, as assigned by GDB.
23096 @end defvar
23097
23098 @defvar Inferior.pid
23099 Process ID of the inferior, as assigned by the underlying operating
23100 system.
23101 @end defvar
23102
23103 @defvar Inferior.was_attached
23104 Boolean signaling whether the inferior was created using `attach', or
23105 started by @value{GDBN} itself.
23106 @end defvar
23107 @end table
23108
23109 A @code{gdb.Inferior} object has the following methods:
23110
23111 @table @code
23112 @defun Inferior.is_valid ()
23113 Returns @code{True} if the @code{gdb.Inferior} object is valid,
23114 @code{False} if not. A @code{gdb.Inferior} object will become invalid
23115 if the inferior no longer exists within @value{GDBN}. All other
23116 @code{gdb.Inferior} methods will throw an exception if it is invalid
23117 at the time the method is called.
23118 @end defun
23119
23120 @defun Inferior.threads ()
23121 This method returns a tuple holding all the threads which are valid
23122 when it is called. If there are no valid threads, the method will
23123 return an empty tuple.
23124 @end defun
23125
23126 @findex gdb.read_memory
23127 @defun Inferior.read_memory (address, length)
23128 Read @var{length} bytes of memory from the inferior, starting at
23129 @var{address}. Returns a buffer object, which behaves much like an array
23130 or a string. It can be modified and given to the @code{gdb.write_memory}
23131 function.
23132 @end defun
23133
23134 @findex gdb.write_memory
23135 @defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
23136 Write the contents of @var{buffer} to the inferior, starting at
23137 @var{address}. The @var{buffer} parameter must be a Python object
23138 which supports the buffer protocol, i.e., a string, an array or the
23139 object returned from @code{gdb.read_memory}. If given, @var{length}
23140 determines the number of bytes from @var{buffer} to be written.
23141 @end defun
23142
23143 @findex gdb.search_memory
23144 @defun Inferior.search_memory (address, length, pattern)
23145 Search a region of the inferior memory starting at @var{address} with
23146 the given @var{length} using the search pattern supplied in
23147 @var{pattern}. The @var{pattern} parameter must be a Python object
23148 which supports the buffer protocol, i.e., a string, an array or the
23149 object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
23150 containing the address where the pattern was found, or @code{None} if
23151 the pattern could not be found.
23152 @end defun
23153 @end table
23154
23155 @node Events In Python
23156 @subsubsection Events In Python
23157 @cindex inferior events in Python
23158
23159 @value{GDBN} provides a general event facility so that Python code can be
23160 notified of various state changes, particularly changes that occur in
23161 the inferior.
23162
23163 An @dfn{event} is just an object that describes some state change. The
23164 type of the object and its attributes will vary depending on the details
23165 of the change. All the existing events are described below.
23166
23167 In order to be notified of an event, you must register an event handler
23168 with an @dfn{event registry}. An event registry is an object in the
23169 @code{gdb.events} module which dispatches particular events. A registry
23170 provides methods to register and unregister event handlers:
23171
23172 @table @code
23173 @defun EventRegistry.connect (object)
23174 Add the given callable @var{object} to the registry. This object will be
23175 called when an event corresponding to this registry occurs.
23176 @end defun
23177
23178 @defun EventRegistry.disconnect (object)
23179 Remove the given @var{object} from the registry. Once removed, the object
23180 will no longer receive notifications of events.
23181 @end defun
23182 @end table
23183
23184 Here is an example:
23185
23186 @smallexample
23187 def exit_handler (event):
23188 print "event type: exit"
23189 print "exit code: %d" % (event.exit_code)
23190
23191 gdb.events.exited.connect (exit_handler)
23192 @end smallexample
23193
23194 In the above example we connect our handler @code{exit_handler} to the
23195 registry @code{events.exited}. Once connected, @code{exit_handler} gets
23196 called when the inferior exits. The argument @dfn{event} in this example is
23197 of type @code{gdb.ExitedEvent}. As you can see in the example the
23198 @code{ExitedEvent} object has an attribute which indicates the exit code of
23199 the inferior.
23200
23201 The following is a listing of the event registries that are available and
23202 details of the events they emit:
23203
23204 @table @code
23205
23206 @item events.cont
23207 Emits @code{gdb.ThreadEvent}.
23208
23209 Some events can be thread specific when @value{GDBN} is running in non-stop
23210 mode. When represented in Python, these events all extend
23211 @code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
23212 events which are emitted by this or other modules might extend this event.
23213 Examples of these events are @code{gdb.BreakpointEvent} and
23214 @code{gdb.ContinueEvent}.
23215
23216 @table @code
23217 @defvar ThreadEvent.inferior_thread
23218 In non-stop mode this attribute will be set to the specific thread which was
23219 involved in the emitted event. Otherwise, it will be set to @code{None}.
23220 @end defvar
23221 @end table
23222
23223 Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
23224
23225 This event indicates that the inferior has been continued after a stop. For
23226 inherited attribute refer to @code{gdb.ThreadEvent} above.
23227
23228 @item events.exited
23229 Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
23230 @code{events.ExitedEvent} has two attributes:
23231 @table @code
23232 @defvar ExitedEvent.exit_code
23233 An integer representing the exit code, if available, which the inferior
23234 has returned. (The exit code could be unavailable if, for example,
23235 @value{GDBN} detaches from the inferior.) If the exit code is unavailable,
23236 the attribute does not exist.
23237 @end defvar
23238 @defvar ExitedEvent inferior
23239 A reference to the inferior which triggered the @code{exited} event.
23240 @end defvar
23241 @end table
23242
23243 @item events.stop
23244 Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
23245
23246 Indicates that the inferior has stopped. All events emitted by this registry
23247 extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
23248 will indicate the stopped thread when @value{GDBN} is running in non-stop
23249 mode. Refer to @code{gdb.ThreadEvent} above for more details.
23250
23251 Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
23252
23253 This event indicates that the inferior or one of its threads has received as
23254 signal. @code{gdb.SignalEvent} has the following attributes:
23255
23256 @table @code
23257 @defvar SignalEvent.stop_signal
23258 A string representing the signal received by the inferior. A list of possible
23259 signal values can be obtained by running the command @code{info signals} in
23260 the @value{GDBN} command prompt.
23261 @end defvar
23262 @end table
23263
23264 Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
23265
23266 @code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
23267 been hit, and has the following attributes:
23268
23269 @table @code
23270 @defvar BreakpointEvent.breakpoints
23271 A sequence containing references to all the breakpoints (type
23272 @code{gdb.Breakpoint}) that were hit.
23273 @xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
23274 @end defvar
23275 @defvar BreakpointEvent.breakpoint
23276 A reference to the first breakpoint that was hit.
23277 This function is maintained for backward compatibility and is now deprecated
23278 in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
23279 @end defvar
23280 @end table
23281
23282 @item events.new_objfile
23283 Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
23284 been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
23285
23286 @table @code
23287 @defvar NewObjFileEvent.new_objfile
23288 A reference to the object file (@code{gdb.Objfile}) which has been loaded.
23289 @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
23290 @end defvar
23291 @end table
23292
23293 @end table
23294
23295 @node Threads In Python
23296 @subsubsection Threads In Python
23297 @cindex threads in python
23298
23299 @findex gdb.InferiorThread
23300 Python scripts can access information about, and manipulate inferior threads
23301 controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
23302
23303 The following thread-related functions are available in the @code{gdb}
23304 module:
23305
23306 @findex gdb.selected_thread
23307 @defun gdb.selected_thread ()
23308 This function returns the thread object for the selected thread. If there
23309 is no selected thread, this will return @code{None}.
23310 @end defun
23311
23312 A @code{gdb.InferiorThread} object has the following attributes:
23313
23314 @table @code
23315 @defvar InferiorThread.name
23316 The name of the thread. If the user specified a name using
23317 @code{thread name}, then this returns that name. Otherwise, if an
23318 OS-supplied name is available, then it is returned. Otherwise, this
23319 returns @code{None}.
23320
23321 This attribute can be assigned to. The new value must be a string
23322 object, which sets the new name, or @code{None}, which removes any
23323 user-specified thread name.
23324 @end defvar
23325
23326 @defvar InferiorThread.num
23327 ID of the thread, as assigned by GDB.
23328 @end defvar
23329
23330 @defvar InferiorThread.ptid
23331 ID of the thread, as assigned by the operating system. This attribute is a
23332 tuple containing three integers. The first is the Process ID (PID); the second
23333 is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
23334 Either the LWPID or TID may be 0, which indicates that the operating system
23335 does not use that identifier.
23336 @end defvar
23337 @end table
23338
23339 A @code{gdb.InferiorThread} object has the following methods:
23340
23341 @table @code
23342 @defun InferiorThread.is_valid ()
23343 Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
23344 @code{False} if not. A @code{gdb.InferiorThread} object will become
23345 invalid if the thread exits, or the inferior that the thread belongs
23346 is deleted. All other @code{gdb.InferiorThread} methods will throw an
23347 exception if it is invalid at the time the method is called.
23348 @end defun
23349
23350 @defun InferiorThread.switch ()
23351 This changes @value{GDBN}'s currently selected thread to the one represented
23352 by this object.
23353 @end defun
23354
23355 @defun InferiorThread.is_stopped ()
23356 Return a Boolean indicating whether the thread is stopped.
23357 @end defun
23358
23359 @defun InferiorThread.is_running ()
23360 Return a Boolean indicating whether the thread is running.
23361 @end defun
23362
23363 @defun InferiorThread.is_exited ()
23364 Return a Boolean indicating whether the thread is exited.
23365 @end defun
23366 @end table
23367
23368 @node Commands In Python
23369 @subsubsection Commands In Python
23370
23371 @cindex commands in python
23372 @cindex python commands
23373 You can implement new @value{GDBN} CLI commands in Python. A CLI
23374 command is implemented using an instance of the @code{gdb.Command}
23375 class, most commonly using a subclass.
23376
23377 @defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
23378 The object initializer for @code{Command} registers the new command
23379 with @value{GDBN}. This initializer is normally invoked from the
23380 subclass' own @code{__init__} method.
23381
23382 @var{name} is the name of the command. If @var{name} consists of
23383 multiple words, then the initial words are looked for as prefix
23384 commands. In this case, if one of the prefix commands does not exist,
23385 an exception is raised.
23386
23387 There is no support for multi-line commands.
23388
23389 @var{command_class} should be one of the @samp{COMMAND_} constants
23390 defined below. This argument tells @value{GDBN} how to categorize the
23391 new command in the help system.
23392
23393 @var{completer_class} is an optional argument. If given, it should be
23394 one of the @samp{COMPLETE_} constants defined below. This argument
23395 tells @value{GDBN} how to perform completion for this command. If not
23396 given, @value{GDBN} will attempt to complete using the object's
23397 @code{complete} method (see below); if no such method is found, an
23398 error will occur when completion is attempted.
23399
23400 @var{prefix} is an optional argument. If @code{True}, then the new
23401 command is a prefix command; sub-commands of this command may be
23402 registered.
23403
23404 The help text for the new command is taken from the Python
23405 documentation string for the command's class, if there is one. If no
23406 documentation string is provided, the default value ``This command is
23407 not documented.'' is used.
23408 @end defun
23409
23410 @cindex don't repeat Python command
23411 @defun Command.dont_repeat ()
23412 By default, a @value{GDBN} command is repeated when the user enters a
23413 blank line at the command prompt. A command can suppress this
23414 behavior by invoking the @code{dont_repeat} method. This is similar
23415 to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
23416 @end defun
23417
23418 @defun Command.invoke (argument, from_tty)
23419 This method is called by @value{GDBN} when this command is invoked.
23420
23421 @var{argument} is a string. It is the argument to the command, after
23422 leading and trailing whitespace has been stripped.
23423
23424 @var{from_tty} is a boolean argument. When true, this means that the
23425 command was entered by the user at the terminal; when false it means
23426 that the command came from elsewhere.
23427
23428 If this method throws an exception, it is turned into a @value{GDBN}
23429 @code{error} call. Otherwise, the return value is ignored.
23430
23431 @findex gdb.string_to_argv
23432 To break @var{argument} up into an argv-like string use
23433 @code{gdb.string_to_argv}. This function behaves identically to
23434 @value{GDBN}'s internal argument lexer @code{buildargv}.
23435 It is recommended to use this for consistency.
23436 Arguments are separated by spaces and may be quoted.
23437 Example:
23438
23439 @smallexample
23440 print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
23441 ['1', '2 "3', '4 "5', "6 '7"]
23442 @end smallexample
23443
23444 @end defun
23445
23446 @cindex completion of Python commands
23447 @defun Command.complete (text, word)
23448 This method is called by @value{GDBN} when the user attempts
23449 completion on this command. All forms of completion are handled by
23450 this method, that is, the @key{TAB} and @key{M-?} key bindings
23451 (@pxref{Completion}), and the @code{complete} command (@pxref{Help,
23452 complete}).
23453
23454 The arguments @var{text} and @var{word} are both strings. @var{text}
23455 holds the complete command line up to the cursor's location.
23456 @var{word} holds the last word of the command line; this is computed
23457 using a word-breaking heuristic.
23458
23459 The @code{complete} method can return several values:
23460 @itemize @bullet
23461 @item
23462 If the return value is a sequence, the contents of the sequence are
23463 used as the completions. It is up to @code{complete} to ensure that the
23464 contents actually do complete the word. A zero-length sequence is
23465 allowed, it means that there were no completions available. Only
23466 string elements of the sequence are used; other elements in the
23467 sequence are ignored.
23468
23469 @item
23470 If the return value is one of the @samp{COMPLETE_} constants defined
23471 below, then the corresponding @value{GDBN}-internal completion
23472 function is invoked, and its result is used.
23473
23474 @item
23475 All other results are treated as though there were no available
23476 completions.
23477 @end itemize
23478 @end defun
23479
23480 When a new command is registered, it must be declared as a member of
23481 some general class of commands. This is used to classify top-level
23482 commands in the on-line help system; note that prefix commands are not
23483 listed under their own category but rather that of their top-level
23484 command. The available classifications are represented by constants
23485 defined in the @code{gdb} module:
23486
23487 @table @code
23488 @findex COMMAND_NONE
23489 @findex gdb.COMMAND_NONE
23490 @item gdb.COMMAND_NONE
23491 The command does not belong to any particular class. A command in
23492 this category will not be displayed in any of the help categories.
23493
23494 @findex COMMAND_RUNNING
23495 @findex gdb.COMMAND_RUNNING
23496 @item gdb.COMMAND_RUNNING
23497 The command is related to running the inferior. For example,
23498 @code{start}, @code{step}, and @code{continue} are in this category.
23499 Type @kbd{help running} at the @value{GDBN} prompt to see a list of
23500 commands in this category.
23501
23502 @findex COMMAND_DATA
23503 @findex gdb.COMMAND_DATA
23504 @item gdb.COMMAND_DATA
23505 The command is related to data or variables. For example,
23506 @code{call}, @code{find}, and @code{print} are in this category. Type
23507 @kbd{help data} at the @value{GDBN} prompt to see a list of commands
23508 in this category.
23509
23510 @findex COMMAND_STACK
23511 @findex gdb.COMMAND_STACK
23512 @item gdb.COMMAND_STACK
23513 The command has to do with manipulation of the stack. For example,
23514 @code{backtrace}, @code{frame}, and @code{return} are in this
23515 category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
23516 list of commands in this category.
23517
23518 @findex COMMAND_FILES
23519 @findex gdb.COMMAND_FILES
23520 @item gdb.COMMAND_FILES
23521 This class is used for file-related commands. For example,
23522 @code{file}, @code{list} and @code{section} are in this category.
23523 Type @kbd{help files} at the @value{GDBN} prompt to see a list of
23524 commands in this category.
23525
23526 @findex COMMAND_SUPPORT
23527 @findex gdb.COMMAND_SUPPORT
23528 @item gdb.COMMAND_SUPPORT
23529 This should be used for ``support facilities'', generally meaning
23530 things that are useful to the user when interacting with @value{GDBN},
23531 but not related to the state of the inferior. For example,
23532 @code{help}, @code{make}, and @code{shell} are in this category. Type
23533 @kbd{help support} at the @value{GDBN} prompt to see a list of
23534 commands in this category.
23535
23536 @findex COMMAND_STATUS
23537 @findex gdb.COMMAND_STATUS
23538 @item gdb.COMMAND_STATUS
23539 The command is an @samp{info}-related command, that is, related to the
23540 state of @value{GDBN} itself. For example, @code{info}, @code{macro},
23541 and @code{show} are in this category. Type @kbd{help status} at the
23542 @value{GDBN} prompt to see a list of commands in this category.
23543
23544 @findex COMMAND_BREAKPOINTS
23545 @findex gdb.COMMAND_BREAKPOINTS
23546 @item gdb.COMMAND_BREAKPOINTS
23547 The command has to do with breakpoints. For example, @code{break},
23548 @code{clear}, and @code{delete} are in this category. Type @kbd{help
23549 breakpoints} at the @value{GDBN} prompt to see a list of commands in
23550 this category.
23551
23552 @findex COMMAND_TRACEPOINTS
23553 @findex gdb.COMMAND_TRACEPOINTS
23554 @item gdb.COMMAND_TRACEPOINTS
23555 The command has to do with tracepoints. For example, @code{trace},
23556 @code{actions}, and @code{tfind} are in this category. Type
23557 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
23558 commands in this category.
23559
23560 @findex COMMAND_USER
23561 @findex gdb.COMMAND_USER
23562 @item gdb.COMMAND_USER
23563 The command is a general purpose command for the user, and typically
23564 does not fit in one of the other categories.
23565 Type @kbd{help user-defined} at the @value{GDBN} prompt to see
23566 a list of commands in this category, as well as the list of gdb macros
23567 (@pxref{Sequences}).
23568
23569 @findex COMMAND_OBSCURE
23570 @findex gdb.COMMAND_OBSCURE
23571 @item gdb.COMMAND_OBSCURE
23572 The command is only used in unusual circumstances, or is not of
23573 general interest to users. For example, @code{checkpoint},
23574 @code{fork}, and @code{stop} are in this category. Type @kbd{help
23575 obscure} at the @value{GDBN} prompt to see a list of commands in this
23576 category.
23577
23578 @findex COMMAND_MAINTENANCE
23579 @findex gdb.COMMAND_MAINTENANCE
23580 @item gdb.COMMAND_MAINTENANCE
23581 The command is only useful to @value{GDBN} maintainers. The
23582 @code{maintenance} and @code{flushregs} commands are in this category.
23583 Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
23584 commands in this category.
23585 @end table
23586
23587 A new command can use a predefined completion function, either by
23588 specifying it via an argument at initialization, or by returning it
23589 from the @code{complete} method. These predefined completion
23590 constants are all defined in the @code{gdb} module:
23591
23592 @table @code
23593 @findex COMPLETE_NONE
23594 @findex gdb.COMPLETE_NONE
23595 @item gdb.COMPLETE_NONE
23596 This constant means that no completion should be done.
23597
23598 @findex COMPLETE_FILENAME
23599 @findex gdb.COMPLETE_FILENAME
23600 @item gdb.COMPLETE_FILENAME
23601 This constant means that filename completion should be performed.
23602
23603 @findex COMPLETE_LOCATION
23604 @findex gdb.COMPLETE_LOCATION
23605 @item gdb.COMPLETE_LOCATION
23606 This constant means that location completion should be done.
23607 @xref{Specify Location}.
23608
23609 @findex COMPLETE_COMMAND
23610 @findex gdb.COMPLETE_COMMAND
23611 @item gdb.COMPLETE_COMMAND
23612 This constant means that completion should examine @value{GDBN}
23613 command names.
23614
23615 @findex COMPLETE_SYMBOL
23616 @findex gdb.COMPLETE_SYMBOL
23617 @item gdb.COMPLETE_SYMBOL
23618 This constant means that completion should be done using symbol names
23619 as the source.
23620 @end table
23621
23622 The following code snippet shows how a trivial CLI command can be
23623 implemented in Python:
23624
23625 @smallexample
23626 class HelloWorld (gdb.Command):
23627 """Greet the whole world."""
23628
23629 def __init__ (self):
23630 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
23631
23632 def invoke (self, arg, from_tty):
23633 print "Hello, World!"
23634
23635 HelloWorld ()
23636 @end smallexample
23637
23638 The last line instantiates the class, and is necessary to trigger the
23639 registration of the command with @value{GDBN}. Depending on how the
23640 Python code is read into @value{GDBN}, you may need to import the
23641 @code{gdb} module explicitly.
23642
23643 @node Parameters In Python
23644 @subsubsection Parameters In Python
23645
23646 @cindex parameters in python
23647 @cindex python parameters
23648 @tindex gdb.Parameter
23649 @tindex Parameter
23650 You can implement new @value{GDBN} parameters using Python. A new
23651 parameter is implemented as an instance of the @code{gdb.Parameter}
23652 class.
23653
23654 Parameters are exposed to the user via the @code{set} and
23655 @code{show} commands. @xref{Help}.
23656
23657 There are many parameters that already exist and can be set in
23658 @value{GDBN}. Two examples are: @code{set follow fork} and
23659 @code{set charset}. Setting these parameters influences certain
23660 behavior in @value{GDBN}. Similarly, you can define parameters that
23661 can be used to influence behavior in custom Python scripts and commands.
23662
23663 @defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
23664 The object initializer for @code{Parameter} registers the new
23665 parameter with @value{GDBN}. This initializer is normally invoked
23666 from the subclass' own @code{__init__} method.
23667
23668 @var{name} is the name of the new parameter. If @var{name} consists
23669 of multiple words, then the initial words are looked for as prefix
23670 parameters. An example of this can be illustrated with the
23671 @code{set print} set of parameters. If @var{name} is
23672 @code{print foo}, then @code{print} will be searched as the prefix
23673 parameter. In this case the parameter can subsequently be accessed in
23674 @value{GDBN} as @code{set print foo}.
23675
23676 If @var{name} consists of multiple words, and no prefix parameter group
23677 can be found, an exception is raised.
23678
23679 @var{command-class} should be one of the @samp{COMMAND_} constants
23680 (@pxref{Commands In Python}). This argument tells @value{GDBN} how to
23681 categorize the new parameter in the help system.
23682
23683 @var{parameter-class} should be one of the @samp{PARAM_} constants
23684 defined below. This argument tells @value{GDBN} the type of the new
23685 parameter; this information is used for input validation and
23686 completion.
23687
23688 If @var{parameter-class} is @code{PARAM_ENUM}, then
23689 @var{enum-sequence} must be a sequence of strings. These strings
23690 represent the possible values for the parameter.
23691
23692 If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
23693 of a fourth argument will cause an exception to be thrown.
23694
23695 The help text for the new parameter is taken from the Python
23696 documentation string for the parameter's class, if there is one. If
23697 there is no documentation string, a default value is used.
23698 @end defun
23699
23700 @defvar Parameter.set_doc
23701 If this attribute exists, and is a string, then its value is used as
23702 the help text for this parameter's @code{set} command. The value is
23703 examined when @code{Parameter.__init__} is invoked; subsequent changes
23704 have no effect.
23705 @end defvar
23706
23707 @defvar Parameter.show_doc
23708 If this attribute exists, and is a string, then its value is used as
23709 the help text for this parameter's @code{show} command. The value is
23710 examined when @code{Parameter.__init__} is invoked; subsequent changes
23711 have no effect.
23712 @end defvar
23713
23714 @defvar Parameter.value
23715 The @code{value} attribute holds the underlying value of the
23716 parameter. It can be read and assigned to just as any other
23717 attribute. @value{GDBN} does validation when assignments are made.
23718 @end defvar
23719
23720 There are two methods that should be implemented in any
23721 @code{Parameter} class. These are:
23722
23723 @defun Parameter.get_set_string (self)
23724 @value{GDBN} will call this method when a @var{parameter}'s value has
23725 been changed via the @code{set} API (for example, @kbd{set foo off}).
23726 The @code{value} attribute has already been populated with the new
23727 value and may be used in output. This method must return a string.
23728 @end defun
23729
23730 @defun Parameter.get_show_string (self, svalue)
23731 @value{GDBN} will call this method when a @var{parameter}'s
23732 @code{show} API has been invoked (for example, @kbd{show foo}). The
23733 argument @code{svalue} receives the string representation of the
23734 current value. This method must return a string.
23735 @end defun
23736
23737 When a new parameter is defined, its type must be specified. The
23738 available types are represented by constants defined in the @code{gdb}
23739 module:
23740
23741 @table @code
23742 @findex PARAM_BOOLEAN
23743 @findex gdb.PARAM_BOOLEAN
23744 @item gdb.PARAM_BOOLEAN
23745 The value is a plain boolean. The Python boolean values, @code{True}
23746 and @code{False} are the only valid values.
23747
23748 @findex PARAM_AUTO_BOOLEAN
23749 @findex gdb.PARAM_AUTO_BOOLEAN
23750 @item gdb.PARAM_AUTO_BOOLEAN
23751 The value has three possible states: true, false, and @samp{auto}. In
23752 Python, true and false are represented using boolean constants, and
23753 @samp{auto} is represented using @code{None}.
23754
23755 @findex PARAM_UINTEGER
23756 @findex gdb.PARAM_UINTEGER
23757 @item gdb.PARAM_UINTEGER
23758 The value is an unsigned integer. The value of 0 should be
23759 interpreted to mean ``unlimited''.
23760
23761 @findex PARAM_INTEGER
23762 @findex gdb.PARAM_INTEGER
23763 @item gdb.PARAM_INTEGER
23764 The value is a signed integer. The value of 0 should be interpreted
23765 to mean ``unlimited''.
23766
23767 @findex PARAM_STRING
23768 @findex gdb.PARAM_STRING
23769 @item gdb.PARAM_STRING
23770 The value is a string. When the user modifies the string, any escape
23771 sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
23772 translated into corresponding characters and encoded into the current
23773 host charset.
23774
23775 @findex PARAM_STRING_NOESCAPE
23776 @findex gdb.PARAM_STRING_NOESCAPE
23777 @item gdb.PARAM_STRING_NOESCAPE
23778 The value is a string. When the user modifies the string, escapes are
23779 passed through untranslated.
23780
23781 @findex PARAM_OPTIONAL_FILENAME
23782 @findex gdb.PARAM_OPTIONAL_FILENAME
23783 @item gdb.PARAM_OPTIONAL_FILENAME
23784 The value is a either a filename (a string), or @code{None}.
23785
23786 @findex PARAM_FILENAME
23787 @findex gdb.PARAM_FILENAME
23788 @item gdb.PARAM_FILENAME
23789 The value is a filename. This is just like
23790 @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
23791
23792 @findex PARAM_ZINTEGER
23793 @findex gdb.PARAM_ZINTEGER
23794 @item gdb.PARAM_ZINTEGER
23795 The value is an integer. This is like @code{PARAM_INTEGER}, except 0
23796 is interpreted as itself.
23797
23798 @findex PARAM_ENUM
23799 @findex gdb.PARAM_ENUM
23800 @item gdb.PARAM_ENUM
23801 The value is a string, which must be one of a collection string
23802 constants provided when the parameter is created.
23803 @end table
23804
23805 @node Functions In Python
23806 @subsubsection Writing new convenience functions
23807
23808 @cindex writing convenience functions
23809 @cindex convenience functions in python
23810 @cindex python convenience functions
23811 @tindex gdb.Function
23812 @tindex Function
23813 You can implement new convenience functions (@pxref{Convenience Vars})
23814 in Python. A convenience function is an instance of a subclass of the
23815 class @code{gdb.Function}.
23816
23817 @defun Function.__init__ (name)
23818 The initializer for @code{Function} registers the new function with
23819 @value{GDBN}. The argument @var{name} is the name of the function,
23820 a string. The function will be visible to the user as a convenience
23821 variable of type @code{internal function}, whose name is the same as
23822 the given @var{name}.
23823
23824 The documentation for the new function is taken from the documentation
23825 string for the new class.
23826 @end defun
23827
23828 @defun Function.invoke (@var{*args})
23829 When a convenience function is evaluated, its arguments are converted
23830 to instances of @code{gdb.Value}, and then the function's
23831 @code{invoke} method is called. Note that @value{GDBN} does not
23832 predetermine the arity of convenience functions. Instead, all
23833 available arguments are passed to @code{invoke}, following the
23834 standard Python calling convention. In particular, a convenience
23835 function can have default values for parameters without ill effect.
23836
23837 The return value of this method is used as its value in the enclosing
23838 expression. If an ordinary Python value is returned, it is converted
23839 to a @code{gdb.Value} following the usual rules.
23840 @end defun
23841
23842 The following code snippet shows how a trivial convenience function can
23843 be implemented in Python:
23844
23845 @smallexample
23846 class Greet (gdb.Function):
23847 """Return string to greet someone.
23848 Takes a name as argument."""
23849
23850 def __init__ (self):
23851 super (Greet, self).__init__ ("greet")
23852
23853 def invoke (self, name):
23854 return "Hello, %s!" % name.string ()
23855
23856 Greet ()
23857 @end smallexample
23858
23859 The last line instantiates the class, and is necessary to trigger the
23860 registration of the function with @value{GDBN}. Depending on how the
23861 Python code is read into @value{GDBN}, you may need to import the
23862 @code{gdb} module explicitly.
23863
23864 @node Progspaces In Python
23865 @subsubsection Program Spaces In Python
23866
23867 @cindex progspaces in python
23868 @tindex gdb.Progspace
23869 @tindex Progspace
23870 A program space, or @dfn{progspace}, represents a symbolic view
23871 of an address space.
23872 It consists of all of the objfiles of the program.
23873 @xref{Objfiles In Python}.
23874 @xref{Inferiors and Programs, program spaces}, for more details
23875 about program spaces.
23876
23877 The following progspace-related functions are available in the
23878 @code{gdb} module:
23879
23880 @findex gdb.current_progspace
23881 @defun gdb.current_progspace ()
23882 This function returns the program space of the currently selected inferior.
23883 @xref{Inferiors and Programs}.
23884 @end defun
23885
23886 @findex gdb.progspaces
23887 @defun gdb.progspaces ()
23888 Return a sequence of all the progspaces currently known to @value{GDBN}.
23889 @end defun
23890
23891 Each progspace is represented by an instance of the @code{gdb.Progspace}
23892 class.
23893
23894 @defvar Progspace.filename
23895 The file name of the progspace as a string.
23896 @end defvar
23897
23898 @defvar Progspace.pretty_printers
23899 The @code{pretty_printers} attribute is a list of functions. It is
23900 used to look up pretty-printers. A @code{Value} is passed to each
23901 function in order; if the function returns @code{None}, then the
23902 search continues. Otherwise, the return value should be an object
23903 which is used to format the value. @xref{Pretty Printing API}, for more
23904 information.
23905 @end defvar
23906
23907 @node Objfiles In Python
23908 @subsubsection Objfiles In Python
23909
23910 @cindex objfiles in python
23911 @tindex gdb.Objfile
23912 @tindex Objfile
23913 @value{GDBN} loads symbols for an inferior from various
23914 symbol-containing files (@pxref{Files}). These include the primary
23915 executable file, any shared libraries used by the inferior, and any
23916 separate debug info files (@pxref{Separate Debug Files}).
23917 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
23918
23919 The following objfile-related functions are available in the
23920 @code{gdb} module:
23921
23922 @findex gdb.current_objfile
23923 @defun gdb.current_objfile ()
23924 When auto-loading a Python script (@pxref{Auto-loading}), @value{GDBN}
23925 sets the ``current objfile'' to the corresponding objfile. This
23926 function returns the current objfile. If there is no current objfile,
23927 this function returns @code{None}.
23928 @end defun
23929
23930 @findex gdb.objfiles
23931 @defun gdb.objfiles ()
23932 Return a sequence of all the objfiles current known to @value{GDBN}.
23933 @xref{Objfiles In Python}.
23934 @end defun
23935
23936 Each objfile is represented by an instance of the @code{gdb.Objfile}
23937 class.
23938
23939 @defvar Objfile.filename
23940 The file name of the objfile as a string.
23941 @end defvar
23942
23943 @defvar Objfile.pretty_printers
23944 The @code{pretty_printers} attribute is a list of functions. It is
23945 used to look up pretty-printers. A @code{Value} is passed to each
23946 function in order; if the function returns @code{None}, then the
23947 search continues. Otherwise, the return value should be an object
23948 which is used to format the value. @xref{Pretty Printing API}, for more
23949 information.
23950 @end defvar
23951
23952 A @code{gdb.Objfile} object has the following methods:
23953
23954 @defun Objfile.is_valid ()
23955 Returns @code{True} if the @code{gdb.Objfile} object is valid,
23956 @code{False} if not. A @code{gdb.Objfile} object can become invalid
23957 if the object file it refers to is not loaded in @value{GDBN} any
23958 longer. All other @code{gdb.Objfile} methods will throw an exception
23959 if it is invalid at the time the method is called.
23960 @end defun
23961
23962 @node Frames In Python
23963 @subsubsection Accessing inferior stack frames from Python.
23964
23965 @cindex frames in python
23966 When the debugged program stops, @value{GDBN} is able to analyze its call
23967 stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
23968 represents a frame in the stack. A @code{gdb.Frame} object is only valid
23969 while its corresponding frame exists in the inferior's stack. If you try
23970 to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
23971 exception (@pxref{Exception Handling}).
23972
23973 Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
23974 operator, like:
23975
23976 @smallexample
23977 (@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
23978 True
23979 @end smallexample
23980
23981 The following frame-related functions are available in the @code{gdb} module:
23982
23983 @findex gdb.selected_frame
23984 @defun gdb.selected_frame ()
23985 Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
23986 @end defun
23987
23988 @findex gdb.newest_frame
23989 @defun gdb.newest_frame ()
23990 Return the newest frame object for the selected thread.
23991 @end defun
23992
23993 @defun gdb.frame_stop_reason_string (reason)
23994 Return a string explaining the reason why @value{GDBN} stopped unwinding
23995 frames, as expressed by the given @var{reason} code (an integer, see the
23996 @code{unwind_stop_reason} method further down in this section).
23997 @end defun
23998
23999 A @code{gdb.Frame} object has the following methods:
24000
24001 @table @code
24002 @defun Frame.is_valid ()
24003 Returns true if the @code{gdb.Frame} object is valid, false if not.
24004 A frame object can become invalid if the frame it refers to doesn't
24005 exist anymore in the inferior. All @code{gdb.Frame} methods will throw
24006 an exception if it is invalid at the time the method is called.
24007 @end defun
24008
24009 @defun Frame.name ()
24010 Returns the function name of the frame, or @code{None} if it can't be
24011 obtained.
24012 @end defun
24013
24014 @defun Frame.type ()
24015 Returns the type of the frame. The value can be one of:
24016 @table @code
24017 @item gdb.NORMAL_FRAME
24018 An ordinary stack frame.
24019
24020 @item gdb.DUMMY_FRAME
24021 A fake stack frame that was created by @value{GDBN} when performing an
24022 inferior function call.
24023
24024 @item gdb.INLINE_FRAME
24025 A frame representing an inlined function. The function was inlined
24026 into a @code{gdb.NORMAL_FRAME} that is older than this one.
24027
24028 @item gdb.TAILCALL_FRAME
24029 A frame representing a tail call. @xref{Tail Call Frames}.
24030
24031 @item gdb.SIGTRAMP_FRAME
24032 A signal trampoline frame. This is the frame created by the OS when
24033 it calls into a signal handler.
24034
24035 @item gdb.ARCH_FRAME
24036 A fake stack frame representing a cross-architecture call.
24037
24038 @item gdb.SENTINEL_FRAME
24039 This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
24040 newest frame.
24041 @end table
24042 @end defun
24043
24044 @defun Frame.unwind_stop_reason ()
24045 Return an integer representing the reason why it's not possible to find
24046 more frames toward the outermost frame. Use
24047 @code{gdb.frame_stop_reason_string} to convert the value returned by this
24048 function to a string. The value can be one of:
24049
24050 @table @code
24051 @item gdb.FRAME_UNWIND_NO_REASON
24052 No particular reason (older frames should be available).
24053
24054 @item gdb.FRAME_UNWIND_NULL_ID
24055 The previous frame's analyzer returns an invalid result.
24056
24057 @item gdb.FRAME_UNWIND_OUTERMOST
24058 This frame is the outermost.
24059
24060 @item gdb.FRAME_UNWIND_UNAVAILABLE
24061 Cannot unwind further, because that would require knowing the
24062 values of registers or memory that have not been collected.
24063
24064 @item gdb.FRAME_UNWIND_INNER_ID
24065 This frame ID looks like it ought to belong to a NEXT frame,
24066 but we got it for a PREV frame. Normally, this is a sign of
24067 unwinder failure. It could also indicate stack corruption.
24068
24069 @item gdb.FRAME_UNWIND_SAME_ID
24070 This frame has the same ID as the previous one. That means
24071 that unwinding further would almost certainly give us another
24072 frame with exactly the same ID, so break the chain. Normally,
24073 this is a sign of unwinder failure. It could also indicate
24074 stack corruption.
24075
24076 @item gdb.FRAME_UNWIND_NO_SAVED_PC
24077 The frame unwinder did not find any saved PC, but we needed
24078 one to unwind further.
24079
24080 @item gdb.FRAME_UNWIND_FIRST_ERROR
24081 Any stop reason greater or equal to this value indicates some kind
24082 of error. This special value facilitates writing code that tests
24083 for errors in unwinding in a way that will work correctly even if
24084 the list of the other values is modified in future @value{GDBN}
24085 versions. Using it, you could write:
24086 @smallexample
24087 reason = gdb.selected_frame().unwind_stop_reason ()
24088 reason_str = gdb.frame_stop_reason_string (reason)
24089 if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
24090 print "An error occured: %s" % reason_str
24091 @end smallexample
24092 @end table
24093
24094 @end defun
24095
24096 @defun Frame.pc ()
24097 Returns the frame's resume address.
24098 @end defun
24099
24100 @defun Frame.block ()
24101 Return the frame's code block. @xref{Blocks In Python}.
24102 @end defun
24103
24104 @defun Frame.function ()
24105 Return the symbol for the function corresponding to this frame.
24106 @xref{Symbols In Python}.
24107 @end defun
24108
24109 @defun Frame.older ()
24110 Return the frame that called this frame.
24111 @end defun
24112
24113 @defun Frame.newer ()
24114 Return the frame called by this frame.
24115 @end defun
24116
24117 @defun Frame.find_sal ()
24118 Return the frame's symtab and line object.
24119 @xref{Symbol Tables In Python}.
24120 @end defun
24121
24122 @defun Frame.read_var (variable @r{[}, block@r{]})
24123 Return the value of @var{variable} in this frame. If the optional
24124 argument @var{block} is provided, search for the variable from that
24125 block; otherwise start at the frame's current block (which is
24126 determined by the frame's current program counter). @var{variable}
24127 must be a string or a @code{gdb.Symbol} object. @var{block} must be a
24128 @code{gdb.Block} object.
24129 @end defun
24130
24131 @defun Frame.select ()
24132 Set this frame to be the selected frame. @xref{Stack, ,Examining the
24133 Stack}.
24134 @end defun
24135 @end table
24136
24137 @node Blocks In Python
24138 @subsubsection Accessing frame blocks from Python.
24139
24140 @cindex blocks in python
24141 @tindex gdb.Block
24142
24143 Within each frame, @value{GDBN} maintains information on each block
24144 stored in that frame. These blocks are organized hierarchically, and
24145 are represented individually in Python as a @code{gdb.Block}.
24146 Please see @ref{Frames In Python}, for a more in-depth discussion on
24147 frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more
24148 detailed technical information on @value{GDBN}'s book-keeping of the
24149 stack.
24150
24151 A @code{gdb.Block} is iterable. The iterator returns the symbols
24152 (@pxref{Symbols In Python}) local to the block.
24153
24154 The following block-related functions are available in the @code{gdb}
24155 module:
24156
24157 @findex gdb.block_for_pc
24158 @defun gdb.block_for_pc (pc)
24159 Return the @code{gdb.Block} containing the given @var{pc} value. If the
24160 block cannot be found for the @var{pc} value specified, the function
24161 will return @code{None}.
24162 @end defun
24163
24164 A @code{gdb.Block} object has the following methods:
24165
24166 @table @code
24167 @defun Block.is_valid ()
24168 Returns @code{True} if the @code{gdb.Block} object is valid,
24169 @code{False} if not. A block object can become invalid if the block it
24170 refers to doesn't exist anymore in the inferior. All other
24171 @code{gdb.Block} methods will throw an exception if it is invalid at
24172 the time the method is called. The block's validity is also checked
24173 during iteration over symbols of the block.
24174 @end defun
24175 @end table
24176
24177 A @code{gdb.Block} object has the following attributes:
24178
24179 @table @code
24180 @defvar Block.start
24181 The start address of the block. This attribute is not writable.
24182 @end defvar
24183
24184 @defvar Block.end
24185 The end address of the block. This attribute is not writable.
24186 @end defvar
24187
24188 @defvar Block.function
24189 The name of the block represented as a @code{gdb.Symbol}. If the
24190 block is not named, then this attribute holds @code{None}. This
24191 attribute is not writable.
24192 @end defvar
24193
24194 @defvar Block.superblock
24195 The block containing this block. If this parent block does not exist,
24196 this attribute holds @code{None}. This attribute is not writable.
24197 @end defvar
24198
24199 @defvar Block.global_block
24200 The global block associated with this block. This attribute is not
24201 writable.
24202 @end defvar
24203
24204 @defvar Block.static_block
24205 The static block associated with this block. This attribute is not
24206 writable.
24207 @end defvar
24208
24209 @defvar Block.is_global
24210 @code{True} if the @code{gdb.Block} object is a global block,
24211 @code{False} if not. This attribute is not
24212 writable.
24213 @end defvar
24214
24215 @defvar Block.is_static
24216 @code{True} if the @code{gdb.Block} object is a static block,
24217 @code{False} if not. This attribute is not writable.
24218 @end defvar
24219 @end table
24220
24221 @node Symbols In Python
24222 @subsubsection Python representation of Symbols.
24223
24224 @cindex symbols in python
24225 @tindex gdb.Symbol
24226
24227 @value{GDBN} represents every variable, function and type as an
24228 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
24229 Similarly, Python represents these symbols in @value{GDBN} with the
24230 @code{gdb.Symbol} object.
24231
24232 The following symbol-related functions are available in the @code{gdb}
24233 module:
24234
24235 @findex gdb.lookup_symbol
24236 @defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
24237 This function searches for a symbol by name. The search scope can be
24238 restricted to the parameters defined in the optional domain and block
24239 arguments.
24240
24241 @var{name} is the name of the symbol. It must be a string. The
24242 optional @var{block} argument restricts the search to symbols visible
24243 in that @var{block}. The @var{block} argument must be a
24244 @code{gdb.Block} object. If omitted, the block for the current frame
24245 is used. The optional @var{domain} argument restricts
24246 the search to the domain type. The @var{domain} argument must be a
24247 domain constant defined in the @code{gdb} module and described later
24248 in this chapter.
24249
24250 The result is a tuple of two elements.
24251 The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
24252 is not found.
24253 If the symbol is found, the second element is @code{True} if the symbol
24254 is a field of a method's object (e.g., @code{this} in C@t{++}),
24255 otherwise it is @code{False}.
24256 If the symbol is not found, the second element is @code{False}.
24257 @end defun
24258
24259 @findex gdb.lookup_global_symbol
24260 @defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
24261 This function searches for a global symbol by name.
24262 The search scope can be restricted to by the domain argument.
24263
24264 @var{name} is the name of the symbol. It must be a string.
24265 The optional @var{domain} argument restricts the search to the domain type.
24266 The @var{domain} argument must be a domain constant defined in the @code{gdb}
24267 module and described later in this chapter.
24268
24269 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
24270 is not found.
24271 @end defun
24272
24273 A @code{gdb.Symbol} object has the following attributes:
24274
24275 @table @code
24276 @defvar Symbol.type
24277 The type of the symbol or @code{None} if no type is recorded.
24278 This attribute is represented as a @code{gdb.Type} object.
24279 @xref{Types In Python}. This attribute is not writable.
24280 @end defvar
24281
24282 @defvar Symbol.symtab
24283 The symbol table in which the symbol appears. This attribute is
24284 represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
24285 Python}. This attribute is not writable.
24286 @end defvar
24287
24288 @defvar Symbol.line
24289 The line number in the source code at which the symbol was defined.
24290 This is an integer.
24291 @end defvar
24292
24293 @defvar Symbol.name
24294 The name of the symbol as a string. This attribute is not writable.
24295 @end defvar
24296
24297 @defvar Symbol.linkage_name
24298 The name of the symbol, as used by the linker (i.e., may be mangled).
24299 This attribute is not writable.
24300 @end defvar
24301
24302 @defvar Symbol.print_name
24303 The name of the symbol in a form suitable for output. This is either
24304 @code{name} or @code{linkage_name}, depending on whether the user
24305 asked @value{GDBN} to display demangled or mangled names.
24306 @end defvar
24307
24308 @defvar Symbol.addr_class
24309 The address class of the symbol. This classifies how to find the value
24310 of a symbol. Each address class is a constant defined in the
24311 @code{gdb} module and described later in this chapter.
24312 @end defvar
24313
24314 @defvar Symbol.needs_frame
24315 This is @code{True} if evaluating this symbol's value requires a frame
24316 (@pxref{Frames In Python}) and @code{False} otherwise. Typically,
24317 local variables will require a frame, but other symbols will not.
24318 @end defvar
24319
24320 @defvar Symbol.is_argument
24321 @code{True} if the symbol is an argument of a function.
24322 @end defvar
24323
24324 @defvar Symbol.is_constant
24325 @code{True} if the symbol is a constant.
24326 @end defvar
24327
24328 @defvar Symbol.is_function
24329 @code{True} if the symbol is a function or a method.
24330 @end defvar
24331
24332 @defvar Symbol.is_variable
24333 @code{True} if the symbol is a variable.
24334 @end defvar
24335 @end table
24336
24337 A @code{gdb.Symbol} object has the following methods:
24338
24339 @table @code
24340 @defun Symbol.is_valid ()
24341 Returns @code{True} if the @code{gdb.Symbol} object is valid,
24342 @code{False} if not. A @code{gdb.Symbol} object can become invalid if
24343 the symbol it refers to does not exist in @value{GDBN} any longer.
24344 All other @code{gdb.Symbol} methods will throw an exception if it is
24345 invalid at the time the method is called.
24346 @end defun
24347
24348 @defun Symbol.value (@r{[}frame@r{]})
24349 Compute the value of the symbol, as a @code{gdb.Value}. For
24350 functions, this computes the address of the function, cast to the
24351 appropriate type. If the symbol requires a frame in order to compute
24352 its value, then @var{frame} must be given. If @var{frame} is not
24353 given, or if @var{frame} is invalid, then this method will throw an
24354 exception.
24355 @end defun
24356 @end table
24357
24358 The available domain categories in @code{gdb.Symbol} are represented
24359 as constants in the @code{gdb} module:
24360
24361 @table @code
24362 @findex SYMBOL_UNDEF_DOMAIN
24363 @findex gdb.SYMBOL_UNDEF_DOMAIN
24364 @item gdb.SYMBOL_UNDEF_DOMAIN
24365 This is used when a domain has not been discovered or none of the
24366 following domains apply. This usually indicates an error either
24367 in the symbol information or in @value{GDBN}'s handling of symbols.
24368 @findex SYMBOL_VAR_DOMAIN
24369 @findex gdb.SYMBOL_VAR_DOMAIN
24370 @item gdb.SYMBOL_VAR_DOMAIN
24371 This domain contains variables, function names, typedef names and enum
24372 type values.
24373 @findex SYMBOL_STRUCT_DOMAIN
24374 @findex gdb.SYMBOL_STRUCT_DOMAIN
24375 @item gdb.SYMBOL_STRUCT_DOMAIN
24376 This domain holds struct, union and enum type names.
24377 @findex SYMBOL_LABEL_DOMAIN
24378 @findex gdb.SYMBOL_LABEL_DOMAIN
24379 @item gdb.SYMBOL_LABEL_DOMAIN
24380 This domain contains names of labels (for gotos).
24381 @findex SYMBOL_VARIABLES_DOMAIN
24382 @findex gdb.SYMBOL_VARIABLES_DOMAIN
24383 @item gdb.SYMBOL_VARIABLES_DOMAIN
24384 This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
24385 contains everything minus functions and types.
24386 @findex SYMBOL_FUNCTIONS_DOMAIN
24387 @findex gdb.SYMBOL_FUNCTIONS_DOMAIN
24388 @item gdb.SYMBOL_FUNCTION_DOMAIN
24389 This domain contains all functions.
24390 @findex SYMBOL_TYPES_DOMAIN
24391 @findex gdb.SYMBOL_TYPES_DOMAIN
24392 @item gdb.SYMBOL_TYPES_DOMAIN
24393 This domain contains all types.
24394 @end table
24395
24396 The available address class categories in @code{gdb.Symbol} are represented
24397 as constants in the @code{gdb} module:
24398
24399 @table @code
24400 @findex SYMBOL_LOC_UNDEF
24401 @findex gdb.SYMBOL_LOC_UNDEF
24402 @item gdb.SYMBOL_LOC_UNDEF
24403 If this is returned by address class, it indicates an error either in
24404 the symbol information or in @value{GDBN}'s handling of symbols.
24405 @findex SYMBOL_LOC_CONST
24406 @findex gdb.SYMBOL_LOC_CONST
24407 @item gdb.SYMBOL_LOC_CONST
24408 Value is constant int.
24409 @findex SYMBOL_LOC_STATIC
24410 @findex gdb.SYMBOL_LOC_STATIC
24411 @item gdb.SYMBOL_LOC_STATIC
24412 Value is at a fixed address.
24413 @findex SYMBOL_LOC_REGISTER
24414 @findex gdb.SYMBOL_LOC_REGISTER
24415 @item gdb.SYMBOL_LOC_REGISTER
24416 Value is in a register.
24417 @findex SYMBOL_LOC_ARG
24418 @findex gdb.SYMBOL_LOC_ARG
24419 @item gdb.SYMBOL_LOC_ARG
24420 Value is an argument. This value is at the offset stored within the
24421 symbol inside the frame's argument list.
24422 @findex SYMBOL_LOC_REF_ARG
24423 @findex gdb.SYMBOL_LOC_REF_ARG
24424 @item gdb.SYMBOL_LOC_REF_ARG
24425 Value address is stored in the frame's argument list. Just like
24426 @code{LOC_ARG} except that the value's address is stored at the
24427 offset, not the value itself.
24428 @findex SYMBOL_LOC_REGPARM_ADDR
24429 @findex gdb.SYMBOL_LOC_REGPARM_ADDR
24430 @item gdb.SYMBOL_LOC_REGPARM_ADDR
24431 Value is a specified register. Just like @code{LOC_REGISTER} except
24432 the register holds the address of the argument instead of the argument
24433 itself.
24434 @findex SYMBOL_LOC_LOCAL
24435 @findex gdb.SYMBOL_LOC_LOCAL
24436 @item gdb.SYMBOL_LOC_LOCAL
24437 Value is a local variable.
24438 @findex SYMBOL_LOC_TYPEDEF
24439 @findex gdb.SYMBOL_LOC_TYPEDEF
24440 @item gdb.SYMBOL_LOC_TYPEDEF
24441 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
24442 have this class.
24443 @findex SYMBOL_LOC_BLOCK
24444 @findex gdb.SYMBOL_LOC_BLOCK
24445 @item gdb.SYMBOL_LOC_BLOCK
24446 Value is a block.
24447 @findex SYMBOL_LOC_CONST_BYTES
24448 @findex gdb.SYMBOL_LOC_CONST_BYTES
24449 @item gdb.SYMBOL_LOC_CONST_BYTES
24450 Value is a byte-sequence.
24451 @findex SYMBOL_LOC_UNRESOLVED
24452 @findex gdb.SYMBOL_LOC_UNRESOLVED
24453 @item gdb.SYMBOL_LOC_UNRESOLVED
24454 Value is at a fixed address, but the address of the variable has to be
24455 determined from the minimal symbol table whenever the variable is
24456 referenced.
24457 @findex SYMBOL_LOC_OPTIMIZED_OUT
24458 @findex gdb.SYMBOL_LOC_OPTIMIZED_OUT
24459 @item gdb.SYMBOL_LOC_OPTIMIZED_OUT
24460 The value does not actually exist in the program.
24461 @findex SYMBOL_LOC_COMPUTED
24462 @findex gdb.SYMBOL_LOC_COMPUTED
24463 @item gdb.SYMBOL_LOC_COMPUTED
24464 The value's address is a computed location.
24465 @end table
24466
24467 @node Symbol Tables In Python
24468 @subsubsection Symbol table representation in Python.
24469
24470 @cindex symbol tables in python
24471 @tindex gdb.Symtab
24472 @tindex gdb.Symtab_and_line
24473
24474 Access to symbol table data maintained by @value{GDBN} on the inferior
24475 is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
24476 @code{gdb.Symtab}. Symbol table and line data for a frame is returned
24477 from the @code{find_sal} method in @code{gdb.Frame} object.
24478 @xref{Frames In Python}.
24479
24480 For more information on @value{GDBN}'s symbol table management, see
24481 @ref{Symbols, ,Examining the Symbol Table}, for more information.
24482
24483 A @code{gdb.Symtab_and_line} object has the following attributes:
24484
24485 @table @code
24486 @defvar Symtab_and_line.symtab
24487 The symbol table object (@code{gdb.Symtab}) for this frame.
24488 This attribute is not writable.
24489 @end defvar
24490
24491 @defvar Symtab_and_line.pc
24492 Indicates the current program counter address. This attribute is not
24493 writable.
24494 @end defvar
24495
24496 @defvar Symtab_and_line.line
24497 Indicates the current line number for this object. This
24498 attribute is not writable.
24499 @end defvar
24500 @end table
24501
24502 A @code{gdb.Symtab_and_line} object has the following methods:
24503
24504 @table @code
24505 @defun Symtab_and_line.is_valid ()
24506 Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
24507 @code{False} if not. A @code{gdb.Symtab_and_line} object can become
24508 invalid if the Symbol table and line object it refers to does not
24509 exist in @value{GDBN} any longer. All other
24510 @code{gdb.Symtab_and_line} methods will throw an exception if it is
24511 invalid at the time the method is called.
24512 @end defun
24513 @end table
24514
24515 A @code{gdb.Symtab} object has the following attributes:
24516
24517 @table @code
24518 @defvar Symtab.filename
24519 The symbol table's source filename. This attribute is not writable.
24520 @end defvar
24521
24522 @defvar Symtab.objfile
24523 The symbol table's backing object file. @xref{Objfiles In Python}.
24524 This attribute is not writable.
24525 @end defvar
24526 @end table
24527
24528 A @code{gdb.Symtab} object has the following methods:
24529
24530 @table @code
24531 @defun Symtab.is_valid ()
24532 Returns @code{True} if the @code{gdb.Symtab} object is valid,
24533 @code{False} if not. A @code{gdb.Symtab} object can become invalid if
24534 the symbol table it refers to does not exist in @value{GDBN} any
24535 longer. All other @code{gdb.Symtab} methods will throw an exception
24536 if it is invalid at the time the method is called.
24537 @end defun
24538
24539 @defun Symtab.fullname ()
24540 Return the symbol table's source absolute file name.
24541 @end defun
24542 @end table
24543
24544 @node Breakpoints In Python
24545 @subsubsection Manipulating breakpoints using Python
24546
24547 @cindex breakpoints in python
24548 @tindex gdb.Breakpoint
24549
24550 Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
24551 class.
24552
24553 @defun Breakpoint.__init__ (spec @r{[}, type @r{[}, wp_class @r{[},internal@r{]]]})
24554 Create a new breakpoint. @var{spec} is a string naming the
24555 location of the breakpoint, or an expression that defines a
24556 watchpoint. The contents can be any location recognized by the
24557 @code{break} command, or in the case of a watchpoint, by the @code{watch}
24558 command. The optional @var{type} denotes the breakpoint to create
24559 from the types defined later in this chapter. This argument can be
24560 either: @code{gdb.BP_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}. @var{type}
24561 defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal} argument
24562 allows the breakpoint to become invisible to the user. The breakpoint
24563 will neither be reported when created, nor will it be listed in the
24564 output from @code{info breakpoints} (but will be listed with the
24565 @code{maint info breakpoints} command). The optional @var{wp_class}
24566 argument defines the class of watchpoint to create, if @var{type} is
24567 @code{gdb.BP_WATCHPOINT}. If a watchpoint class is not provided, it is
24568 assumed to be a @code{gdb.WP_WRITE} class.
24569 @end defun
24570
24571 @defun Breakpoint.stop (self)
24572 The @code{gdb.Breakpoint} class can be sub-classed and, in
24573 particular, you may choose to implement the @code{stop} method.
24574 If this method is defined as a sub-class of @code{gdb.Breakpoint},
24575 it will be called when the inferior reaches any location of a
24576 breakpoint which instantiates that sub-class. If the method returns
24577 @code{True}, the inferior will be stopped at the location of the
24578 breakpoint, otherwise the inferior will continue.
24579
24580 If there are multiple breakpoints at the same location with a
24581 @code{stop} method, each one will be called regardless of the
24582 return status of the previous. This ensures that all @code{stop}
24583 methods have a chance to execute at that location. In this scenario
24584 if one of the methods returns @code{True} but the others return
24585 @code{False}, the inferior will still be stopped.
24586
24587 You should not alter the execution state of the inferior (i.e.@:, step,
24588 next, etc.), alter the current frame context (i.e.@:, change the current
24589 active frame), or alter, add or delete any breakpoint. As a general
24590 rule, you should not alter any data within @value{GDBN} or the inferior
24591 at this time.
24592
24593 Example @code{stop} implementation:
24594
24595 @smallexample
24596 class MyBreakpoint (gdb.Breakpoint):
24597 def stop (self):
24598 inf_val = gdb.parse_and_eval("foo")
24599 if inf_val == 3:
24600 return True
24601 return False
24602 @end smallexample
24603 @end defun
24604
24605 The available watchpoint types represented by constants are defined in the
24606 @code{gdb} module:
24607
24608 @table @code
24609 @findex WP_READ
24610 @findex gdb.WP_READ
24611 @item gdb.WP_READ
24612 Read only watchpoint.
24613
24614 @findex WP_WRITE
24615 @findex gdb.WP_WRITE
24616 @item gdb.WP_WRITE
24617 Write only watchpoint.
24618
24619 @findex WP_ACCESS
24620 @findex gdb.WP_ACCESS
24621 @item gdb.WP_ACCESS
24622 Read/Write watchpoint.
24623 @end table
24624
24625 @defun Breakpoint.is_valid ()
24626 Return @code{True} if this @code{Breakpoint} object is valid,
24627 @code{False} otherwise. A @code{Breakpoint} object can become invalid
24628 if the user deletes the breakpoint. In this case, the object still
24629 exists, but the underlying breakpoint does not. In the cases of
24630 watchpoint scope, the watchpoint remains valid even if execution of the
24631 inferior leaves the scope of that watchpoint.
24632 @end defun
24633
24634 @defun Breakpoint.delete
24635 Permanently deletes the @value{GDBN} breakpoint. This also
24636 invalidates the Python @code{Breakpoint} object. Any further access
24637 to this object's attributes or methods will raise an error.
24638 @end defun
24639
24640 @defvar Breakpoint.enabled
24641 This attribute is @code{True} if the breakpoint is enabled, and
24642 @code{False} otherwise. This attribute is writable.
24643 @end defvar
24644
24645 @defvar Breakpoint.silent
24646 This attribute is @code{True} if the breakpoint is silent, and
24647 @code{False} otherwise. This attribute is writable.
24648
24649 Note that a breakpoint can also be silent if it has commands and the
24650 first command is @code{silent}. This is not reported by the
24651 @code{silent} attribute.
24652 @end defvar
24653
24654 @defvar Breakpoint.thread
24655 If the breakpoint is thread-specific, this attribute holds the thread
24656 id. If the breakpoint is not thread-specific, this attribute is
24657 @code{None}. This attribute is writable.
24658 @end defvar
24659
24660 @defvar Breakpoint.task
24661 If the breakpoint is Ada task-specific, this attribute holds the Ada task
24662 id. If the breakpoint is not task-specific (or the underlying
24663 language is not Ada), this attribute is @code{None}. This attribute
24664 is writable.
24665 @end defvar
24666
24667 @defvar Breakpoint.ignore_count
24668 This attribute holds the ignore count for the breakpoint, an integer.
24669 This attribute is writable.
24670 @end defvar
24671
24672 @defvar Breakpoint.number
24673 This attribute holds the breakpoint's number --- the identifier used by
24674 the user to manipulate the breakpoint. This attribute is not writable.
24675 @end defvar
24676
24677 @defvar Breakpoint.type
24678 This attribute holds the breakpoint's type --- the identifier used to
24679 determine the actual breakpoint type or use-case. This attribute is not
24680 writable.
24681 @end defvar
24682
24683 @defvar Breakpoint.visible
24684 This attribute tells whether the breakpoint is visible to the user
24685 when set, or when the @samp{info breakpoints} command is run. This
24686 attribute is not writable.
24687 @end defvar
24688
24689 The available types are represented by constants defined in the @code{gdb}
24690 module:
24691
24692 @table @code
24693 @findex BP_BREAKPOINT
24694 @findex gdb.BP_BREAKPOINT
24695 @item gdb.BP_BREAKPOINT
24696 Normal code breakpoint.
24697
24698 @findex BP_WATCHPOINT
24699 @findex gdb.BP_WATCHPOINT
24700 @item gdb.BP_WATCHPOINT
24701 Watchpoint breakpoint.
24702
24703 @findex BP_HARDWARE_WATCHPOINT
24704 @findex gdb.BP_HARDWARE_WATCHPOINT
24705 @item gdb.BP_HARDWARE_WATCHPOINT
24706 Hardware assisted watchpoint.
24707
24708 @findex BP_READ_WATCHPOINT
24709 @findex gdb.BP_READ_WATCHPOINT
24710 @item gdb.BP_READ_WATCHPOINT
24711 Hardware assisted read watchpoint.
24712
24713 @findex BP_ACCESS_WATCHPOINT
24714 @findex gdb.BP_ACCESS_WATCHPOINT
24715 @item gdb.BP_ACCESS_WATCHPOINT
24716 Hardware assisted access watchpoint.
24717 @end table
24718
24719 @defvar Breakpoint.hit_count
24720 This attribute holds the hit count for the breakpoint, an integer.
24721 This attribute is writable, but currently it can only be set to zero.
24722 @end defvar
24723
24724 @defvar Breakpoint.location
24725 This attribute holds the location of the breakpoint, as specified by
24726 the user. It is a string. If the breakpoint does not have a location
24727 (that is, it is a watchpoint) the attribute's value is @code{None}. This
24728 attribute is not writable.
24729 @end defvar
24730
24731 @defvar Breakpoint.expression
24732 This attribute holds a breakpoint expression, as specified by
24733 the user. It is a string. If the breakpoint does not have an
24734 expression (the breakpoint is not a watchpoint) the attribute's value
24735 is @code{None}. This attribute is not writable.
24736 @end defvar
24737
24738 @defvar Breakpoint.condition
24739 This attribute holds the condition of the breakpoint, as specified by
24740 the user. It is a string. If there is no condition, this attribute's
24741 value is @code{None}. This attribute is writable.
24742 @end defvar
24743
24744 @defvar Breakpoint.commands
24745 This attribute holds the commands attached to the breakpoint. If
24746 there are commands, this attribute's value is a string holding all the
24747 commands, separated by newlines. If there are no commands, this
24748 attribute is @code{None}. This attribute is not writable.
24749 @end defvar
24750
24751 @node Finish Breakpoints in Python
24752 @subsubsection Finish Breakpoints
24753
24754 @cindex python finish breakpoints
24755 @tindex gdb.FinishBreakpoint
24756
24757 A finish breakpoint is a temporary breakpoint set at the return address of
24758 a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
24759 extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
24760 and deleted when the execution will run out of the breakpoint scope (i.e.@:
24761 @code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
24762 Finish breakpoints are thread specific and must be create with the right
24763 thread selected.
24764
24765 @defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
24766 Create a finish breakpoint at the return address of the @code{gdb.Frame}
24767 object @var{frame}. If @var{frame} is not provided, this defaults to the
24768 newest frame. The optional @var{internal} argument allows the breakpoint to
24769 become invisible to the user. @xref{Breakpoints In Python}, for further
24770 details about this argument.
24771 @end defun
24772
24773 @defun FinishBreakpoint.out_of_scope (self)
24774 In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
24775 @code{return} command, @dots{}), a function may not properly terminate, and
24776 thus never hit the finish breakpoint. When @value{GDBN} notices such a
24777 situation, the @code{out_of_scope} callback will be triggered.
24778
24779 You may want to sub-class @code{gdb.FinishBreakpoint} and override this
24780 method:
24781
24782 @smallexample
24783 class MyFinishBreakpoint (gdb.FinishBreakpoint)
24784 def stop (self):
24785 print "normal finish"
24786 return True
24787
24788 def out_of_scope ():
24789 print "abnormal finish"
24790 @end smallexample
24791 @end defun
24792
24793 @defvar FinishBreakpoint.return_value
24794 When @value{GDBN} is stopped at a finish breakpoint and the frame
24795 used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
24796 attribute will contain a @code{gdb.Value} object corresponding to the return
24797 value of the function. The value will be @code{None} if the function return
24798 type is @code{void} or if the return value was not computable. This attribute
24799 is not writable.
24800 @end defvar
24801
24802 @node Lazy Strings In Python
24803 @subsubsection Python representation of lazy strings.
24804
24805 @cindex lazy strings in python
24806 @tindex gdb.LazyString
24807
24808 A @dfn{lazy string} is a string whose contents is not retrieved or
24809 encoded until it is needed.
24810
24811 A @code{gdb.LazyString} is represented in @value{GDBN} as an
24812 @code{address} that points to a region of memory, an @code{encoding}
24813 that will be used to encode that region of memory, and a @code{length}
24814 to delimit the region of memory that represents the string. The
24815 difference between a @code{gdb.LazyString} and a string wrapped within
24816 a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
24817 differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
24818 retrieved and encoded during printing, while a @code{gdb.Value}
24819 wrapping a string is immediately retrieved and encoded on creation.
24820
24821 A @code{gdb.LazyString} object has the following functions:
24822
24823 @defun LazyString.value ()
24824 Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
24825 will point to the string in memory, but will lose all the delayed
24826 retrieval, encoding and handling that @value{GDBN} applies to a
24827 @code{gdb.LazyString}.
24828 @end defun
24829
24830 @defvar LazyString.address
24831 This attribute holds the address of the string. This attribute is not
24832 writable.
24833 @end defvar
24834
24835 @defvar LazyString.length
24836 This attribute holds the length of the string in characters. If the
24837 length is -1, then the string will be fetched and encoded up to the
24838 first null of appropriate width. This attribute is not writable.
24839 @end defvar
24840
24841 @defvar LazyString.encoding
24842 This attribute holds the encoding that will be applied to the string
24843 when the string is printed by @value{GDBN}. If the encoding is not
24844 set, or contains an empty string, then @value{GDBN} will select the
24845 most appropriate encoding when the string is printed. This attribute
24846 is not writable.
24847 @end defvar
24848
24849 @defvar LazyString.type
24850 This attribute holds the type that is represented by the lazy string's
24851 type. For a lazy string this will always be a pointer type. To
24852 resolve this to the lazy string's character type, use the type's
24853 @code{target} method. @xref{Types In Python}. This attribute is not
24854 writable.
24855 @end defvar
24856
24857 @node Auto-loading
24858 @subsection Auto-loading
24859 @cindex auto-loading, Python
24860
24861 When a new object file is read (for example, due to the @code{file}
24862 command, or because the inferior has loaded a shared library),
24863 @value{GDBN} will look for Python support scripts in several ways:
24864 @file{@var{objfile}-gdb.py} (@pxref{objfile-gdb.py file})
24865 and @code{.debug_gdb_scripts} section
24866 (@pxref{dotdebug_gdb_scripts section}).
24867
24868 The auto-loading feature is useful for supplying application-specific
24869 debugging commands and scripts.
24870
24871 Auto-loading can be enabled or disabled,
24872 and the list of auto-loaded scripts can be printed.
24873
24874 @table @code
24875 @kindex set auto-load-scripts
24876 @item set auto-load-scripts [yes|no]
24877 Enable or disable the auto-loading of Python scripts.
24878
24879 @kindex show auto-load-scripts
24880 @item show auto-load-scripts
24881 Show whether auto-loading of Python scripts is enabled or disabled.
24882
24883 @kindex info auto-load-scripts
24884 @cindex print list of auto-loaded scripts
24885 @item info auto-load-scripts [@var{regexp}]
24886 Print the list of all scripts that @value{GDBN} auto-loaded.
24887
24888 Also printed is the list of scripts that were mentioned in
24889 the @code{.debug_gdb_scripts} section and were not found
24890 (@pxref{dotdebug_gdb_scripts section}).
24891 This is useful because their names are not printed when @value{GDBN}
24892 tries to load them and fails. There may be many of them, and printing
24893 an error message for each one is problematic.
24894
24895 If @var{regexp} is supplied only scripts with matching names are printed.
24896
24897 Example:
24898
24899 @smallexample
24900 (gdb) info auto-load-scripts
24901 Loaded Script
24902 Yes py-section-script.py
24903 full name: /tmp/py-section-script.py
24904 Missing my-foo-pretty-printers.py
24905 @end smallexample
24906 @end table
24907
24908 When reading an auto-loaded file, @value{GDBN} sets the
24909 @dfn{current objfile}. This is available via the @code{gdb.current_objfile}
24910 function (@pxref{Objfiles In Python}). This can be useful for
24911 registering objfile-specific pretty-printers.
24912
24913 @menu
24914 * objfile-gdb.py file:: The @file{@var{objfile}-gdb.py} file
24915 * dotdebug_gdb_scripts section:: The @code{.debug_gdb_scripts} section
24916 * Which flavor to choose?::
24917 @end menu
24918
24919 @node objfile-gdb.py file
24920 @subsubsection The @file{@var{objfile}-gdb.py} file
24921 @cindex @file{@var{objfile}-gdb.py}
24922
24923 When a new object file is read, @value{GDBN} looks for
24924 a file named @file{@var{objfile}-gdb.py},
24925 where @var{objfile} is the object file's real name, formed by ensuring
24926 that the file name is absolute, following all symlinks, and resolving
24927 @code{.} and @code{..} components. If this file exists and is
24928 readable, @value{GDBN} will evaluate it as a Python script.
24929
24930 If this file does not exist, and if the parameter
24931 @code{debug-file-directory} is set (@pxref{Separate Debug Files}),
24932 then @value{GDBN} will look for @var{real-name} in all of the
24933 directories mentioned in the value of @code{debug-file-directory}.
24934
24935 Finally, if this file does not exist, then @value{GDBN} will look for
24936 a file named @file{@var{data-directory}/auto-load/@var{real-name}}, where
24937 @var{data-directory} is @value{GDBN}'s data directory (available via
24938 @code{show data-directory}, @pxref{Data Files}), and @var{real-name}
24939 is the object file's real name, as described above.
24940
24941 @value{GDBN} does not track which files it has already auto-loaded this way.
24942 @value{GDBN} will load the associated script every time the corresponding
24943 @var{objfile} is opened.
24944 So your @file{-gdb.py} file should be careful to avoid errors if it
24945 is evaluated more than once.
24946
24947 @node dotdebug_gdb_scripts section
24948 @subsubsection The @code{.debug_gdb_scripts} section
24949 @cindex @code{.debug_gdb_scripts} section
24950
24951 For systems using file formats like ELF and COFF,
24952 when @value{GDBN} loads a new object file
24953 it will look for a special section named @samp{.debug_gdb_scripts}.
24954 If this section exists, its contents is a list of names of scripts to load.
24955
24956 @value{GDBN} will look for each specified script file first in the
24957 current directory and then along the source search path
24958 (@pxref{Source Path, ,Specifying Source Directories}),
24959 except that @file{$cdir} is not searched, since the compilation
24960 directory is not relevant to scripts.
24961
24962 Entries can be placed in section @code{.debug_gdb_scripts} with,
24963 for example, this GCC macro:
24964
24965 @example
24966 /* Note: The "MS" section flags are to remove duplicates. */
24967 #define DEFINE_GDB_SCRIPT(script_name) \
24968 asm("\
24969 .pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\
24970 .byte 1\n\
24971 .asciz \"" script_name "\"\n\
24972 .popsection \n\
24973 ");
24974 @end example
24975
24976 @noindent
24977 Then one can reference the macro in a header or source file like this:
24978
24979 @example
24980 DEFINE_GDB_SCRIPT ("my-app-scripts.py")
24981 @end example
24982
24983 The script name may include directories if desired.
24984
24985 If the macro is put in a header, any application or library
24986 using this header will get a reference to the specified script.
24987
24988 @node Which flavor to choose?
24989 @subsubsection Which flavor to choose?
24990
24991 Given the multiple ways of auto-loading Python scripts, it might not always
24992 be clear which one to choose. This section provides some guidance.
24993
24994 Benefits of the @file{-gdb.py} way:
24995
24996 @itemize @bullet
24997 @item
24998 Can be used with file formats that don't support multiple sections.
24999
25000 @item
25001 Ease of finding scripts for public libraries.
25002
25003 Scripts specified in the @code{.debug_gdb_scripts} section are searched for
25004 in the source search path.
25005 For publicly installed libraries, e.g., @file{libstdc++}, there typically
25006 isn't a source directory in which to find the script.
25007
25008 @item
25009 Doesn't require source code additions.
25010 @end itemize
25011
25012 Benefits of the @code{.debug_gdb_scripts} way:
25013
25014 @itemize @bullet
25015 @item
25016 Works with static linking.
25017
25018 Scripts for libraries done the @file{-gdb.py} way require an objfile to
25019 trigger their loading. When an application is statically linked the only
25020 objfile available is the executable, and it is cumbersome to attach all the
25021 scripts from all the input libraries to the executable's @file{-gdb.py} script.
25022
25023 @item
25024 Works with classes that are entirely inlined.
25025
25026 Some classes can be entirely inlined, and thus there may not be an associated
25027 shared library to attach a @file{-gdb.py} script to.
25028
25029 @item
25030 Scripts needn't be copied out of the source tree.
25031
25032 In some circumstances, apps can be built out of large collections of internal
25033 libraries, and the build infrastructure necessary to install the
25034 @file{-gdb.py} scripts in a place where @value{GDBN} can find them is
25035 cumbersome. It may be easier to specify the scripts in the
25036 @code{.debug_gdb_scripts} section as relative paths, and add a path to the
25037 top of the source tree to the source search path.
25038 @end itemize
25039
25040 @node Python modules
25041 @subsection Python modules
25042 @cindex python modules
25043
25044 @value{GDBN} comes with several modules to assist writing Python code.
25045
25046 @menu
25047 * gdb.printing:: Building and registering pretty-printers.
25048 * gdb.types:: Utilities for working with types.
25049 * gdb.prompt:: Utilities for prompt value substitution.
25050 @end menu
25051
25052 @node gdb.printing
25053 @subsubsection gdb.printing
25054 @cindex gdb.printing
25055
25056 This module provides a collection of utilities for working with
25057 pretty-printers.
25058
25059 @table @code
25060 @item PrettyPrinter (@var{name}, @var{subprinters}=None)
25061 This class specifies the API that makes @samp{info pretty-printer},
25062 @samp{enable pretty-printer} and @samp{disable pretty-printer} work.
25063 Pretty-printers should generally inherit from this class.
25064
25065 @item SubPrettyPrinter (@var{name})
25066 For printers that handle multiple types, this class specifies the
25067 corresponding API for the subprinters.
25068
25069 @item RegexpCollectionPrettyPrinter (@var{name})
25070 Utility class for handling multiple printers, all recognized via
25071 regular expressions.
25072 @xref{Writing a Pretty-Printer}, for an example.
25073
25074 @item FlagEnumerationPrinter (@var{name})
25075 A pretty-printer which handles printing of @code{enum} values. Unlike
25076 @value{GDBN}'s built-in @code{enum} printing, this printer attempts to
25077 work properly when there is some overlap between the enumeration
25078 constants. @var{name} is the name of the printer and also the name of
25079 the @code{enum} type to look up.
25080
25081 @item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
25082 Register @var{printer} with the pretty-printer list of @var{obj}.
25083 If @var{replace} is @code{True} then any existing copy of the printer
25084 is replaced. Otherwise a @code{RuntimeError} exception is raised
25085 if a printer with the same name already exists.
25086 @end table
25087
25088 @node gdb.types
25089 @subsubsection gdb.types
25090 @cindex gdb.types
25091
25092 This module provides a collection of utilities for working with
25093 @code{gdb.Types} objects.
25094
25095 @table @code
25096 @item get_basic_type (@var{type})
25097 Return @var{type} with const and volatile qualifiers stripped,
25098 and with typedefs and C@t{++} references converted to the underlying type.
25099
25100 C@t{++} example:
25101
25102 @smallexample
25103 typedef const int const_int;
25104 const_int foo (3);
25105 const_int& foo_ref (foo);
25106 int main () @{ return 0; @}
25107 @end smallexample
25108
25109 Then in gdb:
25110
25111 @smallexample
25112 (gdb) start
25113 (gdb) python import gdb.types
25114 (gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
25115 (gdb) python print gdb.types.get_basic_type(foo_ref.type)
25116 int
25117 @end smallexample
25118
25119 @item has_field (@var{type}, @var{field})
25120 Return @code{True} if @var{type}, assumed to be a type with fields
25121 (e.g., a structure or union), has field @var{field}.
25122
25123 @item make_enum_dict (@var{enum_type})
25124 Return a Python @code{dictionary} type produced from @var{enum_type}.
25125
25126 @item deep_items (@var{type})
25127 Returns a Python iterator similar to the standard
25128 @code{gdb.Type.iteritems} method, except that the iterator returned
25129 by @code{deep_items} will recursively traverse anonymous struct or
25130 union fields. For example:
25131
25132 @smallexample
25133 struct A
25134 @{
25135 int a;
25136 union @{
25137 int b0;
25138 int b1;
25139 @};
25140 @};
25141 @end smallexample
25142
25143 @noindent
25144 Then in @value{GDBN}:
25145 @smallexample
25146 (@value{GDBP}) python import gdb.types
25147 (@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
25148 (@value{GDBP}) python print struct_a.keys ()
25149 @{['a', '']@}
25150 (@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
25151 @{['a', 'b0', 'b1']@}
25152 @end smallexample
25153
25154 @end table
25155
25156 @node gdb.prompt
25157 @subsubsection gdb.prompt
25158 @cindex gdb.prompt
25159
25160 This module provides a method for prompt value-substitution.
25161
25162 @table @code
25163 @item substitute_prompt (@var{string})
25164 Return @var{string} with escape sequences substituted by values. Some
25165 escape sequences take arguments. You can specify arguments inside
25166 ``@{@}'' immediately following the escape sequence.
25167
25168 The escape sequences you can pass to this function are:
25169
25170 @table @code
25171 @item \\
25172 Substitute a backslash.
25173 @item \e
25174 Substitute an ESC character.
25175 @item \f
25176 Substitute the selected frame; an argument names a frame parameter.
25177 @item \n
25178 Substitute a newline.
25179 @item \p
25180 Substitute a parameter's value; the argument names the parameter.
25181 @item \r
25182 Substitute a carriage return.
25183 @item \t
25184 Substitute the selected thread; an argument names a thread parameter.
25185 @item \v
25186 Substitute the version of GDB.
25187 @item \w
25188 Substitute the current working directory.
25189 @item \[
25190 Begin a sequence of non-printing characters. These sequences are
25191 typically used with the ESC character, and are not counted in the string
25192 length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
25193 blue-colored ``(gdb)'' prompt where the length is five.
25194 @item \]
25195 End a sequence of non-printing characters.
25196 @end table
25197
25198 For example:
25199
25200 @smallexample
25201 substitute_prompt (``frame: \f,
25202 print arguments: \p@{print frame-arguments@}'')
25203 @end smallexample
25204
25205 @exdent will return the string:
25206
25207 @smallexample
25208 "frame: main, print arguments: scalars"
25209 @end smallexample
25210 @end table
25211
25212 @node Aliases
25213 @section Creating new spellings of existing commands
25214 @cindex aliases for commands
25215
25216 It is often useful to define alternate spellings of existing commands.
25217 For example, if a new @value{GDBN} command defined in Python has
25218 a long name to type, it is handy to have an abbreviated version of it
25219 that involves less typing.
25220
25221 @value{GDBN} itself uses aliases. For example @samp{s} is an alias
25222 of the @samp{step} command even though it is otherwise an ambiguous
25223 abbreviation of other commands like @samp{set} and @samp{show}.
25224
25225 Aliases are also used to provide shortened or more common versions
25226 of multi-word commands. For example, @value{GDBN} provides the
25227 @samp{tty} alias of the @samp{set inferior-tty} command.
25228
25229 You can define a new alias with the @samp{alias} command.
25230
25231 @table @code
25232
25233 @kindex alias
25234 @item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
25235
25236 @end table
25237
25238 @var{ALIAS} specifies the name of the new alias.
25239 Each word of @var{ALIAS} must consist of letters, numbers, dashes and
25240 underscores.
25241
25242 @var{COMMAND} specifies the name of an existing command
25243 that is being aliased.
25244
25245 The @samp{-a} option specifies that the new alias is an abbreviation
25246 of the command. Abbreviations are not shown in command
25247 lists displayed by the @samp{help} command.
25248
25249 The @samp{--} option specifies the end of options,
25250 and is useful when @var{ALIAS} begins with a dash.
25251
25252 Here is a simple example showing how to make an abbreviation
25253 of a command so that there is less to type.
25254 Suppose you were tired of typing @samp{disas}, the current
25255 shortest unambiguous abbreviation of the @samp{disassemble} command
25256 and you wanted an even shorter version named @samp{di}.
25257 The following will accomplish this.
25258
25259 @smallexample
25260 (gdb) alias -a di = disas
25261 @end smallexample
25262
25263 Note that aliases are different from user-defined commands.
25264 With a user-defined command, you also need to write documentation
25265 for it with the @samp{document} command.
25266 An alias automatically picks up the documentation of the existing command.
25267
25268 Here is an example where we make @samp{elms} an abbreviation of
25269 @samp{elements} in the @samp{set print elements} command.
25270 This is to show that you can make an abbreviation of any part
25271 of a command.
25272
25273 @smallexample
25274 (gdb) alias -a set print elms = set print elements
25275 (gdb) alias -a show print elms = show print elements
25276 (gdb) set p elms 20
25277 (gdb) show p elms
25278 Limit on string chars or array elements to print is 200.
25279 @end smallexample
25280
25281 Note that if you are defining an alias of a @samp{set} command,
25282 and you want to have an alias for the corresponding @samp{show}
25283 command, then you need to define the latter separately.
25284
25285 Unambiguously abbreviated commands are allowed in @var{COMMAND} and
25286 @var{ALIAS}, just as they are normally.
25287
25288 @smallexample
25289 (gdb) alias -a set pr elms = set p ele
25290 @end smallexample
25291
25292 Finally, here is an example showing the creation of a one word
25293 alias for a more complex command.
25294 This creates alias @samp{spe} of the command @samp{set print elements}.
25295
25296 @smallexample
25297 (gdb) alias spe = set print elements
25298 (gdb) spe 20
25299 @end smallexample
25300
25301 @node Interpreters
25302 @chapter Command Interpreters
25303 @cindex command interpreters
25304
25305 @value{GDBN} supports multiple command interpreters, and some command
25306 infrastructure to allow users or user interface writers to switch
25307 between interpreters or run commands in other interpreters.
25308
25309 @value{GDBN} currently supports two command interpreters, the console
25310 interpreter (sometimes called the command-line interpreter or @sc{cli})
25311 and the machine interface interpreter (or @sc{gdb/mi}). This manual
25312 describes both of these interfaces in great detail.
25313
25314 By default, @value{GDBN} will start with the console interpreter.
25315 However, the user may choose to start @value{GDBN} with another
25316 interpreter by specifying the @option{-i} or @option{--interpreter}
25317 startup options. Defined interpreters include:
25318
25319 @table @code
25320 @item console
25321 @cindex console interpreter
25322 The traditional console or command-line interpreter. This is the most often
25323 used interpreter with @value{GDBN}. With no interpreter specified at runtime,
25324 @value{GDBN} will use this interpreter.
25325
25326 @item mi
25327 @cindex mi interpreter
25328 The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
25329 by programs wishing to use @value{GDBN} as a backend for a debugger GUI
25330 or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
25331 Interface}.
25332
25333 @item mi2
25334 @cindex mi2 interpreter
25335 The current @sc{gdb/mi} interface.
25336
25337 @item mi1
25338 @cindex mi1 interpreter
25339 The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
25340
25341 @end table
25342
25343 @cindex invoke another interpreter
25344 The interpreter being used by @value{GDBN} may not be dynamically
25345 switched at runtime. Although possible, this could lead to a very
25346 precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
25347 enters the command "interpreter-set console" in a console view,
25348 @value{GDBN} would switch to using the console interpreter, rendering
25349 the IDE inoperable!
25350
25351 @kindex interpreter-exec
25352 Although you may only choose a single interpreter at startup, you may execute
25353 commands in any interpreter from the current interpreter using the appropriate
25354 command. If you are running the console interpreter, simply use the
25355 @code{interpreter-exec} command:
25356
25357 @smallexample
25358 interpreter-exec mi "-data-list-register-names"
25359 @end smallexample
25360
25361 @sc{gdb/mi} has a similar command, although it is only available in versions of
25362 @value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
25363
25364 @node TUI
25365 @chapter @value{GDBN} Text User Interface
25366 @cindex TUI
25367 @cindex Text User Interface
25368
25369 @menu
25370 * TUI Overview:: TUI overview
25371 * TUI Keys:: TUI key bindings
25372 * TUI Single Key Mode:: TUI single key mode
25373 * TUI Commands:: TUI-specific commands
25374 * TUI Configuration:: TUI configuration variables
25375 @end menu
25376
25377 The @value{GDBN} Text User Interface (TUI) is a terminal
25378 interface which uses the @code{curses} library to show the source
25379 file, the assembly output, the program registers and @value{GDBN}
25380 commands in separate text windows. The TUI mode is supported only
25381 on platforms where a suitable version of the @code{curses} library
25382 is available.
25383
25384 The TUI mode is enabled by default when you invoke @value{GDBN} as
25385 @samp{@value{GDBP} -tui}.
25386 You can also switch in and out of TUI mode while @value{GDBN} runs by
25387 using various TUI commands and key bindings, such as @kbd{C-x C-a}.
25388 @xref{TUI Keys, ,TUI Key Bindings}.
25389
25390 @node TUI Overview
25391 @section TUI Overview
25392
25393 In TUI mode, @value{GDBN} can display several text windows:
25394
25395 @table @emph
25396 @item command
25397 This window is the @value{GDBN} command window with the @value{GDBN}
25398 prompt and the @value{GDBN} output. The @value{GDBN} input is still
25399 managed using readline.
25400
25401 @item source
25402 The source window shows the source file of the program. The current
25403 line and active breakpoints are displayed in this window.
25404
25405 @item assembly
25406 The assembly window shows the disassembly output of the program.
25407
25408 @item register
25409 This window shows the processor registers. Registers are highlighted
25410 when their values change.
25411 @end table
25412
25413 The source and assembly windows show the current program position
25414 by highlighting the current line and marking it with a @samp{>} marker.
25415 Breakpoints are indicated with two markers. The first marker
25416 indicates the breakpoint type:
25417
25418 @table @code
25419 @item B
25420 Breakpoint which was hit at least once.
25421
25422 @item b
25423 Breakpoint which was never hit.
25424
25425 @item H
25426 Hardware breakpoint which was hit at least once.
25427
25428 @item h
25429 Hardware breakpoint which was never hit.
25430 @end table
25431
25432 The second marker indicates whether the breakpoint is enabled or not:
25433
25434 @table @code
25435 @item +
25436 Breakpoint is enabled.
25437
25438 @item -
25439 Breakpoint is disabled.
25440 @end table
25441
25442 The source, assembly and register windows are updated when the current
25443 thread changes, when the frame changes, or when the program counter
25444 changes.
25445
25446 These windows are not all visible at the same time. The command
25447 window is always visible. The others can be arranged in several
25448 layouts:
25449
25450 @itemize @bullet
25451 @item
25452 source only,
25453
25454 @item
25455 assembly only,
25456
25457 @item
25458 source and assembly,
25459
25460 @item
25461 source and registers, or
25462
25463 @item
25464 assembly and registers.
25465 @end itemize
25466
25467 A status line above the command window shows the following information:
25468
25469 @table @emph
25470 @item target
25471 Indicates the current @value{GDBN} target.
25472 (@pxref{Targets, ,Specifying a Debugging Target}).
25473
25474 @item process
25475 Gives the current process or thread number.
25476 When no process is being debugged, this field is set to @code{No process}.
25477
25478 @item function
25479 Gives the current function name for the selected frame.
25480 The name is demangled if demangling is turned on (@pxref{Print Settings}).
25481 When there is no symbol corresponding to the current program counter,
25482 the string @code{??} is displayed.
25483
25484 @item line
25485 Indicates the current line number for the selected frame.
25486 When the current line number is not known, the string @code{??} is displayed.
25487
25488 @item pc
25489 Indicates the current program counter address.
25490 @end table
25491
25492 @node TUI Keys
25493 @section TUI Key Bindings
25494 @cindex TUI key bindings
25495
25496 The TUI installs several key bindings in the readline keymaps
25497 @ifset SYSTEM_READLINE
25498 (@pxref{Command Line Editing, , , rluserman, GNU Readline Library}).
25499 @end ifset
25500 @ifclear SYSTEM_READLINE
25501 (@pxref{Command Line Editing}).
25502 @end ifclear
25503 The following key bindings are installed for both TUI mode and the
25504 @value{GDBN} standard mode.
25505
25506 @table @kbd
25507 @kindex C-x C-a
25508 @item C-x C-a
25509 @kindex C-x a
25510 @itemx C-x a
25511 @kindex C-x A
25512 @itemx C-x A
25513 Enter or leave the TUI mode. When leaving the TUI mode,
25514 the curses window management stops and @value{GDBN} operates using
25515 its standard mode, writing on the terminal directly. When reentering
25516 the TUI mode, control is given back to the curses windows.
25517 The screen is then refreshed.
25518
25519 @kindex C-x 1
25520 @item C-x 1
25521 Use a TUI layout with only one window. The layout will
25522 either be @samp{source} or @samp{assembly}. When the TUI mode
25523 is not active, it will switch to the TUI mode.
25524
25525 Think of this key binding as the Emacs @kbd{C-x 1} binding.
25526
25527 @kindex C-x 2
25528 @item C-x 2
25529 Use a TUI layout with at least two windows. When the current
25530 layout already has two windows, the next layout with two windows is used.
25531 When a new layout is chosen, one window will always be common to the
25532 previous layout and the new one.
25533
25534 Think of it as the Emacs @kbd{C-x 2} binding.
25535
25536 @kindex C-x o
25537 @item C-x o
25538 Change the active window. The TUI associates several key bindings
25539 (like scrolling and arrow keys) with the active window. This command
25540 gives the focus to the next TUI window.
25541
25542 Think of it as the Emacs @kbd{C-x o} binding.
25543
25544 @kindex C-x s
25545 @item C-x s
25546 Switch in and out of the TUI SingleKey mode that binds single
25547 keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
25548 @end table
25549
25550 The following key bindings only work in the TUI mode:
25551
25552 @table @asis
25553 @kindex PgUp
25554 @item @key{PgUp}
25555 Scroll the active window one page up.
25556
25557 @kindex PgDn
25558 @item @key{PgDn}
25559 Scroll the active window one page down.
25560
25561 @kindex Up
25562 @item @key{Up}
25563 Scroll the active window one line up.
25564
25565 @kindex Down
25566 @item @key{Down}
25567 Scroll the active window one line down.
25568
25569 @kindex Left
25570 @item @key{Left}
25571 Scroll the active window one column left.
25572
25573 @kindex Right
25574 @item @key{Right}
25575 Scroll the active window one column right.
25576
25577 @kindex C-L
25578 @item @kbd{C-L}
25579 Refresh the screen.
25580 @end table
25581
25582 Because the arrow keys scroll the active window in the TUI mode, they
25583 are not available for their normal use by readline unless the command
25584 window has the focus. When another window is active, you must use
25585 other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
25586 and @kbd{C-f} to control the command window.
25587
25588 @node TUI Single Key Mode
25589 @section TUI Single Key Mode
25590 @cindex TUI single key mode
25591
25592 The TUI also provides a @dfn{SingleKey} mode, which binds several
25593 frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
25594 switch into this mode, where the following key bindings are used:
25595
25596 @table @kbd
25597 @kindex c @r{(SingleKey TUI key)}
25598 @item c
25599 continue
25600
25601 @kindex d @r{(SingleKey TUI key)}
25602 @item d
25603 down
25604
25605 @kindex f @r{(SingleKey TUI key)}
25606 @item f
25607 finish
25608
25609 @kindex n @r{(SingleKey TUI key)}
25610 @item n
25611 next
25612
25613 @kindex q @r{(SingleKey TUI key)}
25614 @item q
25615 exit the SingleKey mode.
25616
25617 @kindex r @r{(SingleKey TUI key)}
25618 @item r
25619 run
25620
25621 @kindex s @r{(SingleKey TUI key)}
25622 @item s
25623 step
25624
25625 @kindex u @r{(SingleKey TUI key)}
25626 @item u
25627 up
25628
25629 @kindex v @r{(SingleKey TUI key)}
25630 @item v
25631 info locals
25632
25633 @kindex w @r{(SingleKey TUI key)}
25634 @item w
25635 where
25636 @end table
25637
25638 Other keys temporarily switch to the @value{GDBN} command prompt.
25639 The key that was pressed is inserted in the editing buffer so that
25640 it is possible to type most @value{GDBN} commands without interaction
25641 with the TUI SingleKey mode. Once the command is entered the TUI
25642 SingleKey mode is restored. The only way to permanently leave
25643 this mode is by typing @kbd{q} or @kbd{C-x s}.
25644
25645
25646 @node TUI Commands
25647 @section TUI-specific Commands
25648 @cindex TUI commands
25649
25650 The TUI has specific commands to control the text windows.
25651 These commands are always available, even when @value{GDBN} is not in
25652 the TUI mode. When @value{GDBN} is in the standard mode, most
25653 of these commands will automatically switch to the TUI mode.
25654
25655 Note that if @value{GDBN}'s @code{stdout} is not connected to a
25656 terminal, or @value{GDBN} has been started with the machine interface
25657 interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
25658 these commands will fail with an error, because it would not be
25659 possible or desirable to enable curses window management.
25660
25661 @table @code
25662 @item info win
25663 @kindex info win
25664 List and give the size of all displayed windows.
25665
25666 @item layout next
25667 @kindex layout
25668 Display the next layout.
25669
25670 @item layout prev
25671 Display the previous layout.
25672
25673 @item layout src
25674 Display the source window only.
25675
25676 @item layout asm
25677 Display the assembly window only.
25678
25679 @item layout split
25680 Display the source and assembly window.
25681
25682 @item layout regs
25683 Display the register window together with the source or assembly window.
25684
25685 @item focus next
25686 @kindex focus
25687 Make the next window active for scrolling.
25688
25689 @item focus prev
25690 Make the previous window active for scrolling.
25691
25692 @item focus src
25693 Make the source window active for scrolling.
25694
25695 @item focus asm
25696 Make the assembly window active for scrolling.
25697
25698 @item focus regs
25699 Make the register window active for scrolling.
25700
25701 @item focus cmd
25702 Make the command window active for scrolling.
25703
25704 @item refresh
25705 @kindex refresh
25706 Refresh the screen. This is similar to typing @kbd{C-L}.
25707
25708 @item tui reg float
25709 @kindex tui reg
25710 Show the floating point registers in the register window.
25711
25712 @item tui reg general
25713 Show the general registers in the register window.
25714
25715 @item tui reg next
25716 Show the next register group. The list of register groups as well as
25717 their order is target specific. The predefined register groups are the
25718 following: @code{general}, @code{float}, @code{system}, @code{vector},
25719 @code{all}, @code{save}, @code{restore}.
25720
25721 @item tui reg system
25722 Show the system registers in the register window.
25723
25724 @item update
25725 @kindex update
25726 Update the source window and the current execution point.
25727
25728 @item winheight @var{name} +@var{count}
25729 @itemx winheight @var{name} -@var{count}
25730 @kindex winheight
25731 Change the height of the window @var{name} by @var{count}
25732 lines. Positive counts increase the height, while negative counts
25733 decrease it.
25734
25735 @item tabset @var{nchars}
25736 @kindex tabset
25737 Set the width of tab stops to be @var{nchars} characters.
25738 @end table
25739
25740 @node TUI Configuration
25741 @section TUI Configuration Variables
25742 @cindex TUI configuration variables
25743
25744 Several configuration variables control the appearance of TUI windows.
25745
25746 @table @code
25747 @item set tui border-kind @var{kind}
25748 @kindex set tui border-kind
25749 Select the border appearance for the source, assembly and register windows.
25750 The possible values are the following:
25751 @table @code
25752 @item space
25753 Use a space character to draw the border.
25754
25755 @item ascii
25756 Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
25757
25758 @item acs
25759 Use the Alternate Character Set to draw the border. The border is
25760 drawn using character line graphics if the terminal supports them.
25761 @end table
25762
25763 @item set tui border-mode @var{mode}
25764 @kindex set tui border-mode
25765 @itemx set tui active-border-mode @var{mode}
25766 @kindex set tui active-border-mode
25767 Select the display attributes for the borders of the inactive windows
25768 or the active window. The @var{mode} can be one of the following:
25769 @table @code
25770 @item normal
25771 Use normal attributes to display the border.
25772
25773 @item standout
25774 Use standout mode.
25775
25776 @item reverse
25777 Use reverse video mode.
25778
25779 @item half
25780 Use half bright mode.
25781
25782 @item half-standout
25783 Use half bright and standout mode.
25784
25785 @item bold
25786 Use extra bright or bold mode.
25787
25788 @item bold-standout
25789 Use extra bright or bold and standout mode.
25790 @end table
25791 @end table
25792
25793 @node Emacs
25794 @chapter Using @value{GDBN} under @sc{gnu} Emacs
25795
25796 @cindex Emacs
25797 @cindex @sc{gnu} Emacs
25798 A special interface allows you to use @sc{gnu} Emacs to view (and
25799 edit) the source files for the program you are debugging with
25800 @value{GDBN}.
25801
25802 To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
25803 executable file you want to debug as an argument. This command starts
25804 @value{GDBN} as a subprocess of Emacs, with input and output through a newly
25805 created Emacs buffer.
25806 @c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
25807
25808 Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
25809 things:
25810
25811 @itemize @bullet
25812 @item
25813 All ``terminal'' input and output goes through an Emacs buffer, called
25814 the GUD buffer.
25815
25816 This applies both to @value{GDBN} commands and their output, and to the input
25817 and output done by the program you are debugging.
25818
25819 This is useful because it means that you can copy the text of previous
25820 commands and input them again; you can even use parts of the output
25821 in this way.
25822
25823 All the facilities of Emacs' Shell mode are available for interacting
25824 with your program. In particular, you can send signals the usual
25825 way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
25826 stop.
25827
25828 @item
25829 @value{GDBN} displays source code through Emacs.
25830
25831 Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
25832 source file for that frame and puts an arrow (@samp{=>}) at the
25833 left margin of the current line. Emacs uses a separate buffer for
25834 source display, and splits the screen to show both your @value{GDBN} session
25835 and the source.
25836
25837 Explicit @value{GDBN} @code{list} or search commands still produce output as
25838 usual, but you probably have no reason to use them from Emacs.
25839 @end itemize
25840
25841 We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
25842 a graphical mode, enabled by default, which provides further buffers
25843 that can control the execution and describe the state of your program.
25844 @xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
25845
25846 If you specify an absolute file name when prompted for the @kbd{M-x
25847 gdb} argument, then Emacs sets your current working directory to where
25848 your program resides. If you only specify the file name, then Emacs
25849 sets your current working directory to the directory associated
25850 with the previous buffer. In this case, @value{GDBN} may find your
25851 program by searching your environment's @code{PATH} variable, but on
25852 some operating systems it might not find the source. So, although the
25853 @value{GDBN} input and output session proceeds normally, the auxiliary
25854 buffer does not display the current source and line of execution.
25855
25856 The initial working directory of @value{GDBN} is printed on the top
25857 line of the GUD buffer and this serves as a default for the commands
25858 that specify files for @value{GDBN} to operate on. @xref{Files,
25859 ,Commands to Specify Files}.
25860
25861 By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
25862 need to call @value{GDBN} by a different name (for example, if you
25863 keep several configurations around, with different names) you can
25864 customize the Emacs variable @code{gud-gdb-command-name} to run the
25865 one you want.
25866
25867 In the GUD buffer, you can use these special Emacs commands in
25868 addition to the standard Shell mode commands:
25869
25870 @table @kbd
25871 @item C-h m
25872 Describe the features of Emacs' GUD Mode.
25873
25874 @item C-c C-s
25875 Execute to another source line, like the @value{GDBN} @code{step} command; also
25876 update the display window to show the current file and location.
25877
25878 @item C-c C-n
25879 Execute to next source line in this function, skipping all function
25880 calls, like the @value{GDBN} @code{next} command. Then update the display window
25881 to show the current file and location.
25882
25883 @item C-c C-i
25884 Execute one instruction, like the @value{GDBN} @code{stepi} command; update
25885 display window accordingly.
25886
25887 @item C-c C-f
25888 Execute until exit from the selected stack frame, like the @value{GDBN}
25889 @code{finish} command.
25890
25891 @item C-c C-r
25892 Continue execution of your program, like the @value{GDBN} @code{continue}
25893 command.
25894
25895 @item C-c <
25896 Go up the number of frames indicated by the numeric argument
25897 (@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
25898 like the @value{GDBN} @code{up} command.
25899
25900 @item C-c >
25901 Go down the number of frames indicated by the numeric argument, like the
25902 @value{GDBN} @code{down} command.
25903 @end table
25904
25905 In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
25906 tells @value{GDBN} to set a breakpoint on the source line point is on.
25907
25908 In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
25909 separate frame which shows a backtrace when the GUD buffer is current.
25910 Move point to any frame in the stack and type @key{RET} to make it
25911 become the current frame and display the associated source in the
25912 source buffer. Alternatively, click @kbd{Mouse-2} to make the
25913 selected frame become the current one. In graphical mode, the
25914 speedbar displays watch expressions.
25915
25916 If you accidentally delete the source-display buffer, an easy way to get
25917 it back is to type the command @code{f} in the @value{GDBN} buffer, to
25918 request a frame display; when you run under Emacs, this recreates
25919 the source buffer if necessary to show you the context of the current
25920 frame.
25921
25922 The source files displayed in Emacs are in ordinary Emacs buffers
25923 which are visiting the source files in the usual way. You can edit
25924 the files with these buffers if you wish; but keep in mind that @value{GDBN}
25925 communicates with Emacs in terms of line numbers. If you add or
25926 delete lines from the text, the line numbers that @value{GDBN} knows cease
25927 to correspond properly with the code.
25928
25929 A more detailed description of Emacs' interaction with @value{GDBN} is
25930 given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
25931 Emacs Manual}).
25932
25933 @c The following dropped because Epoch is nonstandard. Reactivate
25934 @c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
25935 @ignore
25936 @kindex Emacs Epoch environment
25937 @kindex Epoch
25938 @kindex inspect
25939
25940 Version 18 of @sc{gnu} Emacs has a built-in window system
25941 called the @code{epoch}
25942 environment. Users of this environment can use a new command,
25943 @code{inspect} which performs identically to @code{print} except that
25944 each value is printed in its own window.
25945 @end ignore
25946
25947
25948 @node GDB/MI
25949 @chapter The @sc{gdb/mi} Interface
25950
25951 @unnumberedsec Function and Purpose
25952
25953 @cindex @sc{gdb/mi}, its purpose
25954 @sc{gdb/mi} is a line based machine oriented text interface to
25955 @value{GDBN} and is activated by specifying using the
25956 @option{--interpreter} command line option (@pxref{Mode Options}). It
25957 is specifically intended to support the development of systems which
25958 use the debugger as just one small component of a larger system.
25959
25960 This chapter is a specification of the @sc{gdb/mi} interface. It is written
25961 in the form of a reference manual.
25962
25963 Note that @sc{gdb/mi} is still under construction, so some of the
25964 features described below are incomplete and subject to change
25965 (@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
25966
25967 @unnumberedsec Notation and Terminology
25968
25969 @cindex notational conventions, for @sc{gdb/mi}
25970 This chapter uses the following notation:
25971
25972 @itemize @bullet
25973 @item
25974 @code{|} separates two alternatives.
25975
25976 @item
25977 @code{[ @var{something} ]} indicates that @var{something} is optional:
25978 it may or may not be given.
25979
25980 @item
25981 @code{( @var{group} )*} means that @var{group} inside the parentheses
25982 may repeat zero or more times.
25983
25984 @item
25985 @code{( @var{group} )+} means that @var{group} inside the parentheses
25986 may repeat one or more times.
25987
25988 @item
25989 @code{"@var{string}"} means a literal @var{string}.
25990 @end itemize
25991
25992 @ignore
25993 @heading Dependencies
25994 @end ignore
25995
25996 @menu
25997 * GDB/MI General Design::
25998 * GDB/MI Command Syntax::
25999 * GDB/MI Compatibility with CLI::
26000 * GDB/MI Development and Front Ends::
26001 * GDB/MI Output Records::
26002 * GDB/MI Simple Examples::
26003 * GDB/MI Command Description Format::
26004 * GDB/MI Breakpoint Commands::
26005 * GDB/MI Program Context::
26006 * GDB/MI Thread Commands::
26007 * GDB/MI Ada Tasking Commands::
26008 * GDB/MI Program Execution::
26009 * GDB/MI Stack Manipulation::
26010 * GDB/MI Variable Objects::
26011 * GDB/MI Data Manipulation::
26012 * GDB/MI Tracepoint Commands::
26013 * GDB/MI Symbol Query::
26014 * GDB/MI File Commands::
26015 @ignore
26016 * GDB/MI Kod Commands::
26017 * GDB/MI Memory Overlay Commands::
26018 * GDB/MI Signal Handling Commands::
26019 @end ignore
26020 * GDB/MI Target Manipulation::
26021 * GDB/MI File Transfer Commands::
26022 * GDB/MI Miscellaneous Commands::
26023 @end menu
26024
26025 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26026 @node GDB/MI General Design
26027 @section @sc{gdb/mi} General Design
26028 @cindex GDB/MI General Design
26029
26030 Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
26031 parts---commands sent to @value{GDBN}, responses to those commands
26032 and notifications. Each command results in exactly one response,
26033 indicating either successful completion of the command, or an error.
26034 For the commands that do not resume the target, the response contains the
26035 requested information. For the commands that resume the target, the
26036 response only indicates whether the target was successfully resumed.
26037 Notifications is the mechanism for reporting changes in the state of the
26038 target, or in @value{GDBN} state, that cannot conveniently be associated with
26039 a command and reported as part of that command response.
26040
26041 The important examples of notifications are:
26042 @itemize @bullet
26043
26044 @item
26045 Exec notifications. These are used to report changes in
26046 target state---when a target is resumed, or stopped. It would not
26047 be feasible to include this information in response of resuming
26048 commands, because one resume commands can result in multiple events in
26049 different threads. Also, quite some time may pass before any event
26050 happens in the target, while a frontend needs to know whether the resuming
26051 command itself was successfully executed.
26052
26053 @item
26054 Console output, and status notifications. Console output
26055 notifications are used to report output of CLI commands, as well as
26056 diagnostics for other commands. Status notifications are used to
26057 report the progress of a long-running operation. Naturally, including
26058 this information in command response would mean no output is produced
26059 until the command is finished, which is undesirable.
26060
26061 @item
26062 General notifications. Commands may have various side effects on
26063 the @value{GDBN} or target state beyond their official purpose. For example,
26064 a command may change the selected thread. Although such changes can
26065 be included in command response, using notification allows for more
26066 orthogonal frontend design.
26067
26068 @end itemize
26069
26070 There's no guarantee that whenever an MI command reports an error,
26071 @value{GDBN} or the target are in any specific state, and especially,
26072 the state is not reverted to the state before the MI command was
26073 processed. Therefore, whenever an MI command results in an error,
26074 we recommend that the frontend refreshes all the information shown in
26075 the user interface.
26076
26077
26078 @menu
26079 * Context management::
26080 * Asynchronous and non-stop modes::
26081 * Thread groups::
26082 @end menu
26083
26084 @node Context management
26085 @subsection Context management
26086
26087 In most cases when @value{GDBN} accesses the target, this access is
26088 done in context of a specific thread and frame (@pxref{Frames}).
26089 Often, even when accessing global data, the target requires that a thread
26090 be specified. The CLI interface maintains the selected thread and frame,
26091 and supplies them to target on each command. This is convenient,
26092 because a command line user would not want to specify that information
26093 explicitly on each command, and because user interacts with
26094 @value{GDBN} via a single terminal, so no confusion is possible as
26095 to what thread and frame are the current ones.
26096
26097 In the case of MI, the concept of selected thread and frame is less
26098 useful. First, a frontend can easily remember this information
26099 itself. Second, a graphical frontend can have more than one window,
26100 each one used for debugging a different thread, and the frontend might
26101 want to access additional threads for internal purposes. This
26102 increases the risk that by relying on implicitly selected thread, the
26103 frontend may be operating on a wrong one. Therefore, each MI command
26104 should explicitly specify which thread and frame to operate on. To
26105 make it possible, each MI command accepts the @samp{--thread} and
26106 @samp{--frame} options, the value to each is @value{GDBN} identifier
26107 for thread and frame to operate on.
26108
26109 Usually, each top-level window in a frontend allows the user to select
26110 a thread and a frame, and remembers the user selection for further
26111 operations. However, in some cases @value{GDBN} may suggest that the
26112 current thread be changed. For example, when stopping on a breakpoint
26113 it is reasonable to switch to the thread where breakpoint is hit. For
26114 another example, if the user issues the CLI @samp{thread} command via
26115 the frontend, it is desirable to change the frontend's selected thread to the
26116 one specified by user. @value{GDBN} communicates the suggestion to
26117 change current thread using the @samp{=thread-selected} notification.
26118 No such notification is available for the selected frame at the moment.
26119
26120 Note that historically, MI shares the selected thread with CLI, so
26121 frontends used the @code{-thread-select} to execute commands in the
26122 right context. However, getting this to work right is cumbersome. The
26123 simplest way is for frontend to emit @code{-thread-select} command
26124 before every command. This doubles the number of commands that need
26125 to be sent. The alternative approach is to suppress @code{-thread-select}
26126 if the selected thread in @value{GDBN} is supposed to be identical to the
26127 thread the frontend wants to operate on. However, getting this
26128 optimization right can be tricky. In particular, if the frontend
26129 sends several commands to @value{GDBN}, and one of the commands changes the
26130 selected thread, then the behaviour of subsequent commands will
26131 change. So, a frontend should either wait for response from such
26132 problematic commands, or explicitly add @code{-thread-select} for
26133 all subsequent commands. No frontend is known to do this exactly
26134 right, so it is suggested to just always pass the @samp{--thread} and
26135 @samp{--frame} options.
26136
26137 @node Asynchronous and non-stop modes
26138 @subsection Asynchronous command execution and non-stop mode
26139
26140 On some targets, @value{GDBN} is capable of processing MI commands
26141 even while the target is running. This is called @dfn{asynchronous
26142 command execution} (@pxref{Background Execution}). The frontend may
26143 specify a preferrence for asynchronous execution using the
26144 @code{-gdb-set target-async 1} command, which should be emitted before
26145 either running the executable or attaching to the target. After the
26146 frontend has started the executable or attached to the target, it can
26147 find if asynchronous execution is enabled using the
26148 @code{-list-target-features} command.
26149
26150 Even if @value{GDBN} can accept a command while target is running,
26151 many commands that access the target do not work when the target is
26152 running. Therefore, asynchronous command execution is most useful
26153 when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
26154 it is possible to examine the state of one thread, while other threads
26155 are running.
26156
26157 When a given thread is running, MI commands that try to access the
26158 target in the context of that thread may not work, or may work only on
26159 some targets. In particular, commands that try to operate on thread's
26160 stack will not work, on any target. Commands that read memory, or
26161 modify breakpoints, may work or not work, depending on the target. Note
26162 that even commands that operate on global state, such as @code{print},
26163 @code{set}, and breakpoint commands, still access the target in the
26164 context of a specific thread, so frontend should try to find a
26165 stopped thread and perform the operation on that thread (using the
26166 @samp{--thread} option).
26167
26168 Which commands will work in the context of a running thread is
26169 highly target dependent. However, the two commands
26170 @code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
26171 to find the state of a thread, will always work.
26172
26173 @node Thread groups
26174 @subsection Thread groups
26175 @value{GDBN} may be used to debug several processes at the same time.
26176 On some platfroms, @value{GDBN} may support debugging of several
26177 hardware systems, each one having several cores with several different
26178 processes running on each core. This section describes the MI
26179 mechanism to support such debugging scenarios.
26180
26181 The key observation is that regardless of the structure of the
26182 target, MI can have a global list of threads, because most commands that
26183 accept the @samp{--thread} option do not need to know what process that
26184 thread belongs to. Therefore, it is not necessary to introduce
26185 neither additional @samp{--process} option, nor an notion of the
26186 current process in the MI interface. The only strictly new feature
26187 that is required is the ability to find how the threads are grouped
26188 into processes.
26189
26190 To allow the user to discover such grouping, and to support arbitrary
26191 hierarchy of machines/cores/processes, MI introduces the concept of a
26192 @dfn{thread group}. Thread group is a collection of threads and other
26193 thread groups. A thread group always has a string identifier, a type,
26194 and may have additional attributes specific to the type. A new
26195 command, @code{-list-thread-groups}, returns the list of top-level
26196 thread groups, which correspond to processes that @value{GDBN} is
26197 debugging at the moment. By passing an identifier of a thread group
26198 to the @code{-list-thread-groups} command, it is possible to obtain
26199 the members of specific thread group.
26200
26201 To allow the user to easily discover processes, and other objects, he
26202 wishes to debug, a concept of @dfn{available thread group} is
26203 introduced. Available thread group is an thread group that
26204 @value{GDBN} is not debugging, but that can be attached to, using the
26205 @code{-target-attach} command. The list of available top-level thread
26206 groups can be obtained using @samp{-list-thread-groups --available}.
26207 In general, the content of a thread group may be only retrieved only
26208 after attaching to that thread group.
26209
26210 Thread groups are related to inferiors (@pxref{Inferiors and
26211 Programs}). Each inferior corresponds to a thread group of a special
26212 type @samp{process}, and some additional operations are permitted on
26213 such thread groups.
26214
26215 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26216 @node GDB/MI Command Syntax
26217 @section @sc{gdb/mi} Command Syntax
26218
26219 @menu
26220 * GDB/MI Input Syntax::
26221 * GDB/MI Output Syntax::
26222 @end menu
26223
26224 @node GDB/MI Input Syntax
26225 @subsection @sc{gdb/mi} Input Syntax
26226
26227 @cindex input syntax for @sc{gdb/mi}
26228 @cindex @sc{gdb/mi}, input syntax
26229 @table @code
26230 @item @var{command} @expansion{}
26231 @code{@var{cli-command} | @var{mi-command}}
26232
26233 @item @var{cli-command} @expansion{}
26234 @code{[ @var{token} ] @var{cli-command} @var{nl}}, where
26235 @var{cli-command} is any existing @value{GDBN} CLI command.
26236
26237 @item @var{mi-command} @expansion{}
26238 @code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
26239 @code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
26240
26241 @item @var{token} @expansion{}
26242 "any sequence of digits"
26243
26244 @item @var{option} @expansion{}
26245 @code{"-" @var{parameter} [ " " @var{parameter} ]}
26246
26247 @item @var{parameter} @expansion{}
26248 @code{@var{non-blank-sequence} | @var{c-string}}
26249
26250 @item @var{operation} @expansion{}
26251 @emph{any of the operations described in this chapter}
26252
26253 @item @var{non-blank-sequence} @expansion{}
26254 @emph{anything, provided it doesn't contain special characters such as
26255 "-", @var{nl}, """ and of course " "}
26256
26257 @item @var{c-string} @expansion{}
26258 @code{""" @var{seven-bit-iso-c-string-content} """}
26259
26260 @item @var{nl} @expansion{}
26261 @code{CR | CR-LF}
26262 @end table
26263
26264 @noindent
26265 Notes:
26266
26267 @itemize @bullet
26268 @item
26269 The CLI commands are still handled by the @sc{mi} interpreter; their
26270 output is described below.
26271
26272 @item
26273 The @code{@var{token}}, when present, is passed back when the command
26274 finishes.
26275
26276 @item
26277 Some @sc{mi} commands accept optional arguments as part of the parameter
26278 list. Each option is identified by a leading @samp{-} (dash) and may be
26279 followed by an optional argument parameter. Options occur first in the
26280 parameter list and can be delimited from normal parameters using
26281 @samp{--} (this is useful when some parameters begin with a dash).
26282 @end itemize
26283
26284 Pragmatics:
26285
26286 @itemize @bullet
26287 @item
26288 We want easy access to the existing CLI syntax (for debugging).
26289
26290 @item
26291 We want it to be easy to spot a @sc{mi} operation.
26292 @end itemize
26293
26294 @node GDB/MI Output Syntax
26295 @subsection @sc{gdb/mi} Output Syntax
26296
26297 @cindex output syntax of @sc{gdb/mi}
26298 @cindex @sc{gdb/mi}, output syntax
26299 The output from @sc{gdb/mi} consists of zero or more out-of-band records
26300 followed, optionally, by a single result record. This result record
26301 is for the most recent command. The sequence of output records is
26302 terminated by @samp{(gdb)}.
26303
26304 If an input command was prefixed with a @code{@var{token}} then the
26305 corresponding output for that command will also be prefixed by that same
26306 @var{token}.
26307
26308 @table @code
26309 @item @var{output} @expansion{}
26310 @code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
26311
26312 @item @var{result-record} @expansion{}
26313 @code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
26314
26315 @item @var{out-of-band-record} @expansion{}
26316 @code{@var{async-record} | @var{stream-record}}
26317
26318 @item @var{async-record} @expansion{}
26319 @code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
26320
26321 @item @var{exec-async-output} @expansion{}
26322 @code{[ @var{token} ] "*" @var{async-output}}
26323
26324 @item @var{status-async-output} @expansion{}
26325 @code{[ @var{token} ] "+" @var{async-output}}
26326
26327 @item @var{notify-async-output} @expansion{}
26328 @code{[ @var{token} ] "=" @var{async-output}}
26329
26330 @item @var{async-output} @expansion{}
26331 @code{@var{async-class} ( "," @var{result} )* @var{nl}}
26332
26333 @item @var{result-class} @expansion{}
26334 @code{"done" | "running" | "connected" | "error" | "exit"}
26335
26336 @item @var{async-class} @expansion{}
26337 @code{"stopped" | @var{others}} (where @var{others} will be added
26338 depending on the needs---this is still in development).
26339
26340 @item @var{result} @expansion{}
26341 @code{ @var{variable} "=" @var{value}}
26342
26343 @item @var{variable} @expansion{}
26344 @code{ @var{string} }
26345
26346 @item @var{value} @expansion{}
26347 @code{ @var{const} | @var{tuple} | @var{list} }
26348
26349 @item @var{const} @expansion{}
26350 @code{@var{c-string}}
26351
26352 @item @var{tuple} @expansion{}
26353 @code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
26354
26355 @item @var{list} @expansion{}
26356 @code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
26357 @var{result} ( "," @var{result} )* "]" }
26358
26359 @item @var{stream-record} @expansion{}
26360 @code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
26361
26362 @item @var{console-stream-output} @expansion{}
26363 @code{"~" @var{c-string}}
26364
26365 @item @var{target-stream-output} @expansion{}
26366 @code{"@@" @var{c-string}}
26367
26368 @item @var{log-stream-output} @expansion{}
26369 @code{"&" @var{c-string}}
26370
26371 @item @var{nl} @expansion{}
26372 @code{CR | CR-LF}
26373
26374 @item @var{token} @expansion{}
26375 @emph{any sequence of digits}.
26376 @end table
26377
26378 @noindent
26379 Notes:
26380
26381 @itemize @bullet
26382 @item
26383 All output sequences end in a single line containing a period.
26384
26385 @item
26386 The @code{@var{token}} is from the corresponding request. Note that
26387 for all async output, while the token is allowed by the grammar and
26388 may be output by future versions of @value{GDBN} for select async
26389 output messages, it is generally omitted. Frontends should treat
26390 all async output as reporting general changes in the state of the
26391 target and there should be no need to associate async output to any
26392 prior command.
26393
26394 @item
26395 @cindex status output in @sc{gdb/mi}
26396 @var{status-async-output} contains on-going status information about the
26397 progress of a slow operation. It can be discarded. All status output is
26398 prefixed by @samp{+}.
26399
26400 @item
26401 @cindex async output in @sc{gdb/mi}
26402 @var{exec-async-output} contains asynchronous state change on the target
26403 (stopped, started, disappeared). All async output is prefixed by
26404 @samp{*}.
26405
26406 @item
26407 @cindex notify output in @sc{gdb/mi}
26408 @var{notify-async-output} contains supplementary information that the
26409 client should handle (e.g., a new breakpoint information). All notify
26410 output is prefixed by @samp{=}.
26411
26412 @item
26413 @cindex console output in @sc{gdb/mi}
26414 @var{console-stream-output} is output that should be displayed as is in the
26415 console. It is the textual response to a CLI command. All the console
26416 output is prefixed by @samp{~}.
26417
26418 @item
26419 @cindex target output in @sc{gdb/mi}
26420 @var{target-stream-output} is the output produced by the target program.
26421 All the target output is prefixed by @samp{@@}.
26422
26423 @item
26424 @cindex log output in @sc{gdb/mi}
26425 @var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
26426 instance messages that should be displayed as part of an error log. All
26427 the log output is prefixed by @samp{&}.
26428
26429 @item
26430 @cindex list output in @sc{gdb/mi}
26431 New @sc{gdb/mi} commands should only output @var{lists} containing
26432 @var{values}.
26433
26434
26435 @end itemize
26436
26437 @xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
26438 details about the various output records.
26439
26440 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26441 @node GDB/MI Compatibility with CLI
26442 @section @sc{gdb/mi} Compatibility with CLI
26443
26444 @cindex compatibility, @sc{gdb/mi} and CLI
26445 @cindex @sc{gdb/mi}, compatibility with CLI
26446
26447 For the developers convenience CLI commands can be entered directly,
26448 but there may be some unexpected behaviour. For example, commands
26449 that query the user will behave as if the user replied yes, breakpoint
26450 command lists are not executed and some CLI commands, such as
26451 @code{if}, @code{when} and @code{define}, prompt for further input with
26452 @samp{>}, which is not valid MI output.
26453
26454 This feature may be removed at some stage in the future and it is
26455 recommended that front ends use the @code{-interpreter-exec} command
26456 (@pxref{-interpreter-exec}).
26457
26458 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26459 @node GDB/MI Development and Front Ends
26460 @section @sc{gdb/mi} Development and Front Ends
26461 @cindex @sc{gdb/mi} development
26462
26463 The application which takes the MI output and presents the state of the
26464 program being debugged to the user is called a @dfn{front end}.
26465
26466 Although @sc{gdb/mi} is still incomplete, it is currently being used
26467 by a variety of front ends to @value{GDBN}. This makes it difficult
26468 to introduce new functionality without breaking existing usage. This
26469 section tries to minimize the problems by describing how the protocol
26470 might change.
26471
26472 Some changes in MI need not break a carefully designed front end, and
26473 for these the MI version will remain unchanged. The following is a
26474 list of changes that may occur within one level, so front ends should
26475 parse MI output in a way that can handle them:
26476
26477 @itemize @bullet
26478 @item
26479 New MI commands may be added.
26480
26481 @item
26482 New fields may be added to the output of any MI command.
26483
26484 @item
26485 The range of values for fields with specified values, e.g.,
26486 @code{in_scope} (@pxref{-var-update}) may be extended.
26487
26488 @c The format of field's content e.g type prefix, may change so parse it
26489 @c at your own risk. Yes, in general?
26490
26491 @c The order of fields may change? Shouldn't really matter but it might
26492 @c resolve inconsistencies.
26493 @end itemize
26494
26495 If the changes are likely to break front ends, the MI version level
26496 will be increased by one. This will allow the front end to parse the
26497 output according to the MI version. Apart from mi0, new versions of
26498 @value{GDBN} will not support old versions of MI and it will be the
26499 responsibility of the front end to work with the new one.
26500
26501 @c Starting with mi3, add a new command -mi-version that prints the MI
26502 @c version?
26503
26504 The best way to avoid unexpected changes in MI that might break your front
26505 end is to make your project known to @value{GDBN} developers and
26506 follow development on @email{gdb@@sourceware.org} and
26507 @email{gdb-patches@@sourceware.org}.
26508 @cindex mailing lists
26509
26510 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26511 @node GDB/MI Output Records
26512 @section @sc{gdb/mi} Output Records
26513
26514 @menu
26515 * GDB/MI Result Records::
26516 * GDB/MI Stream Records::
26517 * GDB/MI Async Records::
26518 * GDB/MI Frame Information::
26519 * GDB/MI Thread Information::
26520 * GDB/MI Ada Exception Information::
26521 @end menu
26522
26523 @node GDB/MI Result Records
26524 @subsection @sc{gdb/mi} Result Records
26525
26526 @cindex result records in @sc{gdb/mi}
26527 @cindex @sc{gdb/mi}, result records
26528 In addition to a number of out-of-band notifications, the response to a
26529 @sc{gdb/mi} command includes one of the following result indications:
26530
26531 @table @code
26532 @findex ^done
26533 @item "^done" [ "," @var{results} ]
26534 The synchronous operation was successful, @code{@var{results}} are the return
26535 values.
26536
26537 @item "^running"
26538 @findex ^running
26539 This result record is equivalent to @samp{^done}. Historically, it
26540 was output instead of @samp{^done} if the command has resumed the
26541 target. This behaviour is maintained for backward compatibility, but
26542 all frontends should treat @samp{^done} and @samp{^running}
26543 identically and rely on the @samp{*running} output record to determine
26544 which threads are resumed.
26545
26546 @item "^connected"
26547 @findex ^connected
26548 @value{GDBN} has connected to a remote target.
26549
26550 @item "^error" "," @var{c-string}
26551 @findex ^error
26552 The operation failed. The @code{@var{c-string}} contains the corresponding
26553 error message.
26554
26555 @item "^exit"
26556 @findex ^exit
26557 @value{GDBN} has terminated.
26558
26559 @end table
26560
26561 @node GDB/MI Stream Records
26562 @subsection @sc{gdb/mi} Stream Records
26563
26564 @cindex @sc{gdb/mi}, stream records
26565 @cindex stream records in @sc{gdb/mi}
26566 @value{GDBN} internally maintains a number of output streams: the console, the
26567 target, and the log. The output intended for each of these streams is
26568 funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
26569
26570 Each stream record begins with a unique @dfn{prefix character} which
26571 identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
26572 Syntax}). In addition to the prefix, each stream record contains a
26573 @code{@var{string-output}}. This is either raw text (with an implicit new
26574 line) or a quoted C string (which does not contain an implicit newline).
26575
26576 @table @code
26577 @item "~" @var{string-output}
26578 The console output stream contains text that should be displayed in the
26579 CLI console window. It contains the textual responses to CLI commands.
26580
26581 @item "@@" @var{string-output}
26582 The target output stream contains any textual output from the running
26583 target. This is only present when GDB's event loop is truly
26584 asynchronous, which is currently only the case for remote targets.
26585
26586 @item "&" @var{string-output}
26587 The log stream contains debugging messages being produced by @value{GDBN}'s
26588 internals.
26589 @end table
26590
26591 @node GDB/MI Async Records
26592 @subsection @sc{gdb/mi} Async Records
26593
26594 @cindex async records in @sc{gdb/mi}
26595 @cindex @sc{gdb/mi}, async records
26596 @dfn{Async} records are used to notify the @sc{gdb/mi} client of
26597 additional changes that have occurred. Those changes can either be a
26598 consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
26599 target activity (e.g., target stopped).
26600
26601 The following is the list of possible async records:
26602
26603 @table @code
26604
26605 @item *running,thread-id="@var{thread}"
26606 The target is now running. The @var{thread} field tells which
26607 specific thread is now running, and can be @samp{all} if all threads
26608 are running. The frontend should assume that no interaction with a
26609 running thread is possible after this notification is produced.
26610 The frontend should not assume that this notification is output
26611 only once for any command. @value{GDBN} may emit this notification
26612 several times, either for different threads, because it cannot resume
26613 all threads together, or even for a single thread, if the thread must
26614 be stepped though some code before letting it run freely.
26615
26616 @item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
26617 The target has stopped. The @var{reason} field can have one of the
26618 following values:
26619
26620 @table @code
26621 @item breakpoint-hit
26622 A breakpoint was reached.
26623 @item watchpoint-trigger
26624 A watchpoint was triggered.
26625 @item read-watchpoint-trigger
26626 A read watchpoint was triggered.
26627 @item access-watchpoint-trigger
26628 An access watchpoint was triggered.
26629 @item function-finished
26630 An -exec-finish or similar CLI command was accomplished.
26631 @item location-reached
26632 An -exec-until or similar CLI command was accomplished.
26633 @item watchpoint-scope
26634 A watchpoint has gone out of scope.
26635 @item end-stepping-range
26636 An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
26637 similar CLI command was accomplished.
26638 @item exited-signalled
26639 The inferior exited because of a signal.
26640 @item exited
26641 The inferior exited.
26642 @item exited-normally
26643 The inferior exited normally.
26644 @item signal-received
26645 A signal was received by the inferior.
26646 @item solib-event
26647 The inferior has stopped due to a library being loaded or unloaded.
26648 This can happen when @code{stop-on-solib-events} (@pxref{Files}) is
26649 set or when a @code{catch load} or @code{catch unload} catchpoint is
26650 in use (@pxref{Set Catchpoints}).
26651 @item fork
26652 The inferior has forked. This is reported when @code{catch fork}
26653 (@pxref{Set Catchpoints}) has been used.
26654 @item vfork
26655 The inferior has vforked. This is reported in when @code{catch vfork}
26656 (@pxref{Set Catchpoints}) has been used.
26657 @item syscall-entry
26658 The inferior entered a system call. This is reported when @code{catch
26659 syscall} (@pxref{Set Catchpoints}) has been used.
26660 @item syscall-entry
26661 The inferior returned from a system call. This is reported when
26662 @code{catch syscall} (@pxref{Set Catchpoints}) has been used.
26663 @item exec
26664 The inferior called @code{exec}. This is reported when @code{catch exec}
26665 (@pxref{Set Catchpoints}) has been used.
26666 @end table
26667
26668 The @var{id} field identifies the thread that directly caused the stop
26669 -- for example by hitting a breakpoint. Depending on whether all-stop
26670 mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
26671 stop all threads, or only the thread that directly triggered the stop.
26672 If all threads are stopped, the @var{stopped} field will have the
26673 value of @code{"all"}. Otherwise, the value of the @var{stopped}
26674 field will be a list of thread identifiers. Presently, this list will
26675 always include a single thread, but frontend should be prepared to see
26676 several threads in the list. The @var{core} field reports the
26677 processor core on which the stop event has happened. This field may be absent
26678 if such information is not available.
26679
26680 @item =thread-group-added,id="@var{id}"
26681 @itemx =thread-group-removed,id="@var{id}"
26682 A thread group was either added or removed. The @var{id} field
26683 contains the @value{GDBN} identifier of the thread group. When a thread
26684 group is added, it generally might not be associated with a running
26685 process. When a thread group is removed, its id becomes invalid and
26686 cannot be used in any way.
26687
26688 @item =thread-group-started,id="@var{id}",pid="@var{pid}"
26689 A thread group became associated with a running program,
26690 either because the program was just started or the thread group
26691 was attached to a program. The @var{id} field contains the
26692 @value{GDBN} identifier of the thread group. The @var{pid} field
26693 contains process identifier, specific to the operating system.
26694
26695 @item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"]
26696 A thread group is no longer associated with a running program,
26697 either because the program has exited, or because it was detached
26698 from. The @var{id} field contains the @value{GDBN} identifier of the
26699 thread group. @var{code} is the exit code of the inferior; it exists
26700 only when the inferior exited with some code.
26701
26702 @item =thread-created,id="@var{id}",group-id="@var{gid}"
26703 @itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
26704 A thread either was created, or has exited. The @var{id} field
26705 contains the @value{GDBN} identifier of the thread. The @var{gid}
26706 field identifies the thread group this thread belongs to.
26707
26708 @item =thread-selected,id="@var{id}"
26709 Informs that the selected thread was changed as result of the last
26710 command. This notification is not emitted as result of @code{-thread-select}
26711 command but is emitted whenever an MI command that is not documented
26712 to change the selected thread actually changes it. In particular,
26713 invoking, directly or indirectly (via user-defined command), the CLI
26714 @code{thread} command, will generate this notification.
26715
26716 We suggest that in response to this notification, front ends
26717 highlight the selected thread and cause subsequent commands to apply to
26718 that thread.
26719
26720 @item =library-loaded,...
26721 Reports that a new library file was loaded by the program. This
26722 notification has 4 fields---@var{id}, @var{target-name},
26723 @var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
26724 opaque identifier of the library. For remote debugging case,
26725 @var{target-name} and @var{host-name} fields give the name of the
26726 library file on the target, and on the host respectively. For native
26727 debugging, both those fields have the same value. The
26728 @var{symbols-loaded} field is emitted only for backward compatibility
26729 and should not be relied on to convey any useful information. The
26730 @var{thread-group} field, if present, specifies the id of the thread
26731 group in whose context the library was loaded. If the field is
26732 absent, it means the library was loaded in the context of all present
26733 thread groups.
26734
26735 @item =library-unloaded,...
26736 Reports that a library was unloaded by the program. This notification
26737 has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
26738 the same meaning as for the @code{=library-loaded} notification.
26739 The @var{thread-group} field, if present, specifies the id of the
26740 thread group in whose context the library was unloaded. If the field is
26741 absent, it means the library was unloaded in the context of all present
26742 thread groups.
26743
26744 @item =breakpoint-created,bkpt=@{...@}
26745 @itemx =breakpoint-modified,bkpt=@{...@}
26746 @itemx =breakpoint-deleted,bkpt=@{...@}
26747 Reports that a breakpoint was created, modified, or deleted,
26748 respectively. Only user-visible breakpoints are reported to the MI
26749 user.
26750
26751 The @var{bkpt} argument is of the same form as returned by the various
26752 breakpoint commands; @xref{GDB/MI Breakpoint Commands}.
26753
26754 Note that if a breakpoint is emitted in the result record of a
26755 command, then it will not also be emitted in an async record.
26756
26757 @end table
26758
26759 @node GDB/MI Frame Information
26760 @subsection @sc{gdb/mi} Frame Information
26761
26762 Response from many MI commands includes an information about stack
26763 frame. This information is a tuple that may have the following
26764 fields:
26765
26766 @table @code
26767 @item level
26768 The level of the stack frame. The innermost frame has the level of
26769 zero. This field is always present.
26770
26771 @item func
26772 The name of the function corresponding to the frame. This field may
26773 be absent if @value{GDBN} is unable to determine the function name.
26774
26775 @item addr
26776 The code address for the frame. This field is always present.
26777
26778 @item file
26779 The name of the source files that correspond to the frame's code
26780 address. This field may be absent.
26781
26782 @item line
26783 The source line corresponding to the frames' code address. This field
26784 may be absent.
26785
26786 @item from
26787 The name of the binary file (either executable or shared library) the
26788 corresponds to the frame's code address. This field may be absent.
26789
26790 @end table
26791
26792 @node GDB/MI Thread Information
26793 @subsection @sc{gdb/mi} Thread Information
26794
26795 Whenever @value{GDBN} has to report an information about a thread, it
26796 uses a tuple with the following fields:
26797
26798 @table @code
26799 @item id
26800 The numeric id assigned to the thread by @value{GDBN}. This field is
26801 always present.
26802
26803 @item target-id
26804 Target-specific string identifying the thread. This field is always present.
26805
26806 @item details
26807 Additional information about the thread provided by the target.
26808 It is supposed to be human-readable and not interpreted by the
26809 frontend. This field is optional.
26810
26811 @item state
26812 Either @samp{stopped} or @samp{running}, depending on whether the
26813 thread is presently running. This field is always present.
26814
26815 @item core
26816 The value of this field is an integer number of the processor core the
26817 thread was last seen on. This field is optional.
26818 @end table
26819
26820 @node GDB/MI Ada Exception Information
26821 @subsection @sc{gdb/mi} Ada Exception Information
26822
26823 Whenever a @code{*stopped} record is emitted because the program
26824 stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}),
26825 @value{GDBN} provides the name of the exception that was raised via
26826 the @code{exception-name} field.
26827
26828 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26829 @node GDB/MI Simple Examples
26830 @section Simple Examples of @sc{gdb/mi} Interaction
26831 @cindex @sc{gdb/mi}, simple examples
26832
26833 This subsection presents several simple examples of interaction using
26834 the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
26835 following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
26836 the output received from @sc{gdb/mi}.
26837
26838 Note the line breaks shown in the examples are here only for
26839 readability, they don't appear in the real output.
26840
26841 @subheading Setting a Breakpoint
26842
26843 Setting a breakpoint generates synchronous output which contains detailed
26844 information of the breakpoint.
26845
26846 @smallexample
26847 -> -break-insert main
26848 <- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
26849 enabled="y",addr="0x08048564",func="main",file="myprog.c",
26850 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
26851 <- (gdb)
26852 @end smallexample
26853
26854 @subheading Program Execution
26855
26856 Program execution generates asynchronous records and MI gives the
26857 reason that execution stopped.
26858
26859 @smallexample
26860 -> -exec-run
26861 <- ^running
26862 <- (gdb)
26863 <- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
26864 frame=@{addr="0x08048564",func="main",
26865 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
26866 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
26867 <- (gdb)
26868 -> -exec-continue
26869 <- ^running
26870 <- (gdb)
26871 <- *stopped,reason="exited-normally"
26872 <- (gdb)
26873 @end smallexample
26874
26875 @subheading Quitting @value{GDBN}
26876
26877 Quitting @value{GDBN} just prints the result class @samp{^exit}.
26878
26879 @smallexample
26880 -> (gdb)
26881 <- -gdb-exit
26882 <- ^exit
26883 @end smallexample
26884
26885 Please note that @samp{^exit} is printed immediately, but it might
26886 take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
26887 performs necessary cleanups, including killing programs being debugged
26888 or disconnecting from debug hardware, so the frontend should wait till
26889 @value{GDBN} exits and should only forcibly kill @value{GDBN} if it
26890 fails to exit in reasonable time.
26891
26892 @subheading A Bad Command
26893
26894 Here's what happens if you pass a non-existent command:
26895
26896 @smallexample
26897 -> -rubbish
26898 <- ^error,msg="Undefined MI command: rubbish"
26899 <- (gdb)
26900 @end smallexample
26901
26902
26903 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26904 @node GDB/MI Command Description Format
26905 @section @sc{gdb/mi} Command Description Format
26906
26907 The remaining sections describe blocks of commands. Each block of
26908 commands is laid out in a fashion similar to this section.
26909
26910 @subheading Motivation
26911
26912 The motivation for this collection of commands.
26913
26914 @subheading Introduction
26915
26916 A brief introduction to this collection of commands as a whole.
26917
26918 @subheading Commands
26919
26920 For each command in the block, the following is described:
26921
26922 @subsubheading Synopsis
26923
26924 @smallexample
26925 -command @var{args}@dots{}
26926 @end smallexample
26927
26928 @subsubheading Result
26929
26930 @subsubheading @value{GDBN} Command
26931
26932 The corresponding @value{GDBN} CLI command(s), if any.
26933
26934 @subsubheading Example
26935
26936 Example(s) formatted for readability. Some of the described commands have
26937 not been implemented yet and these are labeled N.A.@: (not available).
26938
26939
26940 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26941 @node GDB/MI Breakpoint Commands
26942 @section @sc{gdb/mi} Breakpoint Commands
26943
26944 @cindex breakpoint commands for @sc{gdb/mi}
26945 @cindex @sc{gdb/mi}, breakpoint commands
26946 This section documents @sc{gdb/mi} commands for manipulating
26947 breakpoints.
26948
26949 @subheading The @code{-break-after} Command
26950 @findex -break-after
26951
26952 @subsubheading Synopsis
26953
26954 @smallexample
26955 -break-after @var{number} @var{count}
26956 @end smallexample
26957
26958 The breakpoint number @var{number} is not in effect until it has been
26959 hit @var{count} times. To see how this is reflected in the output of
26960 the @samp{-break-list} command, see the description of the
26961 @samp{-break-list} command below.
26962
26963 @subsubheading @value{GDBN} Command
26964
26965 The corresponding @value{GDBN} command is @samp{ignore}.
26966
26967 @subsubheading Example
26968
26969 @smallexample
26970 (gdb)
26971 -break-insert main
26972 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
26973 enabled="y",addr="0x000100d0",func="main",file="hello.c",
26974 fullname="/home/foo/hello.c",line="5",times="0"@}
26975 (gdb)
26976 -break-after 1 3
26977 ~
26978 ^done
26979 (gdb)
26980 -break-list
26981 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
26982 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
26983 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
26984 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
26985 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
26986 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
26987 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
26988 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
26989 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
26990 line="5",times="0",ignore="3"@}]@}
26991 (gdb)
26992 @end smallexample
26993
26994 @ignore
26995 @subheading The @code{-break-catch} Command
26996 @findex -break-catch
26997 @end ignore
26998
26999 @subheading The @code{-break-commands} Command
27000 @findex -break-commands
27001
27002 @subsubheading Synopsis
27003
27004 @smallexample
27005 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
27006 @end smallexample
27007
27008 Specifies the CLI commands that should be executed when breakpoint
27009 @var{number} is hit. The parameters @var{command1} to @var{commandN}
27010 are the commands. If no command is specified, any previously-set
27011 commands are cleared. @xref{Break Commands}. Typical use of this
27012 functionality is tracing a program, that is, printing of values of
27013 some variables whenever breakpoint is hit and then continuing.
27014
27015 @subsubheading @value{GDBN} Command
27016
27017 The corresponding @value{GDBN} command is @samp{commands}.
27018
27019 @subsubheading Example
27020
27021 @smallexample
27022 (gdb)
27023 -break-insert main
27024 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27025 enabled="y",addr="0x000100d0",func="main",file="hello.c",
27026 fullname="/home/foo/hello.c",line="5",times="0"@}
27027 (gdb)
27028 -break-commands 1 "print v" "continue"
27029 ^done
27030 (gdb)
27031 @end smallexample
27032
27033 @subheading The @code{-break-condition} Command
27034 @findex -break-condition
27035
27036 @subsubheading Synopsis
27037
27038 @smallexample
27039 -break-condition @var{number} @var{expr}
27040 @end smallexample
27041
27042 Breakpoint @var{number} will stop the program only if the condition in
27043 @var{expr} is true. The condition becomes part of the
27044 @samp{-break-list} output (see the description of the @samp{-break-list}
27045 command below).
27046
27047 @subsubheading @value{GDBN} Command
27048
27049 The corresponding @value{GDBN} command is @samp{condition}.
27050
27051 @subsubheading Example
27052
27053 @smallexample
27054 (gdb)
27055 -break-condition 1 1
27056 ^done
27057 (gdb)
27058 -break-list
27059 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27060 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27061 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27062 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27063 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27064 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27065 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27066 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27067 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27068 line="5",cond="1",times="0",ignore="3"@}]@}
27069 (gdb)
27070 @end smallexample
27071
27072 @subheading The @code{-break-delete} Command
27073 @findex -break-delete
27074
27075 @subsubheading Synopsis
27076
27077 @smallexample
27078 -break-delete ( @var{breakpoint} )+
27079 @end smallexample
27080
27081 Delete the breakpoint(s) whose number(s) are specified in the argument
27082 list. This is obviously reflected in the breakpoint list.
27083
27084 @subsubheading @value{GDBN} Command
27085
27086 The corresponding @value{GDBN} command is @samp{delete}.
27087
27088 @subsubheading Example
27089
27090 @smallexample
27091 (gdb)
27092 -break-delete 1
27093 ^done
27094 (gdb)
27095 -break-list
27096 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
27097 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27098 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27099 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27100 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27101 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27102 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27103 body=[]@}
27104 (gdb)
27105 @end smallexample
27106
27107 @subheading The @code{-break-disable} Command
27108 @findex -break-disable
27109
27110 @subsubheading Synopsis
27111
27112 @smallexample
27113 -break-disable ( @var{breakpoint} )+
27114 @end smallexample
27115
27116 Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
27117 break list is now set to @samp{n} for the named @var{breakpoint}(s).
27118
27119 @subsubheading @value{GDBN} Command
27120
27121 The corresponding @value{GDBN} command is @samp{disable}.
27122
27123 @subsubheading Example
27124
27125 @smallexample
27126 (gdb)
27127 -break-disable 2
27128 ^done
27129 (gdb)
27130 -break-list
27131 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27132 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27133 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27134 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27135 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27136 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27137 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27138 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
27139 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27140 line="5",times="0"@}]@}
27141 (gdb)
27142 @end smallexample
27143
27144 @subheading The @code{-break-enable} Command
27145 @findex -break-enable
27146
27147 @subsubheading Synopsis
27148
27149 @smallexample
27150 -break-enable ( @var{breakpoint} )+
27151 @end smallexample
27152
27153 Enable (previously disabled) @var{breakpoint}(s).
27154
27155 @subsubheading @value{GDBN} Command
27156
27157 The corresponding @value{GDBN} command is @samp{enable}.
27158
27159 @subsubheading Example
27160
27161 @smallexample
27162 (gdb)
27163 -break-enable 2
27164 ^done
27165 (gdb)
27166 -break-list
27167 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27168 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27169 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27170 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27171 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27172 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27173 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27174 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
27175 addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27176 line="5",times="0"@}]@}
27177 (gdb)
27178 @end smallexample
27179
27180 @subheading The @code{-break-info} Command
27181 @findex -break-info
27182
27183 @subsubheading Synopsis
27184
27185 @smallexample
27186 -break-info @var{breakpoint}
27187 @end smallexample
27188
27189 @c REDUNDANT???
27190 Get information about a single breakpoint.
27191
27192 @subsubheading @value{GDBN} Command
27193
27194 The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
27195
27196 @subsubheading Example
27197 N.A.
27198
27199 @subheading The @code{-break-insert} Command
27200 @findex -break-insert
27201
27202 @subsubheading Synopsis
27203
27204 @smallexample
27205 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
27206 [ -c @var{condition} ] [ -i @var{ignore-count} ]
27207 [ -p @var{thread} ] [ @var{location} ]
27208 @end smallexample
27209
27210 @noindent
27211 If specified, @var{location}, can be one of:
27212
27213 @itemize @bullet
27214 @item function
27215 @c @item +offset
27216 @c @item -offset
27217 @c @item linenum
27218 @item filename:linenum
27219 @item filename:function
27220 @item *address
27221 @end itemize
27222
27223 The possible optional parameters of this command are:
27224
27225 @table @samp
27226 @item -t
27227 Insert a temporary breakpoint.
27228 @item -h
27229 Insert a hardware breakpoint.
27230 @item -c @var{condition}
27231 Make the breakpoint conditional on @var{condition}.
27232 @item -i @var{ignore-count}
27233 Initialize the @var{ignore-count}.
27234 @item -f
27235 If @var{location} cannot be parsed (for example if it
27236 refers to unknown files or functions), create a pending
27237 breakpoint. Without this flag, @value{GDBN} will report
27238 an error, and won't create a breakpoint, if @var{location}
27239 cannot be parsed.
27240 @item -d
27241 Create a disabled breakpoint.
27242 @item -a
27243 Create a tracepoint. @xref{Tracepoints}. When this parameter
27244 is used together with @samp{-h}, a fast tracepoint is created.
27245 @end table
27246
27247 @subsubheading Result
27248
27249 The result is in the form:
27250
27251 @smallexample
27252 ^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
27253 enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
27254 fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
27255 times="@var{times}"@}
27256 @end smallexample
27257
27258 @noindent
27259 where @var{number} is the @value{GDBN} number for this breakpoint,
27260 @var{funcname} is the name of the function where the breakpoint was
27261 inserted, @var{filename} is the name of the source file which contains
27262 this function, @var{lineno} is the source line number within that file
27263 and @var{times} the number of times that the breakpoint has been hit
27264 (always 0 for -break-insert but may be greater for -break-info or -break-list
27265 which use the same output).
27266
27267 Note: this format is open to change.
27268 @c An out-of-band breakpoint instead of part of the result?
27269
27270 @subsubheading @value{GDBN} Command
27271
27272 The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
27273 @samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
27274
27275 @subsubheading Example
27276
27277 @smallexample
27278 (gdb)
27279 -break-insert main
27280 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
27281 fullname="/home/foo/recursive2.c,line="4",times="0"@}
27282 (gdb)
27283 -break-insert -t foo
27284 ^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
27285 fullname="/home/foo/recursive2.c,line="11",times="0"@}
27286 (gdb)
27287 -break-list
27288 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
27289 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27290 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27291 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27292 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27293 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27294 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27295 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27296 addr="0x0001072c", func="main",file="recursive2.c",
27297 fullname="/home/foo/recursive2.c,"line="4",times="0"@},
27298 bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
27299 addr="0x00010774",func="foo",file="recursive2.c",
27300 fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
27301 (gdb)
27302 -break-insert -r foo.*
27303 ~int foo(int, int);
27304 ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
27305 "fullname="/home/foo/recursive2.c",line="11",times="0"@}
27306 (gdb)
27307 @end smallexample
27308
27309 @subheading The @code{-break-list} Command
27310 @findex -break-list
27311
27312 @subsubheading Synopsis
27313
27314 @smallexample
27315 -break-list
27316 @end smallexample
27317
27318 Displays the list of inserted breakpoints, showing the following fields:
27319
27320 @table @samp
27321 @item Number
27322 number of the breakpoint
27323 @item Type
27324 type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
27325 @item Disposition
27326 should the breakpoint be deleted or disabled when it is hit: @samp{keep}
27327 or @samp{nokeep}
27328 @item Enabled
27329 is the breakpoint enabled or no: @samp{y} or @samp{n}
27330 @item Address
27331 memory location at which the breakpoint is set
27332 @item What
27333 logical location of the breakpoint, expressed by function name, file
27334 name, line number
27335 @item Times
27336 number of times the breakpoint has been hit
27337 @end table
27338
27339 If there are no breakpoints or watchpoints, the @code{BreakpointTable}
27340 @code{body} field is an empty list.
27341
27342 @subsubheading @value{GDBN} Command
27343
27344 The corresponding @value{GDBN} command is @samp{info break}.
27345
27346 @subsubheading Example
27347
27348 @smallexample
27349 (gdb)
27350 -break-list
27351 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
27352 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27353 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27354 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27355 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27356 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27357 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27358 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27359 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
27360 bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
27361 addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
27362 line="13",times="0"@}]@}
27363 (gdb)
27364 @end smallexample
27365
27366 Here's an example of the result when there are no breakpoints:
27367
27368 @smallexample
27369 (gdb)
27370 -break-list
27371 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
27372 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27373 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27374 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27375 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27376 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27377 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27378 body=[]@}
27379 (gdb)
27380 @end smallexample
27381
27382 @subheading The @code{-break-passcount} Command
27383 @findex -break-passcount
27384
27385 @subsubheading Synopsis
27386
27387 @smallexample
27388 -break-passcount @var{tracepoint-number} @var{passcount}
27389 @end smallexample
27390
27391 Set the passcount for tracepoint @var{tracepoint-number} to
27392 @var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
27393 is not a tracepoint, error is emitted. This corresponds to CLI
27394 command @samp{passcount}.
27395
27396 @subheading The @code{-break-watch} Command
27397 @findex -break-watch
27398
27399 @subsubheading Synopsis
27400
27401 @smallexample
27402 -break-watch [ -a | -r ]
27403 @end smallexample
27404
27405 Create a watchpoint. With the @samp{-a} option it will create an
27406 @dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
27407 read from or on a write to the memory location. With the @samp{-r}
27408 option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
27409 trigger only when the memory location is accessed for reading. Without
27410 either of the options, the watchpoint created is a regular watchpoint,
27411 i.e., it will trigger when the memory location is accessed for writing.
27412 @xref{Set Watchpoints, , Setting Watchpoints}.
27413
27414 Note that @samp{-break-list} will report a single list of watchpoints and
27415 breakpoints inserted.
27416
27417 @subsubheading @value{GDBN} Command
27418
27419 The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
27420 @samp{rwatch}.
27421
27422 @subsubheading Example
27423
27424 Setting a watchpoint on a variable in the @code{main} function:
27425
27426 @smallexample
27427 (gdb)
27428 -break-watch x
27429 ^done,wpt=@{number="2",exp="x"@}
27430 (gdb)
27431 -exec-continue
27432 ^running
27433 (gdb)
27434 *stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
27435 value=@{old="-268439212",new="55"@},
27436 frame=@{func="main",args=[],file="recursive2.c",
27437 fullname="/home/foo/bar/recursive2.c",line="5"@}
27438 (gdb)
27439 @end smallexample
27440
27441 Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
27442 the program execution twice: first for the variable changing value, then
27443 for the watchpoint going out of scope.
27444
27445 @smallexample
27446 (gdb)
27447 -break-watch C
27448 ^done,wpt=@{number="5",exp="C"@}
27449 (gdb)
27450 -exec-continue
27451 ^running
27452 (gdb)
27453 *stopped,reason="watchpoint-trigger",
27454 wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
27455 frame=@{func="callee4",args=[],
27456 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27457 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
27458 (gdb)
27459 -exec-continue
27460 ^running
27461 (gdb)
27462 *stopped,reason="watchpoint-scope",wpnum="5",
27463 frame=@{func="callee3",args=[@{name="strarg",
27464 value="0x11940 \"A string argument.\""@}],
27465 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27466 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
27467 (gdb)
27468 @end smallexample
27469
27470 Listing breakpoints and watchpoints, at different points in the program
27471 execution. Note that once the watchpoint goes out of scope, it is
27472 deleted.
27473
27474 @smallexample
27475 (gdb)
27476 -break-watch C
27477 ^done,wpt=@{number="2",exp="C"@}
27478 (gdb)
27479 -break-list
27480 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
27481 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27482 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27483 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27484 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27485 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27486 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27487 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27488 addr="0x00010734",func="callee4",
27489 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27490 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
27491 bkpt=@{number="2",type="watchpoint",disp="keep",
27492 enabled="y",addr="",what="C",times="0"@}]@}
27493 (gdb)
27494 -exec-continue
27495 ^running
27496 (gdb)
27497 *stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
27498 value=@{old="-276895068",new="3"@},
27499 frame=@{func="callee4",args=[],
27500 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27501 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
27502 (gdb)
27503 -break-list
27504 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
27505 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27506 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27507 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27508 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27509 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27510 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27511 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27512 addr="0x00010734",func="callee4",
27513 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27514 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
27515 bkpt=@{number="2",type="watchpoint",disp="keep",
27516 enabled="y",addr="",what="C",times="-5"@}]@}
27517 (gdb)
27518 -exec-continue
27519 ^running
27520 ^done,reason="watchpoint-scope",wpnum="2",
27521 frame=@{func="callee3",args=[@{name="strarg",
27522 value="0x11940 \"A string argument.\""@}],
27523 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27524 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
27525 (gdb)
27526 -break-list
27527 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27528 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27529 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27530 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27531 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27532 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27533 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
27534 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27535 addr="0x00010734",func="callee4",
27536 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
27537 fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
27538 times="1"@}]@}
27539 (gdb)
27540 @end smallexample
27541
27542 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27543 @node GDB/MI Program Context
27544 @section @sc{gdb/mi} Program Context
27545
27546 @subheading The @code{-exec-arguments} Command
27547 @findex -exec-arguments
27548
27549
27550 @subsubheading Synopsis
27551
27552 @smallexample
27553 -exec-arguments @var{args}
27554 @end smallexample
27555
27556 Set the inferior program arguments, to be used in the next
27557 @samp{-exec-run}.
27558
27559 @subsubheading @value{GDBN} Command
27560
27561 The corresponding @value{GDBN} command is @samp{set args}.
27562
27563 @subsubheading Example
27564
27565 @smallexample
27566 (gdb)
27567 -exec-arguments -v word
27568 ^done
27569 (gdb)
27570 @end smallexample
27571
27572
27573 @ignore
27574 @subheading The @code{-exec-show-arguments} Command
27575 @findex -exec-show-arguments
27576
27577 @subsubheading Synopsis
27578
27579 @smallexample
27580 -exec-show-arguments
27581 @end smallexample
27582
27583 Print the arguments of the program.
27584
27585 @subsubheading @value{GDBN} Command
27586
27587 The corresponding @value{GDBN} command is @samp{show args}.
27588
27589 @subsubheading Example
27590 N.A.
27591 @end ignore
27592
27593
27594 @subheading The @code{-environment-cd} Command
27595 @findex -environment-cd
27596
27597 @subsubheading Synopsis
27598
27599 @smallexample
27600 -environment-cd @var{pathdir}
27601 @end smallexample
27602
27603 Set @value{GDBN}'s working directory.
27604
27605 @subsubheading @value{GDBN} Command
27606
27607 The corresponding @value{GDBN} command is @samp{cd}.
27608
27609 @subsubheading Example
27610
27611 @smallexample
27612 (gdb)
27613 -environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
27614 ^done
27615 (gdb)
27616 @end smallexample
27617
27618
27619 @subheading The @code{-environment-directory} Command
27620 @findex -environment-directory
27621
27622 @subsubheading Synopsis
27623
27624 @smallexample
27625 -environment-directory [ -r ] [ @var{pathdir} ]+
27626 @end smallexample
27627
27628 Add directories @var{pathdir} to beginning of search path for source files.
27629 If the @samp{-r} option is used, the search path is reset to the default
27630 search path. If directories @var{pathdir} are supplied in addition to the
27631 @samp{-r} option, the search path is first reset and then addition
27632 occurs as normal.
27633 Multiple directories may be specified, separated by blanks. Specifying
27634 multiple directories in a single command
27635 results in the directories added to the beginning of the
27636 search path in the same order they were presented in the command.
27637 If blanks are needed as
27638 part of a directory name, double-quotes should be used around
27639 the name. In the command output, the path will show up separated
27640 by the system directory-separator character. The directory-separator
27641 character must not be used
27642 in any directory name.
27643 If no directories are specified, the current search path is displayed.
27644
27645 @subsubheading @value{GDBN} Command
27646
27647 The corresponding @value{GDBN} command is @samp{dir}.
27648
27649 @subsubheading Example
27650
27651 @smallexample
27652 (gdb)
27653 -environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
27654 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
27655 (gdb)
27656 -environment-directory ""
27657 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
27658 (gdb)
27659 -environment-directory -r /home/jjohnstn/src/gdb /usr/src
27660 ^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
27661 (gdb)
27662 -environment-directory -r
27663 ^done,source-path="$cdir:$cwd"
27664 (gdb)
27665 @end smallexample
27666
27667
27668 @subheading The @code{-environment-path} Command
27669 @findex -environment-path
27670
27671 @subsubheading Synopsis
27672
27673 @smallexample
27674 -environment-path [ -r ] [ @var{pathdir} ]+
27675 @end smallexample
27676
27677 Add directories @var{pathdir} to beginning of search path for object files.
27678 If the @samp{-r} option is used, the search path is reset to the original
27679 search path that existed at gdb start-up. If directories @var{pathdir} are
27680 supplied in addition to the
27681 @samp{-r} option, the search path is first reset and then addition
27682 occurs as normal.
27683 Multiple directories may be specified, separated by blanks. Specifying
27684 multiple directories in a single command
27685 results in the directories added to the beginning of the
27686 search path in the same order they were presented in the command.
27687 If blanks are needed as
27688 part of a directory name, double-quotes should be used around
27689 the name. In the command output, the path will show up separated
27690 by the system directory-separator character. The directory-separator
27691 character must not be used
27692 in any directory name.
27693 If no directories are specified, the current path is displayed.
27694
27695
27696 @subsubheading @value{GDBN} Command
27697
27698 The corresponding @value{GDBN} command is @samp{path}.
27699
27700 @subsubheading Example
27701
27702 @smallexample
27703 (gdb)
27704 -environment-path
27705 ^done,path="/usr/bin"
27706 (gdb)
27707 -environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
27708 ^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
27709 (gdb)
27710 -environment-path -r /usr/local/bin
27711 ^done,path="/usr/local/bin:/usr/bin"
27712 (gdb)
27713 @end smallexample
27714
27715
27716 @subheading The @code{-environment-pwd} Command
27717 @findex -environment-pwd
27718
27719 @subsubheading Synopsis
27720
27721 @smallexample
27722 -environment-pwd
27723 @end smallexample
27724
27725 Show the current working directory.
27726
27727 @subsubheading @value{GDBN} Command
27728
27729 The corresponding @value{GDBN} command is @samp{pwd}.
27730
27731 @subsubheading Example
27732
27733 @smallexample
27734 (gdb)
27735 -environment-pwd
27736 ^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
27737 (gdb)
27738 @end smallexample
27739
27740 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27741 @node GDB/MI Thread Commands
27742 @section @sc{gdb/mi} Thread Commands
27743
27744
27745 @subheading The @code{-thread-info} Command
27746 @findex -thread-info
27747
27748 @subsubheading Synopsis
27749
27750 @smallexample
27751 -thread-info [ @var{thread-id} ]
27752 @end smallexample
27753
27754 Reports information about either a specific thread, if
27755 the @var{thread-id} parameter is present, or about all
27756 threads. When printing information about all threads,
27757 also reports the current thread.
27758
27759 @subsubheading @value{GDBN} Command
27760
27761 The @samp{info thread} command prints the same information
27762 about all threads.
27763
27764 @subsubheading Result
27765
27766 The result is a list of threads. The following attributes are
27767 defined for a given thread:
27768
27769 @table @samp
27770 @item current
27771 This field exists only for the current thread. It has the value @samp{*}.
27772
27773 @item id
27774 The identifier that @value{GDBN} uses to refer to the thread.
27775
27776 @item target-id
27777 The identifier that the target uses to refer to the thread.
27778
27779 @item details
27780 Extra information about the thread, in a target-specific format. This
27781 field is optional.
27782
27783 @item name
27784 The name of the thread. If the user specified a name using the
27785 @code{thread name} command, then this name is given. Otherwise, if
27786 @value{GDBN} can extract the thread name from the target, then that
27787 name is given. If @value{GDBN} cannot find the thread name, then this
27788 field is omitted.
27789
27790 @item frame
27791 The stack frame currently executing in the thread.
27792
27793 @item state
27794 The thread's state. The @samp{state} field may have the following
27795 values:
27796
27797 @table @code
27798 @item stopped
27799 The thread is stopped. Frame information is available for stopped
27800 threads.
27801
27802 @item running
27803 The thread is running. There's no frame information for running
27804 threads.
27805
27806 @end table
27807
27808 @item core
27809 If @value{GDBN} can find the CPU core on which this thread is running,
27810 then this field is the core identifier. This field is optional.
27811
27812 @end table
27813
27814 @subsubheading Example
27815
27816 @smallexample
27817 -thread-info
27818 ^done,threads=[
27819 @{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
27820 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",
27821 args=[]@},state="running"@},
27822 @{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
27823 frame=@{level="0",addr="0x0804891f",func="foo",
27824 args=[@{name="i",value="10"@}],
27825 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},
27826 state="running"@}],
27827 current-thread-id="1"
27828 (gdb)
27829 @end smallexample
27830
27831 @subheading The @code{-thread-list-ids} Command
27832 @findex -thread-list-ids
27833
27834 @subsubheading Synopsis
27835
27836 @smallexample
27837 -thread-list-ids
27838 @end smallexample
27839
27840 Produces a list of the currently known @value{GDBN} thread ids. At the
27841 end of the list it also prints the total number of such threads.
27842
27843 This command is retained for historical reasons, the
27844 @code{-thread-info} command should be used instead.
27845
27846 @subsubheading @value{GDBN} Command
27847
27848 Part of @samp{info threads} supplies the same information.
27849
27850 @subsubheading Example
27851
27852 @smallexample
27853 (gdb)
27854 -thread-list-ids
27855 ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
27856 current-thread-id="1",number-of-threads="3"
27857 (gdb)
27858 @end smallexample
27859
27860
27861 @subheading The @code{-thread-select} Command
27862 @findex -thread-select
27863
27864 @subsubheading Synopsis
27865
27866 @smallexample
27867 -thread-select @var{threadnum}
27868 @end smallexample
27869
27870 Make @var{threadnum} the current thread. It prints the number of the new
27871 current thread, and the topmost frame for that thread.
27872
27873 This command is deprecated in favor of explicitly using the
27874 @samp{--thread} option to each command.
27875
27876 @subsubheading @value{GDBN} Command
27877
27878 The corresponding @value{GDBN} command is @samp{thread}.
27879
27880 @subsubheading Example
27881
27882 @smallexample
27883 (gdb)
27884 -exec-next
27885 ^running
27886 (gdb)
27887 *stopped,reason="end-stepping-range",thread-id="2",line="187",
27888 file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
27889 (gdb)
27890 -thread-list-ids
27891 ^done,
27892 thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
27893 number-of-threads="3"
27894 (gdb)
27895 -thread-select 3
27896 ^done,new-thread-id="3",
27897 frame=@{level="0",func="vprintf",
27898 args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
27899 @{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
27900 (gdb)
27901 @end smallexample
27902
27903 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27904 @node GDB/MI Ada Tasking Commands
27905 @section @sc{gdb/mi} Ada Tasking Commands
27906
27907 @subheading The @code{-ada-task-info} Command
27908 @findex -ada-task-info
27909
27910 @subsubheading Synopsis
27911
27912 @smallexample
27913 -ada-task-info [ @var{task-id} ]
27914 @end smallexample
27915
27916 Reports information about either a specific Ada task, if the
27917 @var{task-id} parameter is present, or about all Ada tasks.
27918
27919 @subsubheading @value{GDBN} Command
27920
27921 The @samp{info tasks} command prints the same information
27922 about all Ada tasks (@pxref{Ada Tasks}).
27923
27924 @subsubheading Result
27925
27926 The result is a table of Ada tasks. The following columns are
27927 defined for each Ada task:
27928
27929 @table @samp
27930 @item current
27931 This field exists only for the current thread. It has the value @samp{*}.
27932
27933 @item id
27934 The identifier that @value{GDBN} uses to refer to the Ada task.
27935
27936 @item task-id
27937 The identifier that the target uses to refer to the Ada task.
27938
27939 @item thread-id
27940 The identifier of the thread corresponding to the Ada task.
27941
27942 This field should always exist, as Ada tasks are always implemented
27943 on top of a thread. But if @value{GDBN} cannot find this corresponding
27944 thread for any reason, the field is omitted.
27945
27946 @item parent-id
27947 This field exists only when the task was created by another task.
27948 In this case, it provides the ID of the parent task.
27949
27950 @item priority
27951 The base priority of the task.
27952
27953 @item state
27954 The current state of the task. For a detailed description of the
27955 possible states, see @ref{Ada Tasks}.
27956
27957 @item name
27958 The name of the task.
27959
27960 @end table
27961
27962 @subsubheading Example
27963
27964 @smallexample
27965 -ada-task-info
27966 ^done,tasks=@{nr_rows="3",nr_cols="8",
27967 hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@},
27968 @{width="3",alignment="1",col_name="id",colhdr="ID"@},
27969 @{width="9",alignment="1",col_name="task-id",colhdr="TID"@},
27970 @{width="4",alignment="1",col_name="thread-id",colhdr=""@},
27971 @{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@},
27972 @{width="3",alignment="1",col_name="priority",colhdr="Pri"@},
27973 @{width="22",alignment="-1",col_name="state",colhdr="State"@},
27974 @{width="1",alignment="2",col_name="name",colhdr="Name"@}],
27975 body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48",
27976 state="Child Termination Wait",name="main_task"@}]@}
27977 (gdb)
27978 @end smallexample
27979
27980 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27981 @node GDB/MI Program Execution
27982 @section @sc{gdb/mi} Program Execution
27983
27984 These are the asynchronous commands which generate the out-of-band
27985 record @samp{*stopped}. Currently @value{GDBN} only really executes
27986 asynchronously with remote targets and this interaction is mimicked in
27987 other cases.
27988
27989 @subheading The @code{-exec-continue} Command
27990 @findex -exec-continue
27991
27992 @subsubheading Synopsis
27993
27994 @smallexample
27995 -exec-continue [--reverse] [--all|--thread-group N]
27996 @end smallexample
27997
27998 Resumes the execution of the inferior program, which will continue
27999 to execute until it reaches a debugger stop event. If the
28000 @samp{--reverse} option is specified, execution resumes in reverse until
28001 it reaches a stop event. Stop events may include
28002 @itemize @bullet
28003 @item
28004 breakpoints or watchpoints
28005 @item
28006 signals or exceptions
28007 @item
28008 the end of the process (or its beginning under @samp{--reverse})
28009 @item
28010 the end or beginning of a replay log if one is being used.
28011 @end itemize
28012 In all-stop mode (@pxref{All-Stop
28013 Mode}), may resume only one thread, or all threads, depending on the
28014 value of the @samp{scheduler-locking} variable. If @samp{--all} is
28015 specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
28016 ignored in all-stop mode. If the @samp{--thread-group} options is
28017 specified, then all threads in that thread group are resumed.
28018
28019 @subsubheading @value{GDBN} Command
28020
28021 The corresponding @value{GDBN} corresponding is @samp{continue}.
28022
28023 @subsubheading Example
28024
28025 @smallexample
28026 -exec-continue
28027 ^running
28028 (gdb)
28029 @@Hello world
28030 *stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
28031 func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
28032 line="13"@}
28033 (gdb)
28034 @end smallexample
28035
28036
28037 @subheading The @code{-exec-finish} Command
28038 @findex -exec-finish
28039
28040 @subsubheading Synopsis
28041
28042 @smallexample
28043 -exec-finish [--reverse]
28044 @end smallexample
28045
28046 Resumes the execution of the inferior program until the current
28047 function is exited. Displays the results returned by the function.
28048 If the @samp{--reverse} option is specified, resumes the reverse
28049 execution of the inferior program until the point where current
28050 function was called.
28051
28052 @subsubheading @value{GDBN} Command
28053
28054 The corresponding @value{GDBN} command is @samp{finish}.
28055
28056 @subsubheading Example
28057
28058 Function returning @code{void}.
28059
28060 @smallexample
28061 -exec-finish
28062 ^running
28063 (gdb)
28064 @@hello from foo
28065 *stopped,reason="function-finished",frame=@{func="main",args=[],
28066 file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
28067 (gdb)
28068 @end smallexample
28069
28070 Function returning other than @code{void}. The name of the internal
28071 @value{GDBN} variable storing the result is printed, together with the
28072 value itself.
28073
28074 @smallexample
28075 -exec-finish
28076 ^running
28077 (gdb)
28078 *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
28079 args=[@{name="a",value="1"],@{name="b",value="9"@}@},
28080 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28081 gdb-result-var="$1",return-value="0"
28082 (gdb)
28083 @end smallexample
28084
28085
28086 @subheading The @code{-exec-interrupt} Command
28087 @findex -exec-interrupt
28088
28089 @subsubheading Synopsis
28090
28091 @smallexample
28092 -exec-interrupt [--all|--thread-group N]
28093 @end smallexample
28094
28095 Interrupts the background execution of the target. Note how the token
28096 associated with the stop message is the one for the execution command
28097 that has been interrupted. The token for the interrupt itself only
28098 appears in the @samp{^done} output. If the user is trying to
28099 interrupt a non-running program, an error message will be printed.
28100
28101 Note that when asynchronous execution is enabled, this command is
28102 asynchronous just like other execution commands. That is, first the
28103 @samp{^done} response will be printed, and the target stop will be
28104 reported after that using the @samp{*stopped} notification.
28105
28106 In non-stop mode, only the context thread is interrupted by default.
28107 All threads (in all inferiors) will be interrupted if the
28108 @samp{--all} option is specified. If the @samp{--thread-group}
28109 option is specified, all threads in that group will be interrupted.
28110
28111 @subsubheading @value{GDBN} Command
28112
28113 The corresponding @value{GDBN} command is @samp{interrupt}.
28114
28115 @subsubheading Example
28116
28117 @smallexample
28118 (gdb)
28119 111-exec-continue
28120 111^running
28121
28122 (gdb)
28123 222-exec-interrupt
28124 222^done
28125 (gdb)
28126 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
28127 frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
28128 fullname="/home/foo/bar/try.c",line="13"@}
28129 (gdb)
28130
28131 (gdb)
28132 -exec-interrupt
28133 ^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
28134 (gdb)
28135 @end smallexample
28136
28137 @subheading The @code{-exec-jump} Command
28138 @findex -exec-jump
28139
28140 @subsubheading Synopsis
28141
28142 @smallexample
28143 -exec-jump @var{location}
28144 @end smallexample
28145
28146 Resumes execution of the inferior program at the location specified by
28147 parameter. @xref{Specify Location}, for a description of the
28148 different forms of @var{location}.
28149
28150 @subsubheading @value{GDBN} Command
28151
28152 The corresponding @value{GDBN} command is @samp{jump}.
28153
28154 @subsubheading Example
28155
28156 @smallexample
28157 -exec-jump foo.c:10
28158 *running,thread-id="all"
28159 ^running
28160 @end smallexample
28161
28162
28163 @subheading The @code{-exec-next} Command
28164 @findex -exec-next
28165
28166 @subsubheading Synopsis
28167
28168 @smallexample
28169 -exec-next [--reverse]
28170 @end smallexample
28171
28172 Resumes execution of the inferior program, stopping when the beginning
28173 of the next source line is reached.
28174
28175 If the @samp{--reverse} option is specified, resumes reverse execution
28176 of the inferior program, stopping at the beginning of the previous
28177 source line. If you issue this command on the first line of a
28178 function, it will take you back to the caller of that function, to the
28179 source line where the function was called.
28180
28181
28182 @subsubheading @value{GDBN} Command
28183
28184 The corresponding @value{GDBN} command is @samp{next}.
28185
28186 @subsubheading Example
28187
28188 @smallexample
28189 -exec-next
28190 ^running
28191 (gdb)
28192 *stopped,reason="end-stepping-range",line="8",file="hello.c"
28193 (gdb)
28194 @end smallexample
28195
28196
28197 @subheading The @code{-exec-next-instruction} Command
28198 @findex -exec-next-instruction
28199
28200 @subsubheading Synopsis
28201
28202 @smallexample
28203 -exec-next-instruction [--reverse]
28204 @end smallexample
28205
28206 Executes one machine instruction. If the instruction is a function
28207 call, continues until the function returns. If the program stops at an
28208 instruction in the middle of a source line, the address will be
28209 printed as well.
28210
28211 If the @samp{--reverse} option is specified, resumes reverse execution
28212 of the inferior program, stopping at the previous instruction. If the
28213 previously executed instruction was a return from another function,
28214 it will continue to execute in reverse until the call to that function
28215 (from the current stack frame) is reached.
28216
28217 @subsubheading @value{GDBN} Command
28218
28219 The corresponding @value{GDBN} command is @samp{nexti}.
28220
28221 @subsubheading Example
28222
28223 @smallexample
28224 (gdb)
28225 -exec-next-instruction
28226 ^running
28227
28228 (gdb)
28229 *stopped,reason="end-stepping-range",
28230 addr="0x000100d4",line="5",file="hello.c"
28231 (gdb)
28232 @end smallexample
28233
28234
28235 @subheading The @code{-exec-return} Command
28236 @findex -exec-return
28237
28238 @subsubheading Synopsis
28239
28240 @smallexample
28241 -exec-return
28242 @end smallexample
28243
28244 Makes current function return immediately. Doesn't execute the inferior.
28245 Displays the new current frame.
28246
28247 @subsubheading @value{GDBN} Command
28248
28249 The corresponding @value{GDBN} command is @samp{return}.
28250
28251 @subsubheading Example
28252
28253 @smallexample
28254 (gdb)
28255 200-break-insert callee4
28256 200^done,bkpt=@{number="1",addr="0x00010734",
28257 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
28258 (gdb)
28259 000-exec-run
28260 000^running
28261 (gdb)
28262 000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
28263 frame=@{func="callee4",args=[],
28264 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28265 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
28266 (gdb)
28267 205-break-delete
28268 205^done
28269 (gdb)
28270 111-exec-return
28271 111^done,frame=@{level="0",func="callee3",
28272 args=[@{name="strarg",
28273 value="0x11940 \"A string argument.\""@}],
28274 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28275 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
28276 (gdb)
28277 @end smallexample
28278
28279
28280 @subheading The @code{-exec-run} Command
28281 @findex -exec-run
28282
28283 @subsubheading Synopsis
28284
28285 @smallexample
28286 -exec-run [--all | --thread-group N]
28287 @end smallexample
28288
28289 Starts execution of the inferior from the beginning. The inferior
28290 executes until either a breakpoint is encountered or the program
28291 exits. In the latter case the output will include an exit code, if
28292 the program has exited exceptionally.
28293
28294 When no option is specified, the current inferior is started. If the
28295 @samp{--thread-group} option is specified, it should refer to a thread
28296 group of type @samp{process}, and that thread group will be started.
28297 If the @samp{--all} option is specified, then all inferiors will be started.
28298
28299 @subsubheading @value{GDBN} Command
28300
28301 The corresponding @value{GDBN} command is @samp{run}.
28302
28303 @subsubheading Examples
28304
28305 @smallexample
28306 (gdb)
28307 -break-insert main
28308 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
28309 (gdb)
28310 -exec-run
28311 ^running
28312 (gdb)
28313 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
28314 frame=@{func="main",args=[],file="recursive2.c",
28315 fullname="/home/foo/bar/recursive2.c",line="4"@}
28316 (gdb)
28317 @end smallexample
28318
28319 @noindent
28320 Program exited normally:
28321
28322 @smallexample
28323 (gdb)
28324 -exec-run
28325 ^running
28326 (gdb)
28327 x = 55
28328 *stopped,reason="exited-normally"
28329 (gdb)
28330 @end smallexample
28331
28332 @noindent
28333 Program exited exceptionally:
28334
28335 @smallexample
28336 (gdb)
28337 -exec-run
28338 ^running
28339 (gdb)
28340 x = 55
28341 *stopped,reason="exited",exit-code="01"
28342 (gdb)
28343 @end smallexample
28344
28345 Another way the program can terminate is if it receives a signal such as
28346 @code{SIGINT}. In this case, @sc{gdb/mi} displays this:
28347
28348 @smallexample
28349 (gdb)
28350 *stopped,reason="exited-signalled",signal-name="SIGINT",
28351 signal-meaning="Interrupt"
28352 @end smallexample
28353
28354
28355 @c @subheading -exec-signal
28356
28357
28358 @subheading The @code{-exec-step} Command
28359 @findex -exec-step
28360
28361 @subsubheading Synopsis
28362
28363 @smallexample
28364 -exec-step [--reverse]
28365 @end smallexample
28366
28367 Resumes execution of the inferior program, stopping when the beginning
28368 of the next source line is reached, if the next source line is not a
28369 function call. If it is, stop at the first instruction of the called
28370 function. If the @samp{--reverse} option is specified, resumes reverse
28371 execution of the inferior program, stopping at the beginning of the
28372 previously executed source line.
28373
28374 @subsubheading @value{GDBN} Command
28375
28376 The corresponding @value{GDBN} command is @samp{step}.
28377
28378 @subsubheading Example
28379
28380 Stepping into a function:
28381
28382 @smallexample
28383 -exec-step
28384 ^running
28385 (gdb)
28386 *stopped,reason="end-stepping-range",
28387 frame=@{func="foo",args=[@{name="a",value="10"@},
28388 @{name="b",value="0"@}],file="recursive2.c",
28389 fullname="/home/foo/bar/recursive2.c",line="11"@}
28390 (gdb)
28391 @end smallexample
28392
28393 Regular stepping:
28394
28395 @smallexample
28396 -exec-step
28397 ^running
28398 (gdb)
28399 *stopped,reason="end-stepping-range",line="14",file="recursive2.c"
28400 (gdb)
28401 @end smallexample
28402
28403
28404 @subheading The @code{-exec-step-instruction} Command
28405 @findex -exec-step-instruction
28406
28407 @subsubheading Synopsis
28408
28409 @smallexample
28410 -exec-step-instruction [--reverse]
28411 @end smallexample
28412
28413 Resumes the inferior which executes one machine instruction. If the
28414 @samp{--reverse} option is specified, resumes reverse execution of the
28415 inferior program, stopping at the previously executed instruction.
28416 The output, once @value{GDBN} has stopped, will vary depending on
28417 whether we have stopped in the middle of a source line or not. In the
28418 former case, the address at which the program stopped will be printed
28419 as well.
28420
28421 @subsubheading @value{GDBN} Command
28422
28423 The corresponding @value{GDBN} command is @samp{stepi}.
28424
28425 @subsubheading Example
28426
28427 @smallexample
28428 (gdb)
28429 -exec-step-instruction
28430 ^running
28431
28432 (gdb)
28433 *stopped,reason="end-stepping-range",
28434 frame=@{func="foo",args=[],file="try.c",
28435 fullname="/home/foo/bar/try.c",line="10"@}
28436 (gdb)
28437 -exec-step-instruction
28438 ^running
28439
28440 (gdb)
28441 *stopped,reason="end-stepping-range",
28442 frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
28443 fullname="/home/foo/bar/try.c",line="10"@}
28444 (gdb)
28445 @end smallexample
28446
28447
28448 @subheading The @code{-exec-until} Command
28449 @findex -exec-until
28450
28451 @subsubheading Synopsis
28452
28453 @smallexample
28454 -exec-until [ @var{location} ]
28455 @end smallexample
28456
28457 Executes the inferior until the @var{location} specified in the
28458 argument is reached. If there is no argument, the inferior executes
28459 until a source line greater than the current one is reached. The
28460 reason for stopping in this case will be @samp{location-reached}.
28461
28462 @subsubheading @value{GDBN} Command
28463
28464 The corresponding @value{GDBN} command is @samp{until}.
28465
28466 @subsubheading Example
28467
28468 @smallexample
28469 (gdb)
28470 -exec-until recursive2.c:6
28471 ^running
28472 (gdb)
28473 x = 55
28474 *stopped,reason="location-reached",frame=@{func="main",args=[],
28475 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
28476 (gdb)
28477 @end smallexample
28478
28479 @ignore
28480 @subheading -file-clear
28481 Is this going away????
28482 @end ignore
28483
28484 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28485 @node GDB/MI Stack Manipulation
28486 @section @sc{gdb/mi} Stack Manipulation Commands
28487
28488
28489 @subheading The @code{-stack-info-frame} Command
28490 @findex -stack-info-frame
28491
28492 @subsubheading Synopsis
28493
28494 @smallexample
28495 -stack-info-frame
28496 @end smallexample
28497
28498 Get info on the selected frame.
28499
28500 @subsubheading @value{GDBN} Command
28501
28502 The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
28503 (without arguments).
28504
28505 @subsubheading Example
28506
28507 @smallexample
28508 (gdb)
28509 -stack-info-frame
28510 ^done,frame=@{level="1",addr="0x0001076c",func="callee3",
28511 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28512 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
28513 (gdb)
28514 @end smallexample
28515
28516 @subheading The @code{-stack-info-depth} Command
28517 @findex -stack-info-depth
28518
28519 @subsubheading Synopsis
28520
28521 @smallexample
28522 -stack-info-depth [ @var{max-depth} ]
28523 @end smallexample
28524
28525 Return the depth of the stack. If the integer argument @var{max-depth}
28526 is specified, do not count beyond @var{max-depth} frames.
28527
28528 @subsubheading @value{GDBN} Command
28529
28530 There's no equivalent @value{GDBN} command.
28531
28532 @subsubheading Example
28533
28534 For a stack with frame levels 0 through 11:
28535
28536 @smallexample
28537 (gdb)
28538 -stack-info-depth
28539 ^done,depth="12"
28540 (gdb)
28541 -stack-info-depth 4
28542 ^done,depth="4"
28543 (gdb)
28544 -stack-info-depth 12
28545 ^done,depth="12"
28546 (gdb)
28547 -stack-info-depth 11
28548 ^done,depth="11"
28549 (gdb)
28550 -stack-info-depth 13
28551 ^done,depth="12"
28552 (gdb)
28553 @end smallexample
28554
28555 @subheading The @code{-stack-list-arguments} Command
28556 @findex -stack-list-arguments
28557
28558 @subsubheading Synopsis
28559
28560 @smallexample
28561 -stack-list-arguments @var{print-values}
28562 [ @var{low-frame} @var{high-frame} ]
28563 @end smallexample
28564
28565 Display a list of the arguments for the frames between @var{low-frame}
28566 and @var{high-frame} (inclusive). If @var{low-frame} and
28567 @var{high-frame} are not provided, list the arguments for the whole
28568 call stack. If the two arguments are equal, show the single frame
28569 at the corresponding level. It is an error if @var{low-frame} is
28570 larger than the actual number of frames. On the other hand,
28571 @var{high-frame} may be larger than the actual number of frames, in
28572 which case only existing frames will be returned.
28573
28574 If @var{print-values} is 0 or @code{--no-values}, print only the names of
28575 the variables; if it is 1 or @code{--all-values}, print also their
28576 values; and if it is 2 or @code{--simple-values}, print the name,
28577 type and value for simple data types, and the name and type for arrays,
28578 structures and unions.
28579
28580 Use of this command to obtain arguments in a single frame is
28581 deprecated in favor of the @samp{-stack-list-variables} command.
28582
28583 @subsubheading @value{GDBN} Command
28584
28585 @value{GDBN} does not have an equivalent command. @code{gdbtk} has a
28586 @samp{gdb_get_args} command which partially overlaps with the
28587 functionality of @samp{-stack-list-arguments}.
28588
28589 @subsubheading Example
28590
28591 @smallexample
28592 (gdb)
28593 -stack-list-frames
28594 ^done,
28595 stack=[
28596 frame=@{level="0",addr="0x00010734",func="callee4",
28597 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28598 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
28599 frame=@{level="1",addr="0x0001076c",func="callee3",
28600 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28601 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
28602 frame=@{level="2",addr="0x0001078c",func="callee2",
28603 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28604 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
28605 frame=@{level="3",addr="0x000107b4",func="callee1",
28606 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28607 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
28608 frame=@{level="4",addr="0x000107e0",func="main",
28609 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28610 fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
28611 (gdb)
28612 -stack-list-arguments 0
28613 ^done,
28614 stack-args=[
28615 frame=@{level="0",args=[]@},
28616 frame=@{level="1",args=[name="strarg"]@},
28617 frame=@{level="2",args=[name="intarg",name="strarg"]@},
28618 frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
28619 frame=@{level="4",args=[]@}]
28620 (gdb)
28621 -stack-list-arguments 1
28622 ^done,
28623 stack-args=[
28624 frame=@{level="0",args=[]@},
28625 frame=@{level="1",
28626 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
28627 frame=@{level="2",args=[
28628 @{name="intarg",value="2"@},
28629 @{name="strarg",value="0x11940 \"A string argument.\""@}]@},
28630 @{frame=@{level="3",args=[
28631 @{name="intarg",value="2"@},
28632 @{name="strarg",value="0x11940 \"A string argument.\""@},
28633 @{name="fltarg",value="3.5"@}]@},
28634 frame=@{level="4",args=[]@}]
28635 (gdb)
28636 -stack-list-arguments 0 2 2
28637 ^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
28638 (gdb)
28639 -stack-list-arguments 1 2 2
28640 ^done,stack-args=[frame=@{level="2",
28641 args=[@{name="intarg",value="2"@},
28642 @{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
28643 (gdb)
28644 @end smallexample
28645
28646 @c @subheading -stack-list-exception-handlers
28647
28648
28649 @subheading The @code{-stack-list-frames} Command
28650 @findex -stack-list-frames
28651
28652 @subsubheading Synopsis
28653
28654 @smallexample
28655 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
28656 @end smallexample
28657
28658 List the frames currently on the stack. For each frame it displays the
28659 following info:
28660
28661 @table @samp
28662 @item @var{level}
28663 The frame number, 0 being the topmost frame, i.e., the innermost function.
28664 @item @var{addr}
28665 The @code{$pc} value for that frame.
28666 @item @var{func}
28667 Function name.
28668 @item @var{file}
28669 File name of the source file where the function lives.
28670 @item @var{fullname}
28671 The full file name of the source file where the function lives.
28672 @item @var{line}
28673 Line number corresponding to the @code{$pc}.
28674 @item @var{from}
28675 The shared library where this function is defined. This is only given
28676 if the frame's function is not known.
28677 @end table
28678
28679 If invoked without arguments, this command prints a backtrace for the
28680 whole stack. If given two integer arguments, it shows the frames whose
28681 levels are between the two arguments (inclusive). If the two arguments
28682 are equal, it shows the single frame at the corresponding level. It is
28683 an error if @var{low-frame} is larger than the actual number of
28684 frames. On the other hand, @var{high-frame} may be larger than the
28685 actual number of frames, in which case only existing frames will be returned.
28686
28687 @subsubheading @value{GDBN} Command
28688
28689 The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
28690
28691 @subsubheading Example
28692
28693 Full stack backtrace:
28694
28695 @smallexample
28696 (gdb)
28697 -stack-list-frames
28698 ^done,stack=
28699 [frame=@{level="0",addr="0x0001076c",func="foo",
28700 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
28701 frame=@{level="1",addr="0x000107a4",func="foo",
28702 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28703 frame=@{level="2",addr="0x000107a4",func="foo",
28704 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28705 frame=@{level="3",addr="0x000107a4",func="foo",
28706 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28707 frame=@{level="4",addr="0x000107a4",func="foo",
28708 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28709 frame=@{level="5",addr="0x000107a4",func="foo",
28710 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28711 frame=@{level="6",addr="0x000107a4",func="foo",
28712 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28713 frame=@{level="7",addr="0x000107a4",func="foo",
28714 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28715 frame=@{level="8",addr="0x000107a4",func="foo",
28716 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28717 frame=@{level="9",addr="0x000107a4",func="foo",
28718 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28719 frame=@{level="10",addr="0x000107a4",func="foo",
28720 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28721 frame=@{level="11",addr="0x00010738",func="main",
28722 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
28723 (gdb)
28724 @end smallexample
28725
28726 Show frames between @var{low_frame} and @var{high_frame}:
28727
28728 @smallexample
28729 (gdb)
28730 -stack-list-frames 3 5
28731 ^done,stack=
28732 [frame=@{level="3",addr="0x000107a4",func="foo",
28733 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28734 frame=@{level="4",addr="0x000107a4",func="foo",
28735 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
28736 frame=@{level="5",addr="0x000107a4",func="foo",
28737 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
28738 (gdb)
28739 @end smallexample
28740
28741 Show a single frame:
28742
28743 @smallexample
28744 (gdb)
28745 -stack-list-frames 3 3
28746 ^done,stack=
28747 [frame=@{level="3",addr="0x000107a4",func="foo",
28748 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
28749 (gdb)
28750 @end smallexample
28751
28752
28753 @subheading The @code{-stack-list-locals} Command
28754 @findex -stack-list-locals
28755
28756 @subsubheading Synopsis
28757
28758 @smallexample
28759 -stack-list-locals @var{print-values}
28760 @end smallexample
28761
28762 Display the local variable names for the selected frame. If
28763 @var{print-values} is 0 or @code{--no-values}, print only the names of
28764 the variables; if it is 1 or @code{--all-values}, print also their
28765 values; and if it is 2 or @code{--simple-values}, print the name,
28766 type and value for simple data types, and the name and type for arrays,
28767 structures and unions. In this last case, a frontend can immediately
28768 display the value of simple data types and create variable objects for
28769 other data types when the user wishes to explore their values in
28770 more detail.
28771
28772 This command is deprecated in favor of the
28773 @samp{-stack-list-variables} command.
28774
28775 @subsubheading @value{GDBN} Command
28776
28777 @samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
28778
28779 @subsubheading Example
28780
28781 @smallexample
28782 (gdb)
28783 -stack-list-locals 0
28784 ^done,locals=[name="A",name="B",name="C"]
28785 (gdb)
28786 -stack-list-locals --all-values
28787 ^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
28788 @{name="C",value="@{1, 2, 3@}"@}]
28789 -stack-list-locals --simple-values
28790 ^done,locals=[@{name="A",type="int",value="1"@},
28791 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
28792 (gdb)
28793 @end smallexample
28794
28795 @subheading The @code{-stack-list-variables} Command
28796 @findex -stack-list-variables
28797
28798 @subsubheading Synopsis
28799
28800 @smallexample
28801 -stack-list-variables @var{print-values}
28802 @end smallexample
28803
28804 Display the names of local variables and function arguments for the selected frame. If
28805 @var{print-values} is 0 or @code{--no-values}, print only the names of
28806 the variables; if it is 1 or @code{--all-values}, print also their
28807 values; and if it is 2 or @code{--simple-values}, print the name,
28808 type and value for simple data types, and the name and type for arrays,
28809 structures and unions.
28810
28811 @subsubheading Example
28812
28813 @smallexample
28814 (gdb)
28815 -stack-list-variables --thread 1 --frame 0 --all-values
28816 ^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
28817 (gdb)
28818 @end smallexample
28819
28820
28821 @subheading The @code{-stack-select-frame} Command
28822 @findex -stack-select-frame
28823
28824 @subsubheading Synopsis
28825
28826 @smallexample
28827 -stack-select-frame @var{framenum}
28828 @end smallexample
28829
28830 Change the selected frame. Select a different frame @var{framenum} on
28831 the stack.
28832
28833 This command in deprecated in favor of passing the @samp{--frame}
28834 option to every command.
28835
28836 @subsubheading @value{GDBN} Command
28837
28838 The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
28839 @samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
28840
28841 @subsubheading Example
28842
28843 @smallexample
28844 (gdb)
28845 -stack-select-frame 2
28846 ^done
28847 (gdb)
28848 @end smallexample
28849
28850 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28851 @node GDB/MI Variable Objects
28852 @section @sc{gdb/mi} Variable Objects
28853
28854 @ignore
28855
28856 @subheading Motivation for Variable Objects in @sc{gdb/mi}
28857
28858 For the implementation of a variable debugger window (locals, watched
28859 expressions, etc.), we are proposing the adaptation of the existing code
28860 used by @code{Insight}.
28861
28862 The two main reasons for that are:
28863
28864 @enumerate 1
28865 @item
28866 It has been proven in practice (it is already on its second generation).
28867
28868 @item
28869 It will shorten development time (needless to say how important it is
28870 now).
28871 @end enumerate
28872
28873 The original interface was designed to be used by Tcl code, so it was
28874 slightly changed so it could be used through @sc{gdb/mi}. This section
28875 describes the @sc{gdb/mi} operations that will be available and gives some
28876 hints about their use.
28877
28878 @emph{Note}: In addition to the set of operations described here, we
28879 expect the @sc{gui} implementation of a variable window to require, at
28880 least, the following operations:
28881
28882 @itemize @bullet
28883 @item @code{-gdb-show} @code{output-radix}
28884 @item @code{-stack-list-arguments}
28885 @item @code{-stack-list-locals}
28886 @item @code{-stack-select-frame}
28887 @end itemize
28888
28889 @end ignore
28890
28891 @subheading Introduction to Variable Objects
28892
28893 @cindex variable objects in @sc{gdb/mi}
28894
28895 Variable objects are "object-oriented" MI interface for examining and
28896 changing values of expressions. Unlike some other MI interfaces that
28897 work with expressions, variable objects are specifically designed for
28898 simple and efficient presentation in the frontend. A variable object
28899 is identified by string name. When a variable object is created, the
28900 frontend specifies the expression for that variable object. The
28901 expression can be a simple variable, or it can be an arbitrary complex
28902 expression, and can even involve CPU registers. After creating a
28903 variable object, the frontend can invoke other variable object
28904 operations---for example to obtain or change the value of a variable
28905 object, or to change display format.
28906
28907 Variable objects have hierarchical tree structure. Any variable object
28908 that corresponds to a composite type, such as structure in C, has
28909 a number of child variable objects, for example corresponding to each
28910 element of a structure. A child variable object can itself have
28911 children, recursively. Recursion ends when we reach
28912 leaf variable objects, which always have built-in types. Child variable
28913 objects are created only by explicit request, so if a frontend
28914 is not interested in the children of a particular variable object, no
28915 child will be created.
28916
28917 For a leaf variable object it is possible to obtain its value as a
28918 string, or set the value from a string. String value can be also
28919 obtained for a non-leaf variable object, but it's generally a string
28920 that only indicates the type of the object, and does not list its
28921 contents. Assignment to a non-leaf variable object is not allowed.
28922
28923 A frontend does not need to read the values of all variable objects each time
28924 the program stops. Instead, MI provides an update command that lists all
28925 variable objects whose values has changed since the last update
28926 operation. This considerably reduces the amount of data that must
28927 be transferred to the frontend. As noted above, children variable
28928 objects are created on demand, and only leaf variable objects have a
28929 real value. As result, gdb will read target memory only for leaf
28930 variables that frontend has created.
28931
28932 The automatic update is not always desirable. For example, a frontend
28933 might want to keep a value of some expression for future reference,
28934 and never update it. For another example, fetching memory is
28935 relatively slow for embedded targets, so a frontend might want
28936 to disable automatic update for the variables that are either not
28937 visible on the screen, or ``closed''. This is possible using so
28938 called ``frozen variable objects''. Such variable objects are never
28939 implicitly updated.
28940
28941 Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
28942 fixed variable object, the expression is parsed when the variable
28943 object is created, including associating identifiers to specific
28944 variables. The meaning of expression never changes. For a floating
28945 variable object the values of variables whose names appear in the
28946 expressions are re-evaluated every time in the context of the current
28947 frame. Consider this example:
28948
28949 @smallexample
28950 void do_work(...)
28951 @{
28952 struct work_state state;
28953
28954 if (...)
28955 do_work(...);
28956 @}
28957 @end smallexample
28958
28959 If a fixed variable object for the @code{state} variable is created in
28960 this function, and we enter the recursive call, the variable
28961 object will report the value of @code{state} in the top-level
28962 @code{do_work} invocation. On the other hand, a floating variable
28963 object will report the value of @code{state} in the current frame.
28964
28965 If an expression specified when creating a fixed variable object
28966 refers to a local variable, the variable object becomes bound to the
28967 thread and frame in which the variable object is created. When such
28968 variable object is updated, @value{GDBN} makes sure that the
28969 thread/frame combination the variable object is bound to still exists,
28970 and re-evaluates the variable object in context of that thread/frame.
28971
28972 The following is the complete set of @sc{gdb/mi} operations defined to
28973 access this functionality:
28974
28975 @multitable @columnfractions .4 .6
28976 @item @strong{Operation}
28977 @tab @strong{Description}
28978
28979 @item @code{-enable-pretty-printing}
28980 @tab enable Python-based pretty-printing
28981 @item @code{-var-create}
28982 @tab create a variable object
28983 @item @code{-var-delete}
28984 @tab delete the variable object and/or its children
28985 @item @code{-var-set-format}
28986 @tab set the display format of this variable
28987 @item @code{-var-show-format}
28988 @tab show the display format of this variable
28989 @item @code{-var-info-num-children}
28990 @tab tells how many children this object has
28991 @item @code{-var-list-children}
28992 @tab return a list of the object's children
28993 @item @code{-var-info-type}
28994 @tab show the type of this variable object
28995 @item @code{-var-info-expression}
28996 @tab print parent-relative expression that this variable object represents
28997 @item @code{-var-info-path-expression}
28998 @tab print full expression that this variable object represents
28999 @item @code{-var-show-attributes}
29000 @tab is this variable editable? does it exist here?
29001 @item @code{-var-evaluate-expression}
29002 @tab get the value of this variable
29003 @item @code{-var-assign}
29004 @tab set the value of this variable
29005 @item @code{-var-update}
29006 @tab update the variable and its children
29007 @item @code{-var-set-frozen}
29008 @tab set frozeness attribute
29009 @item @code{-var-set-update-range}
29010 @tab set range of children to display on update
29011 @end multitable
29012
29013 In the next subsection we describe each operation in detail and suggest
29014 how it can be used.
29015
29016 @subheading Description And Use of Operations on Variable Objects
29017
29018 @subheading The @code{-enable-pretty-printing} Command
29019 @findex -enable-pretty-printing
29020
29021 @smallexample
29022 -enable-pretty-printing
29023 @end smallexample
29024
29025 @value{GDBN} allows Python-based visualizers to affect the output of the
29026 MI variable object commands. However, because there was no way to
29027 implement this in a fully backward-compatible way, a front end must
29028 request that this functionality be enabled.
29029
29030 Once enabled, this feature cannot be disabled.
29031
29032 Note that if Python support has not been compiled into @value{GDBN},
29033 this command will still succeed (and do nothing).
29034
29035 This feature is currently (as of @value{GDBN} 7.0) experimental, and
29036 may work differently in future versions of @value{GDBN}.
29037
29038 @subheading The @code{-var-create} Command
29039 @findex -var-create
29040
29041 @subsubheading Synopsis
29042
29043 @smallexample
29044 -var-create @{@var{name} | "-"@}
29045 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
29046 @end smallexample
29047
29048 This operation creates a variable object, which allows the monitoring of
29049 a variable, the result of an expression, a memory cell or a CPU
29050 register.
29051
29052 The @var{name} parameter is the string by which the object can be
29053 referenced. It must be unique. If @samp{-} is specified, the varobj
29054 system will generate a string ``varNNNNNN'' automatically. It will be
29055 unique provided that one does not specify @var{name} of that format.
29056 The command fails if a duplicate name is found.
29057
29058 The frame under which the expression should be evaluated can be
29059 specified by @var{frame-addr}. A @samp{*} indicates that the current
29060 frame should be used. A @samp{@@} indicates that a floating variable
29061 object must be created.
29062
29063 @var{expression} is any expression valid on the current language set (must not
29064 begin with a @samp{*}), or one of the following:
29065
29066 @itemize @bullet
29067 @item
29068 @samp{*@var{addr}}, where @var{addr} is the address of a memory cell
29069
29070 @item
29071 @samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
29072
29073 @item
29074 @samp{$@var{regname}} --- a CPU register name
29075 @end itemize
29076
29077 @cindex dynamic varobj
29078 A varobj's contents may be provided by a Python-based pretty-printer. In this
29079 case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
29080 have slightly different semantics in some cases. If the
29081 @code{-enable-pretty-printing} command is not sent, then @value{GDBN}
29082 will never create a dynamic varobj. This ensures backward
29083 compatibility for existing clients.
29084
29085 @subsubheading Result
29086
29087 This operation returns attributes of the newly-created varobj. These
29088 are:
29089
29090 @table @samp
29091 @item name
29092 The name of the varobj.
29093
29094 @item numchild
29095 The number of children of the varobj. This number is not necessarily
29096 reliable for a dynamic varobj. Instead, you must examine the
29097 @samp{has_more} attribute.
29098
29099 @item value
29100 The varobj's scalar value. For a varobj whose type is some sort of
29101 aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
29102 will not be interesting.
29103
29104 @item type
29105 The varobj's type. This is a string representation of the type, as
29106 would be printed by the @value{GDBN} CLI.
29107
29108 @item thread-id
29109 If a variable object is bound to a specific thread, then this is the
29110 thread's identifier.
29111
29112 @item has_more
29113 For a dynamic varobj, this indicates whether there appear to be any
29114 children available. For a non-dynamic varobj, this will be 0.
29115
29116 @item dynamic
29117 This attribute will be present and have the value @samp{1} if the
29118 varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
29119 then this attribute will not be present.
29120
29121 @item displayhint
29122 A dynamic varobj can supply a display hint to the front end. The
29123 value comes directly from the Python pretty-printer object's
29124 @code{display_hint} method. @xref{Pretty Printing API}.
29125 @end table
29126
29127 Typical output will look like this:
29128
29129 @smallexample
29130 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
29131 has_more="@var{has_more}"
29132 @end smallexample
29133
29134
29135 @subheading The @code{-var-delete} Command
29136 @findex -var-delete
29137
29138 @subsubheading Synopsis
29139
29140 @smallexample
29141 -var-delete [ -c ] @var{name}
29142 @end smallexample
29143
29144 Deletes a previously created variable object and all of its children.
29145 With the @samp{-c} option, just deletes the children.
29146
29147 Returns an error if the object @var{name} is not found.
29148
29149
29150 @subheading The @code{-var-set-format} Command
29151 @findex -var-set-format
29152
29153 @subsubheading Synopsis
29154
29155 @smallexample
29156 -var-set-format @var{name} @var{format-spec}
29157 @end smallexample
29158
29159 Sets the output format for the value of the object @var{name} to be
29160 @var{format-spec}.
29161
29162 @anchor{-var-set-format}
29163 The syntax for the @var{format-spec} is as follows:
29164
29165 @smallexample
29166 @var{format-spec} @expansion{}
29167 @{binary | decimal | hexadecimal | octal | natural@}
29168 @end smallexample
29169
29170 The natural format is the default format choosen automatically
29171 based on the variable type (like decimal for an @code{int}, hex
29172 for pointers, etc.).
29173
29174 For a variable with children, the format is set only on the
29175 variable itself, and the children are not affected.
29176
29177 @subheading The @code{-var-show-format} Command
29178 @findex -var-show-format
29179
29180 @subsubheading Synopsis
29181
29182 @smallexample
29183 -var-show-format @var{name}
29184 @end smallexample
29185
29186 Returns the format used to display the value of the object @var{name}.
29187
29188 @smallexample
29189 @var{format} @expansion{}
29190 @var{format-spec}
29191 @end smallexample
29192
29193
29194 @subheading The @code{-var-info-num-children} Command
29195 @findex -var-info-num-children
29196
29197 @subsubheading Synopsis
29198
29199 @smallexample
29200 -var-info-num-children @var{name}
29201 @end smallexample
29202
29203 Returns the number of children of a variable object @var{name}:
29204
29205 @smallexample
29206 numchild=@var{n}
29207 @end smallexample
29208
29209 Note that this number is not completely reliable for a dynamic varobj.
29210 It will return the current number of children, but more children may
29211 be available.
29212
29213
29214 @subheading The @code{-var-list-children} Command
29215 @findex -var-list-children
29216
29217 @subsubheading Synopsis
29218
29219 @smallexample
29220 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
29221 @end smallexample
29222 @anchor{-var-list-children}
29223
29224 Return a list of the children of the specified variable object and
29225 create variable objects for them, if they do not already exist. With
29226 a single argument or if @var{print-values} has a value of 0 or
29227 @code{--no-values}, print only the names of the variables; if
29228 @var{print-values} is 1 or @code{--all-values}, also print their
29229 values; and if it is 2 or @code{--simple-values} print the name and
29230 value for simple data types and just the name for arrays, structures
29231 and unions.
29232
29233 @var{from} and @var{to}, if specified, indicate the range of children
29234 to report. If @var{from} or @var{to} is less than zero, the range is
29235 reset and all children will be reported. Otherwise, children starting
29236 at @var{from} (zero-based) and up to and excluding @var{to} will be
29237 reported.
29238
29239 If a child range is requested, it will only affect the current call to
29240 @code{-var-list-children}, but not future calls to @code{-var-update}.
29241 For this, you must instead use @code{-var-set-update-range}. The
29242 intent of this approach is to enable a front end to implement any
29243 update approach it likes; for example, scrolling a view may cause the
29244 front end to request more children with @code{-var-list-children}, and
29245 then the front end could call @code{-var-set-update-range} with a
29246 different range to ensure that future updates are restricted to just
29247 the visible items.
29248
29249 For each child the following results are returned:
29250
29251 @table @var
29252
29253 @item name
29254 Name of the variable object created for this child.
29255
29256 @item exp
29257 The expression to be shown to the user by the front end to designate this child.
29258 For example this may be the name of a structure member.
29259
29260 For a dynamic varobj, this value cannot be used to form an
29261 expression. There is no way to do this at all with a dynamic varobj.
29262
29263 For C/C@t{++} structures there are several pseudo children returned to
29264 designate access qualifiers. For these pseudo children @var{exp} is
29265 @samp{public}, @samp{private}, or @samp{protected}. In this case the
29266 type and value are not present.
29267
29268 A dynamic varobj will not report the access qualifying
29269 pseudo-children, regardless of the language. This information is not
29270 available at all with a dynamic varobj.
29271
29272 @item numchild
29273 Number of children this child has. For a dynamic varobj, this will be
29274 0.
29275
29276 @item type
29277 The type of the child.
29278
29279 @item value
29280 If values were requested, this is the value.
29281
29282 @item thread-id
29283 If this variable object is associated with a thread, this is the thread id.
29284 Otherwise this result is not present.
29285
29286 @item frozen
29287 If the variable object is frozen, this variable will be present with a value of 1.
29288 @end table
29289
29290 The result may have its own attributes:
29291
29292 @table @samp
29293 @item displayhint
29294 A dynamic varobj can supply a display hint to the front end. The
29295 value comes directly from the Python pretty-printer object's
29296 @code{display_hint} method. @xref{Pretty Printing API}.
29297
29298 @item has_more
29299 This is an integer attribute which is nonzero if there are children
29300 remaining after the end of the selected range.
29301 @end table
29302
29303 @subsubheading Example
29304
29305 @smallexample
29306 (gdb)
29307 -var-list-children n
29308 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
29309 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
29310 (gdb)
29311 -var-list-children --all-values n
29312 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
29313 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
29314 @end smallexample
29315
29316
29317 @subheading The @code{-var-info-type} Command
29318 @findex -var-info-type
29319
29320 @subsubheading Synopsis
29321
29322 @smallexample
29323 -var-info-type @var{name}
29324 @end smallexample
29325
29326 Returns the type of the specified variable @var{name}. The type is
29327 returned as a string in the same format as it is output by the
29328 @value{GDBN} CLI:
29329
29330 @smallexample
29331 type=@var{typename}
29332 @end smallexample
29333
29334
29335 @subheading The @code{-var-info-expression} Command
29336 @findex -var-info-expression
29337
29338 @subsubheading Synopsis
29339
29340 @smallexample
29341 -var-info-expression @var{name}
29342 @end smallexample
29343
29344 Returns a string that is suitable for presenting this
29345 variable object in user interface. The string is generally
29346 not valid expression in the current language, and cannot be evaluated.
29347
29348 For example, if @code{a} is an array, and variable object
29349 @code{A} was created for @code{a}, then we'll get this output:
29350
29351 @smallexample
29352 (gdb) -var-info-expression A.1
29353 ^done,lang="C",exp="1"
29354 @end smallexample
29355
29356 @noindent
29357 Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
29358
29359 Note that the output of the @code{-var-list-children} command also
29360 includes those expressions, so the @code{-var-info-expression} command
29361 is of limited use.
29362
29363 @subheading The @code{-var-info-path-expression} Command
29364 @findex -var-info-path-expression
29365
29366 @subsubheading Synopsis
29367
29368 @smallexample
29369 -var-info-path-expression @var{name}
29370 @end smallexample
29371
29372 Returns an expression that can be evaluated in the current
29373 context and will yield the same value that a variable object has.
29374 Compare this with the @code{-var-info-expression} command, which
29375 result can be used only for UI presentation. Typical use of
29376 the @code{-var-info-path-expression} command is creating a
29377 watchpoint from a variable object.
29378
29379 This command is currently not valid for children of a dynamic varobj,
29380 and will give an error when invoked on one.
29381
29382 For example, suppose @code{C} is a C@t{++} class, derived from class
29383 @code{Base}, and that the @code{Base} class has a member called
29384 @code{m_size}. Assume a variable @code{c} is has the type of
29385 @code{C} and a variable object @code{C} was created for variable
29386 @code{c}. Then, we'll get this output:
29387 @smallexample
29388 (gdb) -var-info-path-expression C.Base.public.m_size
29389 ^done,path_expr=((Base)c).m_size)
29390 @end smallexample
29391
29392 @subheading The @code{-var-show-attributes} Command
29393 @findex -var-show-attributes
29394
29395 @subsubheading Synopsis
29396
29397 @smallexample
29398 -var-show-attributes @var{name}
29399 @end smallexample
29400
29401 List attributes of the specified variable object @var{name}:
29402
29403 @smallexample
29404 status=@var{attr} [ ( ,@var{attr} )* ]
29405 @end smallexample
29406
29407 @noindent
29408 where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
29409
29410 @subheading The @code{-var-evaluate-expression} Command
29411 @findex -var-evaluate-expression
29412
29413 @subsubheading Synopsis
29414
29415 @smallexample
29416 -var-evaluate-expression [-f @var{format-spec}] @var{name}
29417 @end smallexample
29418
29419 Evaluates the expression that is represented by the specified variable
29420 object and returns its value as a string. The format of the string
29421 can be specified with the @samp{-f} option. The possible values of
29422 this option are the same as for @code{-var-set-format}
29423 (@pxref{-var-set-format}). If the @samp{-f} option is not specified,
29424 the current display format will be used. The current display format
29425 can be changed using the @code{-var-set-format} command.
29426
29427 @smallexample
29428 value=@var{value}
29429 @end smallexample
29430
29431 Note that one must invoke @code{-var-list-children} for a variable
29432 before the value of a child variable can be evaluated.
29433
29434 @subheading The @code{-var-assign} Command
29435 @findex -var-assign
29436
29437 @subsubheading Synopsis
29438
29439 @smallexample
29440 -var-assign @var{name} @var{expression}
29441 @end smallexample
29442
29443 Assigns the value of @var{expression} to the variable object specified
29444 by @var{name}. The object must be @samp{editable}. If the variable's
29445 value is altered by the assign, the variable will show up in any
29446 subsequent @code{-var-update} list.
29447
29448 @subsubheading Example
29449
29450 @smallexample
29451 (gdb)
29452 -var-assign var1 3
29453 ^done,value="3"
29454 (gdb)
29455 -var-update *
29456 ^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
29457 (gdb)
29458 @end smallexample
29459
29460 @subheading The @code{-var-update} Command
29461 @findex -var-update
29462
29463 @subsubheading Synopsis
29464
29465 @smallexample
29466 -var-update [@var{print-values}] @{@var{name} | "*"@}
29467 @end smallexample
29468
29469 Reevaluate the expressions corresponding to the variable object
29470 @var{name} and all its direct and indirect children, and return the
29471 list of variable objects whose values have changed; @var{name} must
29472 be a root variable object. Here, ``changed'' means that the result of
29473 @code{-var-evaluate-expression} before and after the
29474 @code{-var-update} is different. If @samp{*} is used as the variable
29475 object names, all existing variable objects are updated, except
29476 for frozen ones (@pxref{-var-set-frozen}). The option
29477 @var{print-values} determines whether both names and values, or just
29478 names are printed. The possible values of this option are the same
29479 as for @code{-var-list-children} (@pxref{-var-list-children}). It is
29480 recommended to use the @samp{--all-values} option, to reduce the
29481 number of MI commands needed on each program stop.
29482
29483 With the @samp{*} parameter, if a variable object is bound to a
29484 currently running thread, it will not be updated, without any
29485 diagnostic.
29486
29487 If @code{-var-set-update-range} was previously used on a varobj, then
29488 only the selected range of children will be reported.
29489
29490 @code{-var-update} reports all the changed varobjs in a tuple named
29491 @samp{changelist}.
29492
29493 Each item in the change list is itself a tuple holding:
29494
29495 @table @samp
29496 @item name
29497 The name of the varobj.
29498
29499 @item value
29500 If values were requested for this update, then this field will be
29501 present and will hold the value of the varobj.
29502
29503 @item in_scope
29504 @anchor{-var-update}
29505 This field is a string which may take one of three values:
29506
29507 @table @code
29508 @item "true"
29509 The variable object's current value is valid.
29510
29511 @item "false"
29512 The variable object does not currently hold a valid value but it may
29513 hold one in the future if its associated expression comes back into
29514 scope.
29515
29516 @item "invalid"
29517 The variable object no longer holds a valid value.
29518 This can occur when the executable file being debugged has changed,
29519 either through recompilation or by using the @value{GDBN} @code{file}
29520 command. The front end should normally choose to delete these variable
29521 objects.
29522 @end table
29523
29524 In the future new values may be added to this list so the front should
29525 be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
29526
29527 @item type_changed
29528 This is only present if the varobj is still valid. If the type
29529 changed, then this will be the string @samp{true}; otherwise it will
29530 be @samp{false}.
29531
29532 When a varobj's type changes, its children are also likely to have
29533 become incorrect. Therefore, the varobj's children are automatically
29534 deleted when this attribute is @samp{true}. Also, the varobj's update
29535 range, when set using the @code{-var-set-update-range} command, is
29536 unset.
29537
29538 @item new_type
29539 If the varobj's type changed, then this field will be present and will
29540 hold the new type.
29541
29542 @item new_num_children
29543 For a dynamic varobj, if the number of children changed, or if the
29544 type changed, this will be the new number of children.
29545
29546 The @samp{numchild} field in other varobj responses is generally not
29547 valid for a dynamic varobj -- it will show the number of children that
29548 @value{GDBN} knows about, but because dynamic varobjs lazily
29549 instantiate their children, this will not reflect the number of
29550 children which may be available.
29551
29552 The @samp{new_num_children} attribute only reports changes to the
29553 number of children known by @value{GDBN}. This is the only way to
29554 detect whether an update has removed children (which necessarily can
29555 only happen at the end of the update range).
29556
29557 @item displayhint
29558 The display hint, if any.
29559
29560 @item has_more
29561 This is an integer value, which will be 1 if there are more children
29562 available outside the varobj's update range.
29563
29564 @item dynamic
29565 This attribute will be present and have the value @samp{1} if the
29566 varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
29567 then this attribute will not be present.
29568
29569 @item new_children
29570 If new children were added to a dynamic varobj within the selected
29571 update range (as set by @code{-var-set-update-range}), then they will
29572 be listed in this attribute.
29573 @end table
29574
29575 @subsubheading Example
29576
29577 @smallexample
29578 (gdb)
29579 -var-assign var1 3
29580 ^done,value="3"
29581 (gdb)
29582 -var-update --all-values var1
29583 ^done,changelist=[@{name="var1",value="3",in_scope="true",
29584 type_changed="false"@}]
29585 (gdb)
29586 @end smallexample
29587
29588 @subheading The @code{-var-set-frozen} Command
29589 @findex -var-set-frozen
29590 @anchor{-var-set-frozen}
29591
29592 @subsubheading Synopsis
29593
29594 @smallexample
29595 -var-set-frozen @var{name} @var{flag}
29596 @end smallexample
29597
29598 Set the frozenness flag on the variable object @var{name}. The
29599 @var{flag} parameter should be either @samp{1} to make the variable
29600 frozen or @samp{0} to make it unfrozen. If a variable object is
29601 frozen, then neither itself, nor any of its children, are
29602 implicitly updated by @code{-var-update} of
29603 a parent variable or by @code{-var-update *}. Only
29604 @code{-var-update} of the variable itself will update its value and
29605 values of its children. After a variable object is unfrozen, it is
29606 implicitly updated by all subsequent @code{-var-update} operations.
29607 Unfreezing a variable does not update it, only subsequent
29608 @code{-var-update} does.
29609
29610 @subsubheading Example
29611
29612 @smallexample
29613 (gdb)
29614 -var-set-frozen V 1
29615 ^done
29616 (gdb)
29617 @end smallexample
29618
29619 @subheading The @code{-var-set-update-range} command
29620 @findex -var-set-update-range
29621 @anchor{-var-set-update-range}
29622
29623 @subsubheading Synopsis
29624
29625 @smallexample
29626 -var-set-update-range @var{name} @var{from} @var{to}
29627 @end smallexample
29628
29629 Set the range of children to be returned by future invocations of
29630 @code{-var-update}.
29631
29632 @var{from} and @var{to} indicate the range of children to report. If
29633 @var{from} or @var{to} is less than zero, the range is reset and all
29634 children will be reported. Otherwise, children starting at @var{from}
29635 (zero-based) and up to and excluding @var{to} will be reported.
29636
29637 @subsubheading Example
29638
29639 @smallexample
29640 (gdb)
29641 -var-set-update-range V 1 2
29642 ^done
29643 @end smallexample
29644
29645 @subheading The @code{-var-set-visualizer} command
29646 @findex -var-set-visualizer
29647 @anchor{-var-set-visualizer}
29648
29649 @subsubheading Synopsis
29650
29651 @smallexample
29652 -var-set-visualizer @var{name} @var{visualizer}
29653 @end smallexample
29654
29655 Set a visualizer for the variable object @var{name}.
29656
29657 @var{visualizer} is the visualizer to use. The special value
29658 @samp{None} means to disable any visualizer in use.
29659
29660 If not @samp{None}, @var{visualizer} must be a Python expression.
29661 This expression must evaluate to a callable object which accepts a
29662 single argument. @value{GDBN} will call this object with the value of
29663 the varobj @var{name} as an argument (this is done so that the same
29664 Python pretty-printing code can be used for both the CLI and MI).
29665 When called, this object must return an object which conforms to the
29666 pretty-printing interface (@pxref{Pretty Printing API}).
29667
29668 The pre-defined function @code{gdb.default_visualizer} may be used to
29669 select a visualizer by following the built-in process
29670 (@pxref{Selecting Pretty-Printers}). This is done automatically when
29671 a varobj is created, and so ordinarily is not needed.
29672
29673 This feature is only available if Python support is enabled. The MI
29674 command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
29675 can be used to check this.
29676
29677 @subsubheading Example
29678
29679 Resetting the visualizer:
29680
29681 @smallexample
29682 (gdb)
29683 -var-set-visualizer V None
29684 ^done
29685 @end smallexample
29686
29687 Reselecting the default (type-based) visualizer:
29688
29689 @smallexample
29690 (gdb)
29691 -var-set-visualizer V gdb.default_visualizer
29692 ^done
29693 @end smallexample
29694
29695 Suppose @code{SomeClass} is a visualizer class. A lambda expression
29696 can be used to instantiate this class for a varobj:
29697
29698 @smallexample
29699 (gdb)
29700 -var-set-visualizer V "lambda val: SomeClass()"
29701 ^done
29702 @end smallexample
29703
29704 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29705 @node GDB/MI Data Manipulation
29706 @section @sc{gdb/mi} Data Manipulation
29707
29708 @cindex data manipulation, in @sc{gdb/mi}
29709 @cindex @sc{gdb/mi}, data manipulation
29710 This section describes the @sc{gdb/mi} commands that manipulate data:
29711 examine memory and registers, evaluate expressions, etc.
29712
29713 @c REMOVED FROM THE INTERFACE.
29714 @c @subheading -data-assign
29715 @c Change the value of a program variable. Plenty of side effects.
29716 @c @subsubheading GDB Command
29717 @c set variable
29718 @c @subsubheading Example
29719 @c N.A.
29720
29721 @subheading The @code{-data-disassemble} Command
29722 @findex -data-disassemble
29723
29724 @subsubheading Synopsis
29725
29726 @smallexample
29727 -data-disassemble
29728 [ -s @var{start-addr} -e @var{end-addr} ]
29729 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
29730 -- @var{mode}
29731 @end smallexample
29732
29733 @noindent
29734 Where:
29735
29736 @table @samp
29737 @item @var{start-addr}
29738 is the beginning address (or @code{$pc})
29739 @item @var{end-addr}
29740 is the end address
29741 @item @var{filename}
29742 is the name of the file to disassemble
29743 @item @var{linenum}
29744 is the line number to disassemble around
29745 @item @var{lines}
29746 is the number of disassembly lines to be produced. If it is -1,
29747 the whole function will be disassembled, in case no @var{end-addr} is
29748 specified. If @var{end-addr} is specified as a non-zero value, and
29749 @var{lines} is lower than the number of disassembly lines between
29750 @var{start-addr} and @var{end-addr}, only @var{lines} lines are
29751 displayed; if @var{lines} is higher than the number of lines between
29752 @var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
29753 are displayed.
29754 @item @var{mode}
29755 is either 0 (meaning only disassembly), 1 (meaning mixed source and
29756 disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning
29757 mixed source and disassembly with raw opcodes).
29758 @end table
29759
29760 @subsubheading Result
29761
29762 The output for each instruction is composed of four fields:
29763
29764 @itemize @bullet
29765 @item Address
29766 @item Func-name
29767 @item Offset
29768 @item Instruction
29769 @end itemize
29770
29771 Note that whatever included in the instruction field, is not manipulated
29772 directly by @sc{gdb/mi}, i.e., it is not possible to adjust its format.
29773
29774 @subsubheading @value{GDBN} Command
29775
29776 There's no direct mapping from this command to the CLI.
29777
29778 @subsubheading Example
29779
29780 Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
29781
29782 @smallexample
29783 (gdb)
29784 -data-disassemble -s $pc -e "$pc + 20" -- 0
29785 ^done,
29786 asm_insns=[
29787 @{address="0x000107c0",func-name="main",offset="4",
29788 inst="mov 2, %o0"@},
29789 @{address="0x000107c4",func-name="main",offset="8",
29790 inst="sethi %hi(0x11800), %o2"@},
29791 @{address="0x000107c8",func-name="main",offset="12",
29792 inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
29793 @{address="0x000107cc",func-name="main",offset="16",
29794 inst="sethi %hi(0x11800), %o2"@},
29795 @{address="0x000107d0",func-name="main",offset="20",
29796 inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
29797 (gdb)
29798 @end smallexample
29799
29800 Disassemble the whole @code{main} function. Line 32 is part of
29801 @code{main}.
29802
29803 @smallexample
29804 -data-disassemble -f basics.c -l 32 -- 0
29805 ^done,asm_insns=[
29806 @{address="0x000107bc",func-name="main",offset="0",
29807 inst="save %sp, -112, %sp"@},
29808 @{address="0x000107c0",func-name="main",offset="4",
29809 inst="mov 2, %o0"@},
29810 @{address="0x000107c4",func-name="main",offset="8",
29811 inst="sethi %hi(0x11800), %o2"@},
29812 [@dots{}]
29813 @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
29814 @{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
29815 (gdb)
29816 @end smallexample
29817
29818 Disassemble 3 instructions from the start of @code{main}:
29819
29820 @smallexample
29821 (gdb)
29822 -data-disassemble -f basics.c -l 32 -n 3 -- 0
29823 ^done,asm_insns=[
29824 @{address="0x000107bc",func-name="main",offset="0",
29825 inst="save %sp, -112, %sp"@},
29826 @{address="0x000107c0",func-name="main",offset="4",
29827 inst="mov 2, %o0"@},
29828 @{address="0x000107c4",func-name="main",offset="8",
29829 inst="sethi %hi(0x11800), %o2"@}]
29830 (gdb)
29831 @end smallexample
29832
29833 Disassemble 3 instructions from the start of @code{main} in mixed mode:
29834
29835 @smallexample
29836 (gdb)
29837 -data-disassemble -f basics.c -l 32 -n 3 -- 1
29838 ^done,asm_insns=[
29839 src_and_asm_line=@{line="31",
29840 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
29841 testsuite/gdb.mi/basics.c",line_asm_insn=[
29842 @{address="0x000107bc",func-name="main",offset="0",
29843 inst="save %sp, -112, %sp"@}]@},
29844 src_and_asm_line=@{line="32",
29845 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
29846 testsuite/gdb.mi/basics.c",line_asm_insn=[
29847 @{address="0x000107c0",func-name="main",offset="4",
29848 inst="mov 2, %o0"@},
29849 @{address="0x000107c4",func-name="main",offset="8",
29850 inst="sethi %hi(0x11800), %o2"@}]@}]
29851 (gdb)
29852 @end smallexample
29853
29854
29855 @subheading The @code{-data-evaluate-expression} Command
29856 @findex -data-evaluate-expression
29857
29858 @subsubheading Synopsis
29859
29860 @smallexample
29861 -data-evaluate-expression @var{expr}
29862 @end smallexample
29863
29864 Evaluate @var{expr} as an expression. The expression could contain an
29865 inferior function call. The function call will execute synchronously.
29866 If the expression contains spaces, it must be enclosed in double quotes.
29867
29868 @subsubheading @value{GDBN} Command
29869
29870 The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
29871 @samp{call}. In @code{gdbtk} only, there's a corresponding
29872 @samp{gdb_eval} command.
29873
29874 @subsubheading Example
29875
29876 In the following example, the numbers that precede the commands are the
29877 @dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
29878 Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
29879 output.
29880
29881 @smallexample
29882 211-data-evaluate-expression A
29883 211^done,value="1"
29884 (gdb)
29885 311-data-evaluate-expression &A
29886 311^done,value="0xefffeb7c"
29887 (gdb)
29888 411-data-evaluate-expression A+3
29889 411^done,value="4"
29890 (gdb)
29891 511-data-evaluate-expression "A + 3"
29892 511^done,value="4"
29893 (gdb)
29894 @end smallexample
29895
29896
29897 @subheading The @code{-data-list-changed-registers} Command
29898 @findex -data-list-changed-registers
29899
29900 @subsubheading Synopsis
29901
29902 @smallexample
29903 -data-list-changed-registers
29904 @end smallexample
29905
29906 Display a list of the registers that have changed.
29907
29908 @subsubheading @value{GDBN} Command
29909
29910 @value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
29911 has the corresponding command @samp{gdb_changed_register_list}.
29912
29913 @subsubheading Example
29914
29915 On a PPC MBX board:
29916
29917 @smallexample
29918 (gdb)
29919 -exec-continue
29920 ^running
29921
29922 (gdb)
29923 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
29924 func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
29925 line="5"@}
29926 (gdb)
29927 -data-list-changed-registers
29928 ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
29929 "10","11","13","14","15","16","17","18","19","20","21","22","23",
29930 "24","25","26","27","28","30","31","64","65","66","67","69"]
29931 (gdb)
29932 @end smallexample
29933
29934
29935 @subheading The @code{-data-list-register-names} Command
29936 @findex -data-list-register-names
29937
29938 @subsubheading Synopsis
29939
29940 @smallexample
29941 -data-list-register-names [ ( @var{regno} )+ ]
29942 @end smallexample
29943
29944 Show a list of register names for the current target. If no arguments
29945 are given, it shows a list of the names of all the registers. If
29946 integer numbers are given as arguments, it will print a list of the
29947 names of the registers corresponding to the arguments. To ensure
29948 consistency between a register name and its number, the output list may
29949 include empty register names.
29950
29951 @subsubheading @value{GDBN} Command
29952
29953 @value{GDBN} does not have a command which corresponds to
29954 @samp{-data-list-register-names}. In @code{gdbtk} there is a
29955 corresponding command @samp{gdb_regnames}.
29956
29957 @subsubheading Example
29958
29959 For the PPC MBX board:
29960 @smallexample
29961 (gdb)
29962 -data-list-register-names
29963 ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
29964 "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
29965 "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
29966 "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
29967 "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
29968 "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
29969 "", "pc","ps","cr","lr","ctr","xer"]
29970 (gdb)
29971 -data-list-register-names 1 2 3
29972 ^done,register-names=["r1","r2","r3"]
29973 (gdb)
29974 @end smallexample
29975
29976 @subheading The @code{-data-list-register-values} Command
29977 @findex -data-list-register-values
29978
29979 @subsubheading Synopsis
29980
29981 @smallexample
29982 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
29983 @end smallexample
29984
29985 Display the registers' contents. @var{fmt} is the format according to
29986 which the registers' contents are to be returned, followed by an optional
29987 list of numbers specifying the registers to display. A missing list of
29988 numbers indicates that the contents of all the registers must be returned.
29989
29990 Allowed formats for @var{fmt} are:
29991
29992 @table @code
29993 @item x
29994 Hexadecimal
29995 @item o
29996 Octal
29997 @item t
29998 Binary
29999 @item d
30000 Decimal
30001 @item r
30002 Raw
30003 @item N
30004 Natural
30005 @end table
30006
30007 @subsubheading @value{GDBN} Command
30008
30009 The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
30010 all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
30011
30012 @subsubheading Example
30013
30014 For a PPC MBX board (note: line breaks are for readability only, they
30015 don't appear in the actual output):
30016
30017 @smallexample
30018 (gdb)
30019 -data-list-register-values r 64 65
30020 ^done,register-values=[@{number="64",value="0xfe00a300"@},
30021 @{number="65",value="0x00029002"@}]
30022 (gdb)
30023 -data-list-register-values x
30024 ^done,register-values=[@{number="0",value="0xfe0043c8"@},
30025 @{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
30026 @{number="3",value="0x0"@},@{number="4",value="0xa"@},
30027 @{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
30028 @{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
30029 @{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
30030 @{number="11",value="0x1"@},@{number="12",value="0x0"@},
30031 @{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
30032 @{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
30033 @{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
30034 @{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
30035 @{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
30036 @{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
30037 @{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
30038 @{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
30039 @{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
30040 @{number="31",value="0x0"@},@{number="32",value="0x0"@},
30041 @{number="33",value="0x0"@},@{number="34",value="0x0"@},
30042 @{number="35",value="0x0"@},@{number="36",value="0x0"@},
30043 @{number="37",value="0x0"@},@{number="38",value="0x0"@},
30044 @{number="39",value="0x0"@},@{number="40",value="0x0"@},
30045 @{number="41",value="0x0"@},@{number="42",value="0x0"@},
30046 @{number="43",value="0x0"@},@{number="44",value="0x0"@},
30047 @{number="45",value="0x0"@},@{number="46",value="0x0"@},
30048 @{number="47",value="0x0"@},@{number="48",value="0x0"@},
30049 @{number="49",value="0x0"@},@{number="50",value="0x0"@},
30050 @{number="51",value="0x0"@},@{number="52",value="0x0"@},
30051 @{number="53",value="0x0"@},@{number="54",value="0x0"@},
30052 @{number="55",value="0x0"@},@{number="56",value="0x0"@},
30053 @{number="57",value="0x0"@},@{number="58",value="0x0"@},
30054 @{number="59",value="0x0"@},@{number="60",value="0x0"@},
30055 @{number="61",value="0x0"@},@{number="62",value="0x0"@},
30056 @{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
30057 @{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
30058 @{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
30059 @{number="69",value="0x20002b03"@}]
30060 (gdb)
30061 @end smallexample
30062
30063
30064 @subheading The @code{-data-read-memory} Command
30065 @findex -data-read-memory
30066
30067 This command is deprecated, use @code{-data-read-memory-bytes} instead.
30068
30069 @subsubheading Synopsis
30070
30071 @smallexample
30072 -data-read-memory [ -o @var{byte-offset} ]
30073 @var{address} @var{word-format} @var{word-size}
30074 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
30075 @end smallexample
30076
30077 @noindent
30078 where:
30079
30080 @table @samp
30081 @item @var{address}
30082 An expression specifying the address of the first memory word to be
30083 read. Complex expressions containing embedded white space should be
30084 quoted using the C convention.
30085
30086 @item @var{word-format}
30087 The format to be used to print the memory words. The notation is the
30088 same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
30089 ,Output Formats}).
30090
30091 @item @var{word-size}
30092 The size of each memory word in bytes.
30093
30094 @item @var{nr-rows}
30095 The number of rows in the output table.
30096
30097 @item @var{nr-cols}
30098 The number of columns in the output table.
30099
30100 @item @var{aschar}
30101 If present, indicates that each row should include an @sc{ascii} dump. The
30102 value of @var{aschar} is used as a padding character when a byte is not a
30103 member of the printable @sc{ascii} character set (printable @sc{ascii}
30104 characters are those whose code is between 32 and 126, inclusively).
30105
30106 @item @var{byte-offset}
30107 An offset to add to the @var{address} before fetching memory.
30108 @end table
30109
30110 This command displays memory contents as a table of @var{nr-rows} by
30111 @var{nr-cols} words, each word being @var{word-size} bytes. In total,
30112 @code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
30113 (returned as @samp{total-bytes}). Should less than the requested number
30114 of bytes be returned by the target, the missing words are identified
30115 using @samp{N/A}. The number of bytes read from the target is returned
30116 in @samp{nr-bytes} and the starting address used to read memory in
30117 @samp{addr}.
30118
30119 The address of the next/previous row or page is available in
30120 @samp{next-row} and @samp{prev-row}, @samp{next-page} and
30121 @samp{prev-page}.
30122
30123 @subsubheading @value{GDBN} Command
30124
30125 The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
30126 @samp{gdb_get_mem} memory read command.
30127
30128 @subsubheading Example
30129
30130 Read six bytes of memory starting at @code{bytes+6} but then offset by
30131 @code{-6} bytes. Format as three rows of two columns. One byte per
30132 word. Display each word in hex.
30133
30134 @smallexample
30135 (gdb)
30136 9-data-read-memory -o -6 -- bytes+6 x 1 3 2
30137 9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
30138 next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
30139 prev-page="0x0000138a",memory=[
30140 @{addr="0x00001390",data=["0x00","0x01"]@},
30141 @{addr="0x00001392",data=["0x02","0x03"]@},
30142 @{addr="0x00001394",data=["0x04","0x05"]@}]
30143 (gdb)
30144 @end smallexample
30145
30146 Read two bytes of memory starting at address @code{shorts + 64} and
30147 display as a single word formatted in decimal.
30148
30149 @smallexample
30150 (gdb)
30151 5-data-read-memory shorts+64 d 2 1 1
30152 5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
30153 next-row="0x00001512",prev-row="0x0000150e",
30154 next-page="0x00001512",prev-page="0x0000150e",memory=[
30155 @{addr="0x00001510",data=["128"]@}]
30156 (gdb)
30157 @end smallexample
30158
30159 Read thirty two bytes of memory starting at @code{bytes+16} and format
30160 as eight rows of four columns. Include a string encoding with @samp{x}
30161 used as the non-printable character.
30162
30163 @smallexample
30164 (gdb)
30165 4-data-read-memory bytes+16 x 1 8 4 x
30166 4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
30167 next-row="0x000013c0",prev-row="0x0000139c",
30168 next-page="0x000013c0",prev-page="0x00001380",memory=[
30169 @{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
30170 @{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
30171 @{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
30172 @{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
30173 @{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
30174 @{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
30175 @{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
30176 @{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
30177 (gdb)
30178 @end smallexample
30179
30180 @subheading The @code{-data-read-memory-bytes} Command
30181 @findex -data-read-memory-bytes
30182
30183 @subsubheading Synopsis
30184
30185 @smallexample
30186 -data-read-memory-bytes [ -o @var{byte-offset} ]
30187 @var{address} @var{count}
30188 @end smallexample
30189
30190 @noindent
30191 where:
30192
30193 @table @samp
30194 @item @var{address}
30195 An expression specifying the address of the first memory word to be
30196 read. Complex expressions containing embedded white space should be
30197 quoted using the C convention.
30198
30199 @item @var{count}
30200 The number of bytes to read. This should be an integer literal.
30201
30202 @item @var{byte-offset}
30203 The offsets in bytes relative to @var{address} at which to start
30204 reading. This should be an integer literal. This option is provided
30205 so that a frontend is not required to first evaluate address and then
30206 perform address arithmetics itself.
30207
30208 @end table
30209
30210 This command attempts to read all accessible memory regions in the
30211 specified range. First, all regions marked as unreadable in the memory
30212 map (if one is defined) will be skipped. @xref{Memory Region
30213 Attributes}. Second, @value{GDBN} will attempt to read the remaining
30214 regions. For each one, if reading full region results in an errors,
30215 @value{GDBN} will try to read a subset of the region.
30216
30217 In general, every single byte in the region may be readable or not,
30218 and the only way to read every readable byte is to try a read at
30219 every address, which is not practical. Therefore, @value{GDBN} will
30220 attempt to read all accessible bytes at either beginning or the end
30221 of the region, using a binary division scheme. This heuristic works
30222 well for reading accross a memory map boundary. Note that if a region
30223 has a readable range that is neither at the beginning or the end,
30224 @value{GDBN} will not read it.
30225
30226 The result record (@pxref{GDB/MI Result Records}) that is output of
30227 the command includes a field named @samp{memory} whose content is a
30228 list of tuples. Each tuple represent a successfully read memory block
30229 and has the following fields:
30230
30231 @table @code
30232 @item begin
30233 The start address of the memory block, as hexadecimal literal.
30234
30235 @item end
30236 The end address of the memory block, as hexadecimal literal.
30237
30238 @item offset
30239 The offset of the memory block, as hexadecimal literal, relative to
30240 the start address passed to @code{-data-read-memory-bytes}.
30241
30242 @item contents
30243 The contents of the memory block, in hex.
30244
30245 @end table
30246
30247
30248
30249 @subsubheading @value{GDBN} Command
30250
30251 The corresponding @value{GDBN} command is @samp{x}.
30252
30253 @subsubheading Example
30254
30255 @smallexample
30256 (gdb)
30257 -data-read-memory-bytes &a 10
30258 ^done,memory=[@{begin="0xbffff154",offset="0x00000000",
30259 end="0xbffff15e",
30260 contents="01000000020000000300"@}]
30261 (gdb)
30262 @end smallexample
30263
30264
30265 @subheading The @code{-data-write-memory-bytes} Command
30266 @findex -data-write-memory-bytes
30267
30268 @subsubheading Synopsis
30269
30270 @smallexample
30271 -data-write-memory-bytes @var{address} @var{contents}
30272 @end smallexample
30273
30274 @noindent
30275 where:
30276
30277 @table @samp
30278 @item @var{address}
30279 An expression specifying the address of the first memory word to be
30280 read. Complex expressions containing embedded white space should be
30281 quoted using the C convention.
30282
30283 @item @var{contents}
30284 The hex-encoded bytes to write.
30285
30286 @end table
30287
30288 @subsubheading @value{GDBN} Command
30289
30290 There's no corresponding @value{GDBN} command.
30291
30292 @subsubheading Example
30293
30294 @smallexample
30295 (gdb)
30296 -data-write-memory-bytes &a "aabbccdd"
30297 ^done
30298 (gdb)
30299 @end smallexample
30300
30301
30302 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30303 @node GDB/MI Tracepoint Commands
30304 @section @sc{gdb/mi} Tracepoint Commands
30305
30306 The commands defined in this section implement MI support for
30307 tracepoints. For detailed introduction, see @ref{Tracepoints}.
30308
30309 @subheading The @code{-trace-find} Command
30310 @findex -trace-find
30311
30312 @subsubheading Synopsis
30313
30314 @smallexample
30315 -trace-find @var{mode} [@var{parameters}@dots{}]
30316 @end smallexample
30317
30318 Find a trace frame using criteria defined by @var{mode} and
30319 @var{parameters}. The following table lists permissible
30320 modes and their parameters. For details of operation, see @ref{tfind}.
30321
30322 @table @samp
30323
30324 @item none
30325 No parameters are required. Stops examining trace frames.
30326
30327 @item frame-number
30328 An integer is required as parameter. Selects tracepoint frame with
30329 that index.
30330
30331 @item tracepoint-number
30332 An integer is required as parameter. Finds next
30333 trace frame that corresponds to tracepoint with the specified number.
30334
30335 @item pc
30336 An address is required as parameter. Finds
30337 next trace frame that corresponds to any tracepoint at the specified
30338 address.
30339
30340 @item pc-inside-range
30341 Two addresses are required as parameters. Finds next trace
30342 frame that corresponds to a tracepoint at an address inside the
30343 specified range. Both bounds are considered to be inside the range.
30344
30345 @item pc-outside-range
30346 Two addresses are required as parameters. Finds
30347 next trace frame that corresponds to a tracepoint at an address outside
30348 the specified range. Both bounds are considered to be inside the range.
30349
30350 @item line
30351 Line specification is required as parameter. @xref{Specify Location}.
30352 Finds next trace frame that corresponds to a tracepoint at
30353 the specified location.
30354
30355 @end table
30356
30357 If @samp{none} was passed as @var{mode}, the response does not
30358 have fields. Otherwise, the response may have the following fields:
30359
30360 @table @samp
30361 @item found
30362 This field has either @samp{0} or @samp{1} as the value, depending
30363 on whether a matching tracepoint was found.
30364
30365 @item traceframe
30366 The index of the found traceframe. This field is present iff
30367 the @samp{found} field has value of @samp{1}.
30368
30369 @item tracepoint
30370 The index of the found tracepoint. This field is present iff
30371 the @samp{found} field has value of @samp{1}.
30372
30373 @item frame
30374 The information about the frame corresponding to the found trace
30375 frame. This field is present only if a trace frame was found.
30376 @xref{GDB/MI Frame Information}, for description of this field.
30377
30378 @end table
30379
30380 @subsubheading @value{GDBN} Command
30381
30382 The corresponding @value{GDBN} command is @samp{tfind}.
30383
30384 @subheading -trace-define-variable
30385 @findex -trace-define-variable
30386
30387 @subsubheading Synopsis
30388
30389 @smallexample
30390 -trace-define-variable @var{name} [ @var{value} ]
30391 @end smallexample
30392
30393 Create trace variable @var{name} if it does not exist. If
30394 @var{value} is specified, sets the initial value of the specified
30395 trace variable to that value. Note that the @var{name} should start
30396 with the @samp{$} character.
30397
30398 @subsubheading @value{GDBN} Command
30399
30400 The corresponding @value{GDBN} command is @samp{tvariable}.
30401
30402 @subheading -trace-list-variables
30403 @findex -trace-list-variables
30404
30405 @subsubheading Synopsis
30406
30407 @smallexample
30408 -trace-list-variables
30409 @end smallexample
30410
30411 Return a table of all defined trace variables. Each element of the
30412 table has the following fields:
30413
30414 @table @samp
30415 @item name
30416 The name of the trace variable. This field is always present.
30417
30418 @item initial
30419 The initial value. This is a 64-bit signed integer. This
30420 field is always present.
30421
30422 @item current
30423 The value the trace variable has at the moment. This is a 64-bit
30424 signed integer. This field is absent iff current value is
30425 not defined, for example if the trace was never run, or is
30426 presently running.
30427
30428 @end table
30429
30430 @subsubheading @value{GDBN} Command
30431
30432 The corresponding @value{GDBN} command is @samp{tvariables}.
30433
30434 @subsubheading Example
30435
30436 @smallexample
30437 (gdb)
30438 -trace-list-variables
30439 ^done,trace-variables=@{nr_rows="1",nr_cols="3",
30440 hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
30441 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
30442 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
30443 body=[variable=@{name="$trace_timestamp",initial="0"@}
30444 variable=@{name="$foo",initial="10",current="15"@}]@}
30445 (gdb)
30446 @end smallexample
30447
30448 @subheading -trace-save
30449 @findex -trace-save
30450
30451 @subsubheading Synopsis
30452
30453 @smallexample
30454 -trace-save [-r ] @var{filename}
30455 @end smallexample
30456
30457 Saves the collected trace data to @var{filename}. Without the
30458 @samp{-r} option, the data is downloaded from the target and saved
30459 in a local file. With the @samp{-r} option the target is asked
30460 to perform the save.
30461
30462 @subsubheading @value{GDBN} Command
30463
30464 The corresponding @value{GDBN} command is @samp{tsave}.
30465
30466
30467 @subheading -trace-start
30468 @findex -trace-start
30469
30470 @subsubheading Synopsis
30471
30472 @smallexample
30473 -trace-start
30474 @end smallexample
30475
30476 Starts a tracing experiments. The result of this command does not
30477 have any fields.
30478
30479 @subsubheading @value{GDBN} Command
30480
30481 The corresponding @value{GDBN} command is @samp{tstart}.
30482
30483 @subheading -trace-status
30484 @findex -trace-status
30485
30486 @subsubheading Synopsis
30487
30488 @smallexample
30489 -trace-status
30490 @end smallexample
30491
30492 Obtains the status of a tracing experiment. The result may include
30493 the following fields:
30494
30495 @table @samp
30496
30497 @item supported
30498 May have a value of either @samp{0}, when no tracing operations are
30499 supported, @samp{1}, when all tracing operations are supported, or
30500 @samp{file} when examining trace file. In the latter case, examining
30501 of trace frame is possible but new tracing experiement cannot be
30502 started. This field is always present.
30503
30504 @item running
30505 May have a value of either @samp{0} or @samp{1} depending on whether
30506 tracing experiement is in progress on target. This field is present
30507 if @samp{supported} field is not @samp{0}.
30508
30509 @item stop-reason
30510 Report the reason why the tracing was stopped last time. This field
30511 may be absent iff tracing was never stopped on target yet. The
30512 value of @samp{request} means the tracing was stopped as result of
30513 the @code{-trace-stop} command. The value of @samp{overflow} means
30514 the tracing buffer is full. The value of @samp{disconnection} means
30515 tracing was automatically stopped when @value{GDBN} has disconnected.
30516 The value of @samp{passcount} means tracing was stopped when a
30517 tracepoint was passed a maximal number of times for that tracepoint.
30518 This field is present if @samp{supported} field is not @samp{0}.
30519
30520 @item stopping-tracepoint
30521 The number of tracepoint whose passcount as exceeded. This field is
30522 present iff the @samp{stop-reason} field has the value of
30523 @samp{passcount}.
30524
30525 @item frames
30526 @itemx frames-created
30527 The @samp{frames} field is a count of the total number of trace frames
30528 in the trace buffer, while @samp{frames-created} is the total created
30529 during the run, including ones that were discarded, such as when a
30530 circular trace buffer filled up. Both fields are optional.
30531
30532 @item buffer-size
30533 @itemx buffer-free
30534 These fields tell the current size of the tracing buffer and the
30535 remaining space. These fields are optional.
30536
30537 @item circular
30538 The value of the circular trace buffer flag. @code{1} means that the
30539 trace buffer is circular and old trace frames will be discarded if
30540 necessary to make room, @code{0} means that the trace buffer is linear
30541 and may fill up.
30542
30543 @item disconnected
30544 The value of the disconnected tracing flag. @code{1} means that
30545 tracing will continue after @value{GDBN} disconnects, @code{0} means
30546 that the trace run will stop.
30547
30548 @end table
30549
30550 @subsubheading @value{GDBN} Command
30551
30552 The corresponding @value{GDBN} command is @samp{tstatus}.
30553
30554 @subheading -trace-stop
30555 @findex -trace-stop
30556
30557 @subsubheading Synopsis
30558
30559 @smallexample
30560 -trace-stop
30561 @end smallexample
30562
30563 Stops a tracing experiment. The result of this command has the same
30564 fields as @code{-trace-status}, except that the @samp{supported} and
30565 @samp{running} fields are not output.
30566
30567 @subsubheading @value{GDBN} Command
30568
30569 The corresponding @value{GDBN} command is @samp{tstop}.
30570
30571
30572 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30573 @node GDB/MI Symbol Query
30574 @section @sc{gdb/mi} Symbol Query Commands
30575
30576
30577 @ignore
30578 @subheading The @code{-symbol-info-address} Command
30579 @findex -symbol-info-address
30580
30581 @subsubheading Synopsis
30582
30583 @smallexample
30584 -symbol-info-address @var{symbol}
30585 @end smallexample
30586
30587 Describe where @var{symbol} is stored.
30588
30589 @subsubheading @value{GDBN} Command
30590
30591 The corresponding @value{GDBN} command is @samp{info address}.
30592
30593 @subsubheading Example
30594 N.A.
30595
30596
30597 @subheading The @code{-symbol-info-file} Command
30598 @findex -symbol-info-file
30599
30600 @subsubheading Synopsis
30601
30602 @smallexample
30603 -symbol-info-file
30604 @end smallexample
30605
30606 Show the file for the symbol.
30607
30608 @subsubheading @value{GDBN} Command
30609
30610 There's no equivalent @value{GDBN} command. @code{gdbtk} has
30611 @samp{gdb_find_file}.
30612
30613 @subsubheading Example
30614 N.A.
30615
30616
30617 @subheading The @code{-symbol-info-function} Command
30618 @findex -symbol-info-function
30619
30620 @subsubheading Synopsis
30621
30622 @smallexample
30623 -symbol-info-function
30624 @end smallexample
30625
30626 Show which function the symbol lives in.
30627
30628 @subsubheading @value{GDBN} Command
30629
30630 @samp{gdb_get_function} in @code{gdbtk}.
30631
30632 @subsubheading Example
30633 N.A.
30634
30635
30636 @subheading The @code{-symbol-info-line} Command
30637 @findex -symbol-info-line
30638
30639 @subsubheading Synopsis
30640
30641 @smallexample
30642 -symbol-info-line
30643 @end smallexample
30644
30645 Show the core addresses of the code for a source line.
30646
30647 @subsubheading @value{GDBN} Command
30648
30649 The corresponding @value{GDBN} command is @samp{info line}.
30650 @code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
30651
30652 @subsubheading Example
30653 N.A.
30654
30655
30656 @subheading The @code{-symbol-info-symbol} Command
30657 @findex -symbol-info-symbol
30658
30659 @subsubheading Synopsis
30660
30661 @smallexample
30662 -symbol-info-symbol @var{addr}
30663 @end smallexample
30664
30665 Describe what symbol is at location @var{addr}.
30666
30667 @subsubheading @value{GDBN} Command
30668
30669 The corresponding @value{GDBN} command is @samp{info symbol}.
30670
30671 @subsubheading Example
30672 N.A.
30673
30674
30675 @subheading The @code{-symbol-list-functions} Command
30676 @findex -symbol-list-functions
30677
30678 @subsubheading Synopsis
30679
30680 @smallexample
30681 -symbol-list-functions
30682 @end smallexample
30683
30684 List the functions in the executable.
30685
30686 @subsubheading @value{GDBN} Command
30687
30688 @samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
30689 @samp{gdb_search} in @code{gdbtk}.
30690
30691 @subsubheading Example
30692 N.A.
30693 @end ignore
30694
30695
30696 @subheading The @code{-symbol-list-lines} Command
30697 @findex -symbol-list-lines
30698
30699 @subsubheading Synopsis
30700
30701 @smallexample
30702 -symbol-list-lines @var{filename}
30703 @end smallexample
30704
30705 Print the list of lines that contain code and their associated program
30706 addresses for the given source filename. The entries are sorted in
30707 ascending PC order.
30708
30709 @subsubheading @value{GDBN} Command
30710
30711 There is no corresponding @value{GDBN} command.
30712
30713 @subsubheading Example
30714 @smallexample
30715 (gdb)
30716 -symbol-list-lines basics.c
30717 ^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
30718 (gdb)
30719 @end smallexample
30720
30721
30722 @ignore
30723 @subheading The @code{-symbol-list-types} Command
30724 @findex -symbol-list-types
30725
30726 @subsubheading Synopsis
30727
30728 @smallexample
30729 -symbol-list-types
30730 @end smallexample
30731
30732 List all the type names.
30733
30734 @subsubheading @value{GDBN} Command
30735
30736 The corresponding commands are @samp{info types} in @value{GDBN},
30737 @samp{gdb_search} in @code{gdbtk}.
30738
30739 @subsubheading Example
30740 N.A.
30741
30742
30743 @subheading The @code{-symbol-list-variables} Command
30744 @findex -symbol-list-variables
30745
30746 @subsubheading Synopsis
30747
30748 @smallexample
30749 -symbol-list-variables
30750 @end smallexample
30751
30752 List all the global and static variable names.
30753
30754 @subsubheading @value{GDBN} Command
30755
30756 @samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
30757
30758 @subsubheading Example
30759 N.A.
30760
30761
30762 @subheading The @code{-symbol-locate} Command
30763 @findex -symbol-locate
30764
30765 @subsubheading Synopsis
30766
30767 @smallexample
30768 -symbol-locate
30769 @end smallexample
30770
30771 @subsubheading @value{GDBN} Command
30772
30773 @samp{gdb_loc} in @code{gdbtk}.
30774
30775 @subsubheading Example
30776 N.A.
30777
30778
30779 @subheading The @code{-symbol-type} Command
30780 @findex -symbol-type
30781
30782 @subsubheading Synopsis
30783
30784 @smallexample
30785 -symbol-type @var{variable}
30786 @end smallexample
30787
30788 Show type of @var{variable}.
30789
30790 @subsubheading @value{GDBN} Command
30791
30792 The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
30793 @samp{gdb_obj_variable}.
30794
30795 @subsubheading Example
30796 N.A.
30797 @end ignore
30798
30799
30800 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30801 @node GDB/MI File Commands
30802 @section @sc{gdb/mi} File Commands
30803
30804 This section describes the GDB/MI commands to specify executable file names
30805 and to read in and obtain symbol table information.
30806
30807 @subheading The @code{-file-exec-and-symbols} Command
30808 @findex -file-exec-and-symbols
30809
30810 @subsubheading Synopsis
30811
30812 @smallexample
30813 -file-exec-and-symbols @var{file}
30814 @end smallexample
30815
30816 Specify the executable file to be debugged. This file is the one from
30817 which the symbol table is also read. If no file is specified, the
30818 command clears the executable and symbol information. If breakpoints
30819 are set when using this command with no arguments, @value{GDBN} will produce
30820 error messages. Otherwise, no output is produced, except a completion
30821 notification.
30822
30823 @subsubheading @value{GDBN} Command
30824
30825 The corresponding @value{GDBN} command is @samp{file}.
30826
30827 @subsubheading Example
30828
30829 @smallexample
30830 (gdb)
30831 -file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
30832 ^done
30833 (gdb)
30834 @end smallexample
30835
30836
30837 @subheading The @code{-file-exec-file} Command
30838 @findex -file-exec-file
30839
30840 @subsubheading Synopsis
30841
30842 @smallexample
30843 -file-exec-file @var{file}
30844 @end smallexample
30845
30846 Specify the executable file to be debugged. Unlike
30847 @samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
30848 from this file. If used without argument, @value{GDBN} clears the information
30849 about the executable file. No output is produced, except a completion
30850 notification.
30851
30852 @subsubheading @value{GDBN} Command
30853
30854 The corresponding @value{GDBN} command is @samp{exec-file}.
30855
30856 @subsubheading Example
30857
30858 @smallexample
30859 (gdb)
30860 -file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
30861 ^done
30862 (gdb)
30863 @end smallexample
30864
30865
30866 @ignore
30867 @subheading The @code{-file-list-exec-sections} Command
30868 @findex -file-list-exec-sections
30869
30870 @subsubheading Synopsis
30871
30872 @smallexample
30873 -file-list-exec-sections
30874 @end smallexample
30875
30876 List the sections of the current executable file.
30877
30878 @subsubheading @value{GDBN} Command
30879
30880 The @value{GDBN} command @samp{info file} shows, among the rest, the same
30881 information as this command. @code{gdbtk} has a corresponding command
30882 @samp{gdb_load_info}.
30883
30884 @subsubheading Example
30885 N.A.
30886 @end ignore
30887
30888
30889 @subheading The @code{-file-list-exec-source-file} Command
30890 @findex -file-list-exec-source-file
30891
30892 @subsubheading Synopsis
30893
30894 @smallexample
30895 -file-list-exec-source-file
30896 @end smallexample
30897
30898 List the line number, the current source file, and the absolute path
30899 to the current source file for the current executable. The macro
30900 information field has a value of @samp{1} or @samp{0} depending on
30901 whether or not the file includes preprocessor macro information.
30902
30903 @subsubheading @value{GDBN} Command
30904
30905 The @value{GDBN} equivalent is @samp{info source}
30906
30907 @subsubheading Example
30908
30909 @smallexample
30910 (gdb)
30911 123-file-list-exec-source-file
30912 123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
30913 (gdb)
30914 @end smallexample
30915
30916
30917 @subheading The @code{-file-list-exec-source-files} Command
30918 @findex -file-list-exec-source-files
30919
30920 @subsubheading Synopsis
30921
30922 @smallexample
30923 -file-list-exec-source-files
30924 @end smallexample
30925
30926 List the source files for the current executable.
30927
30928 It will always output the filename, but only when @value{GDBN} can find
30929 the absolute file name of a source file, will it output the fullname.
30930
30931 @subsubheading @value{GDBN} Command
30932
30933 The @value{GDBN} equivalent is @samp{info sources}.
30934 @code{gdbtk} has an analogous command @samp{gdb_listfiles}.
30935
30936 @subsubheading Example
30937 @smallexample
30938 (gdb)
30939 -file-list-exec-source-files
30940 ^done,files=[
30941 @{file=foo.c,fullname=/home/foo.c@},
30942 @{file=/home/bar.c,fullname=/home/bar.c@},
30943 @{file=gdb_could_not_find_fullpath.c@}]
30944 (gdb)
30945 @end smallexample
30946
30947 @ignore
30948 @subheading The @code{-file-list-shared-libraries} Command
30949 @findex -file-list-shared-libraries
30950
30951 @subsubheading Synopsis
30952
30953 @smallexample
30954 -file-list-shared-libraries
30955 @end smallexample
30956
30957 List the shared libraries in the program.
30958
30959 @subsubheading @value{GDBN} Command
30960
30961 The corresponding @value{GDBN} command is @samp{info shared}.
30962
30963 @subsubheading Example
30964 N.A.
30965
30966
30967 @subheading The @code{-file-list-symbol-files} Command
30968 @findex -file-list-symbol-files
30969
30970 @subsubheading Synopsis
30971
30972 @smallexample
30973 -file-list-symbol-files
30974 @end smallexample
30975
30976 List symbol files.
30977
30978 @subsubheading @value{GDBN} Command
30979
30980 The corresponding @value{GDBN} command is @samp{info file} (part of it).
30981
30982 @subsubheading Example
30983 N.A.
30984 @end ignore
30985
30986
30987 @subheading The @code{-file-symbol-file} Command
30988 @findex -file-symbol-file
30989
30990 @subsubheading Synopsis
30991
30992 @smallexample
30993 -file-symbol-file @var{file}
30994 @end smallexample
30995
30996 Read symbol table info from the specified @var{file} argument. When
30997 used without arguments, clears @value{GDBN}'s symbol table info. No output is
30998 produced, except for a completion notification.
30999
31000 @subsubheading @value{GDBN} Command
31001
31002 The corresponding @value{GDBN} command is @samp{symbol-file}.
31003
31004 @subsubheading Example
31005
31006 @smallexample
31007 (gdb)
31008 -file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
31009 ^done
31010 (gdb)
31011 @end smallexample
31012
31013 @ignore
31014 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31015 @node GDB/MI Memory Overlay Commands
31016 @section @sc{gdb/mi} Memory Overlay Commands
31017
31018 The memory overlay commands are not implemented.
31019
31020 @c @subheading -overlay-auto
31021
31022 @c @subheading -overlay-list-mapping-state
31023
31024 @c @subheading -overlay-list-overlays
31025
31026 @c @subheading -overlay-map
31027
31028 @c @subheading -overlay-off
31029
31030 @c @subheading -overlay-on
31031
31032 @c @subheading -overlay-unmap
31033
31034 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31035 @node GDB/MI Signal Handling Commands
31036 @section @sc{gdb/mi} Signal Handling Commands
31037
31038 Signal handling commands are not implemented.
31039
31040 @c @subheading -signal-handle
31041
31042 @c @subheading -signal-list-handle-actions
31043
31044 @c @subheading -signal-list-signal-types
31045 @end ignore
31046
31047
31048 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31049 @node GDB/MI Target Manipulation
31050 @section @sc{gdb/mi} Target Manipulation Commands
31051
31052
31053 @subheading The @code{-target-attach} Command
31054 @findex -target-attach
31055
31056 @subsubheading Synopsis
31057
31058 @smallexample
31059 -target-attach @var{pid} | @var{gid} | @var{file}
31060 @end smallexample
31061
31062 Attach to a process @var{pid} or a file @var{file} outside of
31063 @value{GDBN}, or a thread group @var{gid}. If attaching to a thread
31064 group, the id previously returned by
31065 @samp{-list-thread-groups --available} must be used.
31066
31067 @subsubheading @value{GDBN} Command
31068
31069 The corresponding @value{GDBN} command is @samp{attach}.
31070
31071 @subsubheading Example
31072 @smallexample
31073 (gdb)
31074 -target-attach 34
31075 =thread-created,id="1"
31076 *stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
31077 ^done
31078 (gdb)
31079 @end smallexample
31080
31081 @ignore
31082 @subheading The @code{-target-compare-sections} Command
31083 @findex -target-compare-sections
31084
31085 @subsubheading Synopsis
31086
31087 @smallexample
31088 -target-compare-sections [ @var{section} ]
31089 @end smallexample
31090
31091 Compare data of section @var{section} on target to the exec file.
31092 Without the argument, all sections are compared.
31093
31094 @subsubheading @value{GDBN} Command
31095
31096 The @value{GDBN} equivalent is @samp{compare-sections}.
31097
31098 @subsubheading Example
31099 N.A.
31100 @end ignore
31101
31102
31103 @subheading The @code{-target-detach} Command
31104 @findex -target-detach
31105
31106 @subsubheading Synopsis
31107
31108 @smallexample
31109 -target-detach [ @var{pid} | @var{gid} ]
31110 @end smallexample
31111
31112 Detach from the remote target which normally resumes its execution.
31113 If either @var{pid} or @var{gid} is specified, detaches from either
31114 the specified process, or specified thread group. There's no output.
31115
31116 @subsubheading @value{GDBN} Command
31117
31118 The corresponding @value{GDBN} command is @samp{detach}.
31119
31120 @subsubheading Example
31121
31122 @smallexample
31123 (gdb)
31124 -target-detach
31125 ^done
31126 (gdb)
31127 @end smallexample
31128
31129
31130 @subheading The @code{-target-disconnect} Command
31131 @findex -target-disconnect
31132
31133 @subsubheading Synopsis
31134
31135 @smallexample
31136 -target-disconnect
31137 @end smallexample
31138
31139 Disconnect from the remote target. There's no output and the target is
31140 generally not resumed.
31141
31142 @subsubheading @value{GDBN} Command
31143
31144 The corresponding @value{GDBN} command is @samp{disconnect}.
31145
31146 @subsubheading Example
31147
31148 @smallexample
31149 (gdb)
31150 -target-disconnect
31151 ^done
31152 (gdb)
31153 @end smallexample
31154
31155
31156 @subheading The @code{-target-download} Command
31157 @findex -target-download
31158
31159 @subsubheading Synopsis
31160
31161 @smallexample
31162 -target-download
31163 @end smallexample
31164
31165 Loads the executable onto the remote target.
31166 It prints out an update message every half second, which includes the fields:
31167
31168 @table @samp
31169 @item section
31170 The name of the section.
31171 @item section-sent
31172 The size of what has been sent so far for that section.
31173 @item section-size
31174 The size of the section.
31175 @item total-sent
31176 The total size of what was sent so far (the current and the previous sections).
31177 @item total-size
31178 The size of the overall executable to download.
31179 @end table
31180
31181 @noindent
31182 Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
31183 @sc{gdb/mi} Output Syntax}).
31184
31185 In addition, it prints the name and size of the sections, as they are
31186 downloaded. These messages include the following fields:
31187
31188 @table @samp
31189 @item section
31190 The name of the section.
31191 @item section-size
31192 The size of the section.
31193 @item total-size
31194 The size of the overall executable to download.
31195 @end table
31196
31197 @noindent
31198 At the end, a summary is printed.
31199
31200 @subsubheading @value{GDBN} Command
31201
31202 The corresponding @value{GDBN} command is @samp{load}.
31203
31204 @subsubheading Example
31205
31206 Note: each status message appears on a single line. Here the messages
31207 have been broken down so that they can fit onto a page.
31208
31209 @smallexample
31210 (gdb)
31211 -target-download
31212 +download,@{section=".text",section-size="6668",total-size="9880"@}
31213 +download,@{section=".text",section-sent="512",section-size="6668",
31214 total-sent="512",total-size="9880"@}
31215 +download,@{section=".text",section-sent="1024",section-size="6668",
31216 total-sent="1024",total-size="9880"@}
31217 +download,@{section=".text",section-sent="1536",section-size="6668",
31218 total-sent="1536",total-size="9880"@}
31219 +download,@{section=".text",section-sent="2048",section-size="6668",
31220 total-sent="2048",total-size="9880"@}
31221 +download,@{section=".text",section-sent="2560",section-size="6668",
31222 total-sent="2560",total-size="9880"@}
31223 +download,@{section=".text",section-sent="3072",section-size="6668",
31224 total-sent="3072",total-size="9880"@}
31225 +download,@{section=".text",section-sent="3584",section-size="6668",
31226 total-sent="3584",total-size="9880"@}
31227 +download,@{section=".text",section-sent="4096",section-size="6668",
31228 total-sent="4096",total-size="9880"@}
31229 +download,@{section=".text",section-sent="4608",section-size="6668",
31230 total-sent="4608",total-size="9880"@}
31231 +download,@{section=".text",section-sent="5120",section-size="6668",
31232 total-sent="5120",total-size="9880"@}
31233 +download,@{section=".text",section-sent="5632",section-size="6668",
31234 total-sent="5632",total-size="9880"@}
31235 +download,@{section=".text",section-sent="6144",section-size="6668",
31236 total-sent="6144",total-size="9880"@}
31237 +download,@{section=".text",section-sent="6656",section-size="6668",
31238 total-sent="6656",total-size="9880"@}
31239 +download,@{section=".init",section-size="28",total-size="9880"@}
31240 +download,@{section=".fini",section-size="28",total-size="9880"@}
31241 +download,@{section=".data",section-size="3156",total-size="9880"@}
31242 +download,@{section=".data",section-sent="512",section-size="3156",
31243 total-sent="7236",total-size="9880"@}
31244 +download,@{section=".data",section-sent="1024",section-size="3156",
31245 total-sent="7748",total-size="9880"@}
31246 +download,@{section=".data",section-sent="1536",section-size="3156",
31247 total-sent="8260",total-size="9880"@}
31248 +download,@{section=".data",section-sent="2048",section-size="3156",
31249 total-sent="8772",total-size="9880"@}
31250 +download,@{section=".data",section-sent="2560",section-size="3156",
31251 total-sent="9284",total-size="9880"@}
31252 +download,@{section=".data",section-sent="3072",section-size="3156",
31253 total-sent="9796",total-size="9880"@}
31254 ^done,address="0x10004",load-size="9880",transfer-rate="6586",
31255 write-rate="429"
31256 (gdb)
31257 @end smallexample
31258
31259
31260 @ignore
31261 @subheading The @code{-target-exec-status} Command
31262 @findex -target-exec-status
31263
31264 @subsubheading Synopsis
31265
31266 @smallexample
31267 -target-exec-status
31268 @end smallexample
31269
31270 Provide information on the state of the target (whether it is running or
31271 not, for instance).
31272
31273 @subsubheading @value{GDBN} Command
31274
31275 There's no equivalent @value{GDBN} command.
31276
31277 @subsubheading Example
31278 N.A.
31279
31280
31281 @subheading The @code{-target-list-available-targets} Command
31282 @findex -target-list-available-targets
31283
31284 @subsubheading Synopsis
31285
31286 @smallexample
31287 -target-list-available-targets
31288 @end smallexample
31289
31290 List the possible targets to connect to.
31291
31292 @subsubheading @value{GDBN} Command
31293
31294 The corresponding @value{GDBN} command is @samp{help target}.
31295
31296 @subsubheading Example
31297 N.A.
31298
31299
31300 @subheading The @code{-target-list-current-targets} Command
31301 @findex -target-list-current-targets
31302
31303 @subsubheading Synopsis
31304
31305 @smallexample
31306 -target-list-current-targets
31307 @end smallexample
31308
31309 Describe the current target.
31310
31311 @subsubheading @value{GDBN} Command
31312
31313 The corresponding information is printed by @samp{info file} (among
31314 other things).
31315
31316 @subsubheading Example
31317 N.A.
31318
31319
31320 @subheading The @code{-target-list-parameters} Command
31321 @findex -target-list-parameters
31322
31323 @subsubheading Synopsis
31324
31325 @smallexample
31326 -target-list-parameters
31327 @end smallexample
31328
31329 @c ????
31330 @end ignore
31331
31332 @subsubheading @value{GDBN} Command
31333
31334 No equivalent.
31335
31336 @subsubheading Example
31337 N.A.
31338
31339
31340 @subheading The @code{-target-select} Command
31341 @findex -target-select
31342
31343 @subsubheading Synopsis
31344
31345 @smallexample
31346 -target-select @var{type} @var{parameters @dots{}}
31347 @end smallexample
31348
31349 Connect @value{GDBN} to the remote target. This command takes two args:
31350
31351 @table @samp
31352 @item @var{type}
31353 The type of target, for instance @samp{remote}, etc.
31354 @item @var{parameters}
31355 Device names, host names and the like. @xref{Target Commands, ,
31356 Commands for Managing Targets}, for more details.
31357 @end table
31358
31359 The output is a connection notification, followed by the address at
31360 which the target program is, in the following form:
31361
31362 @smallexample
31363 ^connected,addr="@var{address}",func="@var{function name}",
31364 args=[@var{arg list}]
31365 @end smallexample
31366
31367 @subsubheading @value{GDBN} Command
31368
31369 The corresponding @value{GDBN} command is @samp{target}.
31370
31371 @subsubheading Example
31372
31373 @smallexample
31374 (gdb)
31375 -target-select remote /dev/ttya
31376 ^connected,addr="0xfe00a300",func="??",args=[]
31377 (gdb)
31378 @end smallexample
31379
31380 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31381 @node GDB/MI File Transfer Commands
31382 @section @sc{gdb/mi} File Transfer Commands
31383
31384
31385 @subheading The @code{-target-file-put} Command
31386 @findex -target-file-put
31387
31388 @subsubheading Synopsis
31389
31390 @smallexample
31391 -target-file-put @var{hostfile} @var{targetfile}
31392 @end smallexample
31393
31394 Copy file @var{hostfile} from the host system (the machine running
31395 @value{GDBN}) to @var{targetfile} on the target system.
31396
31397 @subsubheading @value{GDBN} Command
31398
31399 The corresponding @value{GDBN} command is @samp{remote put}.
31400
31401 @subsubheading Example
31402
31403 @smallexample
31404 (gdb)
31405 -target-file-put localfile remotefile
31406 ^done
31407 (gdb)
31408 @end smallexample
31409
31410
31411 @subheading The @code{-target-file-get} Command
31412 @findex -target-file-get
31413
31414 @subsubheading Synopsis
31415
31416 @smallexample
31417 -target-file-get @var{targetfile} @var{hostfile}
31418 @end smallexample
31419
31420 Copy file @var{targetfile} from the target system to @var{hostfile}
31421 on the host system.
31422
31423 @subsubheading @value{GDBN} Command
31424
31425 The corresponding @value{GDBN} command is @samp{remote get}.
31426
31427 @subsubheading Example
31428
31429 @smallexample
31430 (gdb)
31431 -target-file-get remotefile localfile
31432 ^done
31433 (gdb)
31434 @end smallexample
31435
31436
31437 @subheading The @code{-target-file-delete} Command
31438 @findex -target-file-delete
31439
31440 @subsubheading Synopsis
31441
31442 @smallexample
31443 -target-file-delete @var{targetfile}
31444 @end smallexample
31445
31446 Delete @var{targetfile} from the target system.
31447
31448 @subsubheading @value{GDBN} Command
31449
31450 The corresponding @value{GDBN} command is @samp{remote delete}.
31451
31452 @subsubheading Example
31453
31454 @smallexample
31455 (gdb)
31456 -target-file-delete remotefile
31457 ^done
31458 (gdb)
31459 @end smallexample
31460
31461
31462 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31463 @node GDB/MI Miscellaneous Commands
31464 @section Miscellaneous @sc{gdb/mi} Commands
31465
31466 @c @subheading -gdb-complete
31467
31468 @subheading The @code{-gdb-exit} Command
31469 @findex -gdb-exit
31470
31471 @subsubheading Synopsis
31472
31473 @smallexample
31474 -gdb-exit
31475 @end smallexample
31476
31477 Exit @value{GDBN} immediately.
31478
31479 @subsubheading @value{GDBN} Command
31480
31481 Approximately corresponds to @samp{quit}.
31482
31483 @subsubheading Example
31484
31485 @smallexample
31486 (gdb)
31487 -gdb-exit
31488 ^exit
31489 @end smallexample
31490
31491
31492 @ignore
31493 @subheading The @code{-exec-abort} Command
31494 @findex -exec-abort
31495
31496 @subsubheading Synopsis
31497
31498 @smallexample
31499 -exec-abort
31500 @end smallexample
31501
31502 Kill the inferior running program.
31503
31504 @subsubheading @value{GDBN} Command
31505
31506 The corresponding @value{GDBN} command is @samp{kill}.
31507
31508 @subsubheading Example
31509 N.A.
31510 @end ignore
31511
31512
31513 @subheading The @code{-gdb-set} Command
31514 @findex -gdb-set
31515
31516 @subsubheading Synopsis
31517
31518 @smallexample
31519 -gdb-set
31520 @end smallexample
31521
31522 Set an internal @value{GDBN} variable.
31523 @c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
31524
31525 @subsubheading @value{GDBN} Command
31526
31527 The corresponding @value{GDBN} command is @samp{set}.
31528
31529 @subsubheading Example
31530
31531 @smallexample
31532 (gdb)
31533 -gdb-set $foo=3
31534 ^done
31535 (gdb)
31536 @end smallexample
31537
31538
31539 @subheading The @code{-gdb-show} Command
31540 @findex -gdb-show
31541
31542 @subsubheading Synopsis
31543
31544 @smallexample
31545 -gdb-show
31546 @end smallexample
31547
31548 Show the current value of a @value{GDBN} variable.
31549
31550 @subsubheading @value{GDBN} Command
31551
31552 The corresponding @value{GDBN} command is @samp{show}.
31553
31554 @subsubheading Example
31555
31556 @smallexample
31557 (gdb)
31558 -gdb-show annotate
31559 ^done,value="0"
31560 (gdb)
31561 @end smallexample
31562
31563 @c @subheading -gdb-source
31564
31565
31566 @subheading The @code{-gdb-version} Command
31567 @findex -gdb-version
31568
31569 @subsubheading Synopsis
31570
31571 @smallexample
31572 -gdb-version
31573 @end smallexample
31574
31575 Show version information for @value{GDBN}. Used mostly in testing.
31576
31577 @subsubheading @value{GDBN} Command
31578
31579 The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
31580 default shows this information when you start an interactive session.
31581
31582 @subsubheading Example
31583
31584 @c This example modifies the actual output from GDB to avoid overfull
31585 @c box in TeX.
31586 @smallexample
31587 (gdb)
31588 -gdb-version
31589 ~GNU gdb 5.2.1
31590 ~Copyright 2000 Free Software Foundation, Inc.
31591 ~GDB is free software, covered by the GNU General Public License, and
31592 ~you are welcome to change it and/or distribute copies of it under
31593 ~ certain conditions.
31594 ~Type "show copying" to see the conditions.
31595 ~There is absolutely no warranty for GDB. Type "show warranty" for
31596 ~ details.
31597 ~This GDB was configured as
31598 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
31599 ^done
31600 (gdb)
31601 @end smallexample
31602
31603 @subheading The @code{-list-features} Command
31604 @findex -list-features
31605
31606 Returns a list of particular features of the MI protocol that
31607 this version of gdb implements. A feature can be a command,
31608 or a new field in an output of some command, or even an
31609 important bugfix. While a frontend can sometimes detect presence
31610 of a feature at runtime, it is easier to perform detection at debugger
31611 startup.
31612
31613 The command returns a list of strings, with each string naming an
31614 available feature. Each returned string is just a name, it does not
31615 have any internal structure. The list of possible feature names
31616 is given below.
31617
31618 Example output:
31619
31620 @smallexample
31621 (gdb) -list-features
31622 ^done,result=["feature1","feature2"]
31623 @end smallexample
31624
31625 The current list of features is:
31626
31627 @table @samp
31628 @item frozen-varobjs
31629 Indicates support for the @code{-var-set-frozen} command, as well
31630 as possible presense of the @code{frozen} field in the output
31631 of @code{-varobj-create}.
31632 @item pending-breakpoints
31633 Indicates support for the @option{-f} option to the @code{-break-insert}
31634 command.
31635 @item python
31636 Indicates Python scripting support, Python-based
31637 pretty-printing commands, and possible presence of the
31638 @samp{display_hint} field in the output of @code{-var-list-children}
31639 @item thread-info
31640 Indicates support for the @code{-thread-info} command.
31641 @item data-read-memory-bytes
31642 Indicates support for the @code{-data-read-memory-bytes} and the
31643 @code{-data-write-memory-bytes} commands.
31644 @item breakpoint-notifications
31645 Indicates that changes to breakpoints and breakpoints created via the
31646 CLI will be announced via async records.
31647 @item ada-task-info
31648 Indicates support for the @code{-ada-task-info} command.
31649 @end table
31650
31651 @subheading The @code{-list-target-features} Command
31652 @findex -list-target-features
31653
31654 Returns a list of particular features that are supported by the
31655 target. Those features affect the permitted MI commands, but
31656 unlike the features reported by the @code{-list-features} command, the
31657 features depend on which target GDB is using at the moment. Whenever
31658 a target can change, due to commands such as @code{-target-select},
31659 @code{-target-attach} or @code{-exec-run}, the list of target features
31660 may change, and the frontend should obtain it again.
31661 Example output:
31662
31663 @smallexample
31664 (gdb) -list-features
31665 ^done,result=["async"]
31666 @end smallexample
31667
31668 The current list of features is:
31669
31670 @table @samp
31671 @item async
31672 Indicates that the target is capable of asynchronous command
31673 execution, which means that @value{GDBN} will accept further commands
31674 while the target is running.
31675
31676 @item reverse
31677 Indicates that the target is capable of reverse execution.
31678 @xref{Reverse Execution}, for more information.
31679
31680 @end table
31681
31682 @subheading The @code{-list-thread-groups} Command
31683 @findex -list-thread-groups
31684
31685 @subheading Synopsis
31686
31687 @smallexample
31688 -list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
31689 @end smallexample
31690
31691 Lists thread groups (@pxref{Thread groups}). When a single thread
31692 group is passed as the argument, lists the children of that group.
31693 When several thread group are passed, lists information about those
31694 thread groups. Without any parameters, lists information about all
31695 top-level thread groups.
31696
31697 Normally, thread groups that are being debugged are reported.
31698 With the @samp{--available} option, @value{GDBN} reports thread groups
31699 available on the target.
31700
31701 The output of this command may have either a @samp{threads} result or
31702 a @samp{groups} result. The @samp{thread} result has a list of tuples
31703 as value, with each tuple describing a thread (@pxref{GDB/MI Thread
31704 Information}). The @samp{groups} result has a list of tuples as value,
31705 each tuple describing a thread group. If top-level groups are
31706 requested (that is, no parameter is passed), or when several groups
31707 are passed, the output always has a @samp{groups} result. The format
31708 of the @samp{group} result is described below.
31709
31710 To reduce the number of roundtrips it's possible to list thread groups
31711 together with their children, by passing the @samp{--recurse} option
31712 and the recursion depth. Presently, only recursion depth of 1 is
31713 permitted. If this option is present, then every reported thread group
31714 will also include its children, either as @samp{group} or
31715 @samp{threads} field.
31716
31717 In general, any combination of option and parameters is permitted, with
31718 the following caveats:
31719
31720 @itemize @bullet
31721 @item
31722 When a single thread group is passed, the output will typically
31723 be the @samp{threads} result. Because threads may not contain
31724 anything, the @samp{recurse} option will be ignored.
31725
31726 @item
31727 When the @samp{--available} option is passed, limited information may
31728 be available. In particular, the list of threads of a process might
31729 be inaccessible. Further, specifying specific thread groups might
31730 not give any performance advantage over listing all thread groups.
31731 The frontend should assume that @samp{-list-thread-groups --available}
31732 is always an expensive operation and cache the results.
31733
31734 @end itemize
31735
31736 The @samp{groups} result is a list of tuples, where each tuple may
31737 have the following fields:
31738
31739 @table @code
31740 @item id
31741 Identifier of the thread group. This field is always present.
31742 The identifier is an opaque string; frontends should not try to
31743 convert it to an integer, even though it might look like one.
31744
31745 @item type
31746 The type of the thread group. At present, only @samp{process} is a
31747 valid type.
31748
31749 @item pid
31750 The target-specific process identifier. This field is only present
31751 for thread groups of type @samp{process} and only if the process exists.
31752
31753 @item num_children
31754 The number of children this thread group has. This field may be
31755 absent for an available thread group.
31756
31757 @item threads
31758 This field has a list of tuples as value, each tuple describing a
31759 thread. It may be present if the @samp{--recurse} option is
31760 specified, and it's actually possible to obtain the threads.
31761
31762 @item cores
31763 This field is a list of integers, each identifying a core that one
31764 thread of the group is running on. This field may be absent if
31765 such information is not available.
31766
31767 @item executable
31768 The name of the executable file that corresponds to this thread group.
31769 The field is only present for thread groups of type @samp{process},
31770 and only if there is a corresponding executable file.
31771
31772 @end table
31773
31774 @subheading Example
31775
31776 @smallexample
31777 @value{GDBP}
31778 -list-thread-groups
31779 ^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
31780 -list-thread-groups 17
31781 ^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
31782 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
31783 @{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
31784 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
31785 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
31786 -list-thread-groups --available
31787 ^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
31788 -list-thread-groups --available --recurse 1
31789 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
31790 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
31791 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
31792 -list-thread-groups --available --recurse 1 17 18
31793 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
31794 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
31795 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
31796 @end smallexample
31797
31798
31799 @subheading The @code{-add-inferior} Command
31800 @findex -add-inferior
31801
31802 @subheading Synopsis
31803
31804 @smallexample
31805 -add-inferior
31806 @end smallexample
31807
31808 Creates a new inferior (@pxref{Inferiors and Programs}). The created
31809 inferior is not associated with any executable. Such association may
31810 be established with the @samp{-file-exec-and-symbols} command
31811 (@pxref{GDB/MI File Commands}). The command response has a single
31812 field, @samp{thread-group}, whose value is the identifier of the
31813 thread group corresponding to the new inferior.
31814
31815 @subheading Example
31816
31817 @smallexample
31818 @value{GDBP}
31819 -add-inferior
31820 ^done,thread-group="i3"
31821 @end smallexample
31822
31823 @subheading The @code{-interpreter-exec} Command
31824 @findex -interpreter-exec
31825
31826 @subheading Synopsis
31827
31828 @smallexample
31829 -interpreter-exec @var{interpreter} @var{command}
31830 @end smallexample
31831 @anchor{-interpreter-exec}
31832
31833 Execute the specified @var{command} in the given @var{interpreter}.
31834
31835 @subheading @value{GDBN} Command
31836
31837 The corresponding @value{GDBN} command is @samp{interpreter-exec}.
31838
31839 @subheading Example
31840
31841 @smallexample
31842 (gdb)
31843 -interpreter-exec console "break main"
31844 &"During symbol reading, couldn't parse type; debugger out of date?.\n"
31845 &"During symbol reading, bad structure-type format.\n"
31846 ~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
31847 ^done
31848 (gdb)
31849 @end smallexample
31850
31851 @subheading The @code{-inferior-tty-set} Command
31852 @findex -inferior-tty-set
31853
31854 @subheading Synopsis
31855
31856 @smallexample
31857 -inferior-tty-set /dev/pts/1
31858 @end smallexample
31859
31860 Set terminal for future runs of the program being debugged.
31861
31862 @subheading @value{GDBN} Command
31863
31864 The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
31865
31866 @subheading Example
31867
31868 @smallexample
31869 (gdb)
31870 -inferior-tty-set /dev/pts/1
31871 ^done
31872 (gdb)
31873 @end smallexample
31874
31875 @subheading The @code{-inferior-tty-show} Command
31876 @findex -inferior-tty-show
31877
31878 @subheading Synopsis
31879
31880 @smallexample
31881 -inferior-tty-show
31882 @end smallexample
31883
31884 Show terminal for future runs of program being debugged.
31885
31886 @subheading @value{GDBN} Command
31887
31888 The corresponding @value{GDBN} command is @samp{show inferior-tty}.
31889
31890 @subheading Example
31891
31892 @smallexample
31893 (gdb)
31894 -inferior-tty-set /dev/pts/1
31895 ^done
31896 (gdb)
31897 -inferior-tty-show
31898 ^done,inferior_tty_terminal="/dev/pts/1"
31899 (gdb)
31900 @end smallexample
31901
31902 @subheading The @code{-enable-timings} Command
31903 @findex -enable-timings
31904
31905 @subheading Synopsis
31906
31907 @smallexample
31908 -enable-timings [yes | no]
31909 @end smallexample
31910
31911 Toggle the printing of the wallclock, user and system times for an MI
31912 command as a field in its output. This command is to help frontend
31913 developers optimize the performance of their code. No argument is
31914 equivalent to @samp{yes}.
31915
31916 @subheading @value{GDBN} Command
31917
31918 No equivalent.
31919
31920 @subheading Example
31921
31922 @smallexample
31923 (gdb)
31924 -enable-timings
31925 ^done
31926 (gdb)
31927 -break-insert main
31928 ^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
31929 addr="0x080484ed",func="main",file="myprog.c",
31930 fullname="/home/nickrob/myprog.c",line="73",times="0"@},
31931 time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
31932 (gdb)
31933 -enable-timings no
31934 ^done
31935 (gdb)
31936 -exec-run
31937 ^running
31938 (gdb)
31939 *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
31940 frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
31941 @{name="argv",value="0xbfb60364"@}],file="myprog.c",
31942 fullname="/home/nickrob/myprog.c",line="73"@}
31943 (gdb)
31944 @end smallexample
31945
31946 @node Annotations
31947 @chapter @value{GDBN} Annotations
31948
31949 This chapter describes annotations in @value{GDBN}. Annotations were
31950 designed to interface @value{GDBN} to graphical user interfaces or other
31951 similar programs which want to interact with @value{GDBN} at a
31952 relatively high level.
31953
31954 The annotation mechanism has largely been superseded by @sc{gdb/mi}
31955 (@pxref{GDB/MI}).
31956
31957 @ignore
31958 This is Edition @value{EDITION}, @value{DATE}.
31959 @end ignore
31960
31961 @menu
31962 * Annotations Overview:: What annotations are; the general syntax.
31963 * Server Prefix:: Issuing a command without affecting user state.
31964 * Prompting:: Annotations marking @value{GDBN}'s need for input.
31965 * Errors:: Annotations for error messages.
31966 * Invalidation:: Some annotations describe things now invalid.
31967 * Annotations for Running::
31968 Whether the program is running, how it stopped, etc.
31969 * Source Annotations:: Annotations describing source code.
31970 @end menu
31971
31972 @node Annotations Overview
31973 @section What is an Annotation?
31974 @cindex annotations
31975
31976 Annotations start with a newline character, two @samp{control-z}
31977 characters, and the name of the annotation. If there is no additional
31978 information associated with this annotation, the name of the annotation
31979 is followed immediately by a newline. If there is additional
31980 information, the name of the annotation is followed by a space, the
31981 additional information, and a newline. The additional information
31982 cannot contain newline characters.
31983
31984 Any output not beginning with a newline and two @samp{control-z}
31985 characters denotes literal output from @value{GDBN}. Currently there is
31986 no need for @value{GDBN} to output a newline followed by two
31987 @samp{control-z} characters, but if there was such a need, the
31988 annotations could be extended with an @samp{escape} annotation which
31989 means those three characters as output.
31990
31991 The annotation @var{level}, which is specified using the
31992 @option{--annotate} command line option (@pxref{Mode Options}), controls
31993 how much information @value{GDBN} prints together with its prompt,
31994 values of expressions, source lines, and other types of output. Level 0
31995 is for no annotations, level 1 is for use when @value{GDBN} is run as a
31996 subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
31997 for programs that control @value{GDBN}, and level 2 annotations have
31998 been made obsolete (@pxref{Limitations, , Limitations of the Annotation
31999 Interface, annotate, GDB's Obsolete Annotations}).
32000
32001 @table @code
32002 @kindex set annotate
32003 @item set annotate @var{level}
32004 The @value{GDBN} command @code{set annotate} sets the level of
32005 annotations to the specified @var{level}.
32006
32007 @item show annotate
32008 @kindex show annotate
32009 Show the current annotation level.
32010 @end table
32011
32012 This chapter describes level 3 annotations.
32013
32014 A simple example of starting up @value{GDBN} with annotations is:
32015
32016 @smallexample
32017 $ @kbd{gdb --annotate=3}
32018 GNU gdb 6.0
32019 Copyright 2003 Free Software Foundation, Inc.
32020 GDB is free software, covered by the GNU General Public License,
32021 and you are welcome to change it and/or distribute copies of it
32022 under certain conditions.
32023 Type "show copying" to see the conditions.
32024 There is absolutely no warranty for GDB. Type "show warranty"
32025 for details.
32026 This GDB was configured as "i386-pc-linux-gnu"
32027
32028 ^Z^Zpre-prompt
32029 (@value{GDBP})
32030 ^Z^Zprompt
32031 @kbd{quit}
32032
32033 ^Z^Zpost-prompt
32034 $
32035 @end smallexample
32036
32037 Here @samp{quit} is input to @value{GDBN}; the rest is output from
32038 @value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
32039 denotes a @samp{control-z} character) are annotations; the rest is
32040 output from @value{GDBN}.
32041
32042 @node Server Prefix
32043 @section The Server Prefix
32044 @cindex server prefix
32045
32046 If you prefix a command with @samp{server } then it will not affect
32047 the command history, nor will it affect @value{GDBN}'s notion of which
32048 command to repeat if @key{RET} is pressed on a line by itself. This
32049 means that commands can be run behind a user's back by a front-end in
32050 a transparent manner.
32051
32052 The @code{server } prefix does not affect the recording of values into
32053 the value history; to print a value without recording it into the
32054 value history, use the @code{output} command instead of the
32055 @code{print} command.
32056
32057 Using this prefix also disables confirmation requests
32058 (@pxref{confirmation requests}).
32059
32060 @node Prompting
32061 @section Annotation for @value{GDBN} Input
32062
32063 @cindex annotations for prompts
32064 When @value{GDBN} prompts for input, it annotates this fact so it is possible
32065 to know when to send output, when the output from a given command is
32066 over, etc.
32067
32068 Different kinds of input each have a different @dfn{input type}. Each
32069 input type has three annotations: a @code{pre-} annotation, which
32070 denotes the beginning of any prompt which is being output, a plain
32071 annotation, which denotes the end of the prompt, and then a @code{post-}
32072 annotation which denotes the end of any echo which may (or may not) be
32073 associated with the input. For example, the @code{prompt} input type
32074 features the following annotations:
32075
32076 @smallexample
32077 ^Z^Zpre-prompt
32078 ^Z^Zprompt
32079 ^Z^Zpost-prompt
32080 @end smallexample
32081
32082 The input types are
32083
32084 @table @code
32085 @findex pre-prompt annotation
32086 @findex prompt annotation
32087 @findex post-prompt annotation
32088 @item prompt
32089 When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
32090
32091 @findex pre-commands annotation
32092 @findex commands annotation
32093 @findex post-commands annotation
32094 @item commands
32095 When @value{GDBN} prompts for a set of commands, like in the @code{commands}
32096 command. The annotations are repeated for each command which is input.
32097
32098 @findex pre-overload-choice annotation
32099 @findex overload-choice annotation
32100 @findex post-overload-choice annotation
32101 @item overload-choice
32102 When @value{GDBN} wants the user to select between various overloaded functions.
32103
32104 @findex pre-query annotation
32105 @findex query annotation
32106 @findex post-query annotation
32107 @item query
32108 When @value{GDBN} wants the user to confirm a potentially dangerous operation.
32109
32110 @findex pre-prompt-for-continue annotation
32111 @findex prompt-for-continue annotation
32112 @findex post-prompt-for-continue annotation
32113 @item prompt-for-continue
32114 When @value{GDBN} is asking the user to press return to continue. Note: Don't
32115 expect this to work well; instead use @code{set height 0} to disable
32116 prompting. This is because the counting of lines is buggy in the
32117 presence of annotations.
32118 @end table
32119
32120 @node Errors
32121 @section Errors
32122 @cindex annotations for errors, warnings and interrupts
32123
32124 @findex quit annotation
32125 @smallexample
32126 ^Z^Zquit
32127 @end smallexample
32128
32129 This annotation occurs right before @value{GDBN} responds to an interrupt.
32130
32131 @findex error annotation
32132 @smallexample
32133 ^Z^Zerror
32134 @end smallexample
32135
32136 This annotation occurs right before @value{GDBN} responds to an error.
32137
32138 Quit and error annotations indicate that any annotations which @value{GDBN} was
32139 in the middle of may end abruptly. For example, if a
32140 @code{value-history-begin} annotation is followed by a @code{error}, one
32141 cannot expect to receive the matching @code{value-history-end}. One
32142 cannot expect not to receive it either, however; an error annotation
32143 does not necessarily mean that @value{GDBN} is immediately returning all the way
32144 to the top level.
32145
32146 @findex error-begin annotation
32147 A quit or error annotation may be preceded by
32148
32149 @smallexample
32150 ^Z^Zerror-begin
32151 @end smallexample
32152
32153 Any output between that and the quit or error annotation is the error
32154 message.
32155
32156 Warning messages are not yet annotated.
32157 @c If we want to change that, need to fix warning(), type_error(),
32158 @c range_error(), and possibly other places.
32159
32160 @node Invalidation
32161 @section Invalidation Notices
32162
32163 @cindex annotations for invalidation messages
32164 The following annotations say that certain pieces of state may have
32165 changed.
32166
32167 @table @code
32168 @findex frames-invalid annotation
32169 @item ^Z^Zframes-invalid
32170
32171 The frames (for example, output from the @code{backtrace} command) may
32172 have changed.
32173
32174 @findex breakpoints-invalid annotation
32175 @item ^Z^Zbreakpoints-invalid
32176
32177 The breakpoints may have changed. For example, the user just added or
32178 deleted a breakpoint.
32179 @end table
32180
32181 @node Annotations for Running
32182 @section Running the Program
32183 @cindex annotations for running programs
32184
32185 @findex starting annotation
32186 @findex stopping annotation
32187 When the program starts executing due to a @value{GDBN} command such as
32188 @code{step} or @code{continue},
32189
32190 @smallexample
32191 ^Z^Zstarting
32192 @end smallexample
32193
32194 is output. When the program stops,
32195
32196 @smallexample
32197 ^Z^Zstopped
32198 @end smallexample
32199
32200 is output. Before the @code{stopped} annotation, a variety of
32201 annotations describe how the program stopped.
32202
32203 @table @code
32204 @findex exited annotation
32205 @item ^Z^Zexited @var{exit-status}
32206 The program exited, and @var{exit-status} is the exit status (zero for
32207 successful exit, otherwise nonzero).
32208
32209 @findex signalled annotation
32210 @findex signal-name annotation
32211 @findex signal-name-end annotation
32212 @findex signal-string annotation
32213 @findex signal-string-end annotation
32214 @item ^Z^Zsignalled
32215 The program exited with a signal. After the @code{^Z^Zsignalled}, the
32216 annotation continues:
32217
32218 @smallexample
32219 @var{intro-text}
32220 ^Z^Zsignal-name
32221 @var{name}
32222 ^Z^Zsignal-name-end
32223 @var{middle-text}
32224 ^Z^Zsignal-string
32225 @var{string}
32226 ^Z^Zsignal-string-end
32227 @var{end-text}
32228 @end smallexample
32229
32230 @noindent
32231 where @var{name} is the name of the signal, such as @code{SIGILL} or
32232 @code{SIGSEGV}, and @var{string} is the explanation of the signal, such
32233 as @code{Illegal Instruction} or @code{Segmentation fault}.
32234 @var{intro-text}, @var{middle-text}, and @var{end-text} are for the
32235 user's benefit and have no particular format.
32236
32237 @findex signal annotation
32238 @item ^Z^Zsignal
32239 The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
32240 just saying that the program received the signal, not that it was
32241 terminated with it.
32242
32243 @findex breakpoint annotation
32244 @item ^Z^Zbreakpoint @var{number}
32245 The program hit breakpoint number @var{number}.
32246
32247 @findex watchpoint annotation
32248 @item ^Z^Zwatchpoint @var{number}
32249 The program hit watchpoint number @var{number}.
32250 @end table
32251
32252 @node Source Annotations
32253 @section Displaying Source
32254 @cindex annotations for source display
32255
32256 @findex source annotation
32257 The following annotation is used instead of displaying source code:
32258
32259 @smallexample
32260 ^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
32261 @end smallexample
32262
32263 where @var{filename} is an absolute file name indicating which source
32264 file, @var{line} is the line number within that file (where 1 is the
32265 first line in the file), @var{character} is the character position
32266 within the file (where 0 is the first character in the file) (for most
32267 debug formats this will necessarily point to the beginning of a line),
32268 @var{middle} is @samp{middle} if @var{addr} is in the middle of the
32269 line, or @samp{beg} if @var{addr} is at the beginning of the line, and
32270 @var{addr} is the address in the target program associated with the
32271 source which is being displayed. @var{addr} is in the form @samp{0x}
32272 followed by one or more lowercase hex digits (note that this does not
32273 depend on the language).
32274
32275 @node JIT Interface
32276 @chapter JIT Compilation Interface
32277 @cindex just-in-time compilation
32278 @cindex JIT compilation interface
32279
32280 This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
32281 interface. A JIT compiler is a program or library that generates native
32282 executable code at runtime and executes it, usually in order to achieve good
32283 performance while maintaining platform independence.
32284
32285 Programs that use JIT compilation are normally difficult to debug because
32286 portions of their code are generated at runtime, instead of being loaded from
32287 object files, which is where @value{GDBN} normally finds the program's symbols
32288 and debug information. In order to debug programs that use JIT compilation,
32289 @value{GDBN} has an interface that allows the program to register in-memory
32290 symbol files with @value{GDBN} at runtime.
32291
32292 If you are using @value{GDBN} to debug a program that uses this interface, then
32293 it should work transparently so long as you have not stripped the binary. If
32294 you are developing a JIT compiler, then the interface is documented in the rest
32295 of this chapter. At this time, the only known client of this interface is the
32296 LLVM JIT.
32297
32298 Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
32299 JIT compiler communicates with @value{GDBN} by writing data into a global
32300 variable and calling a fuction at a well-known symbol. When @value{GDBN}
32301 attaches, it reads a linked list of symbol files from the global variable to
32302 find existing code, and puts a breakpoint in the function so that it can find
32303 out about additional code.
32304
32305 @menu
32306 * Declarations:: Relevant C struct declarations
32307 * Registering Code:: Steps to register code
32308 * Unregistering Code:: Steps to unregister code
32309 * Custom Debug Info:: Emit debug information in a custom format
32310 @end menu
32311
32312 @node Declarations
32313 @section JIT Declarations
32314
32315 These are the relevant struct declarations that a C program should include to
32316 implement the interface:
32317
32318 @smallexample
32319 typedef enum
32320 @{
32321 JIT_NOACTION = 0,
32322 JIT_REGISTER_FN,
32323 JIT_UNREGISTER_FN
32324 @} jit_actions_t;
32325
32326 struct jit_code_entry
32327 @{
32328 struct jit_code_entry *next_entry;
32329 struct jit_code_entry *prev_entry;
32330 const char *symfile_addr;
32331 uint64_t symfile_size;
32332 @};
32333
32334 struct jit_descriptor
32335 @{
32336 uint32_t version;
32337 /* This type should be jit_actions_t, but we use uint32_t
32338 to be explicit about the bitwidth. */
32339 uint32_t action_flag;
32340 struct jit_code_entry *relevant_entry;
32341 struct jit_code_entry *first_entry;
32342 @};
32343
32344 /* GDB puts a breakpoint in this function. */
32345 void __attribute__((noinline)) __jit_debug_register_code() @{ @};
32346
32347 /* Make sure to specify the version statically, because the
32348 debugger may check the version before we can set it. */
32349 struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
32350 @end smallexample
32351
32352 If the JIT is multi-threaded, then it is important that the JIT synchronize any
32353 modifications to this global data properly, which can easily be done by putting
32354 a global mutex around modifications to these structures.
32355
32356 @node Registering Code
32357 @section Registering Code
32358
32359 To register code with @value{GDBN}, the JIT should follow this protocol:
32360
32361 @itemize @bullet
32362 @item
32363 Generate an object file in memory with symbols and other desired debug
32364 information. The file must include the virtual addresses of the sections.
32365
32366 @item
32367 Create a code entry for the file, which gives the start and size of the symbol
32368 file.
32369
32370 @item
32371 Add it to the linked list in the JIT descriptor.
32372
32373 @item
32374 Point the relevant_entry field of the descriptor at the entry.
32375
32376 @item
32377 Set @code{action_flag} to @code{JIT_REGISTER} and call
32378 @code{__jit_debug_register_code}.
32379 @end itemize
32380
32381 When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
32382 @code{relevant_entry} pointer so it doesn't have to walk the list looking for
32383 new code. However, the linked list must still be maintained in order to allow
32384 @value{GDBN} to attach to a running process and still find the symbol files.
32385
32386 @node Unregistering Code
32387 @section Unregistering Code
32388
32389 If code is freed, then the JIT should use the following protocol:
32390
32391 @itemize @bullet
32392 @item
32393 Remove the code entry corresponding to the code from the linked list.
32394
32395 @item
32396 Point the @code{relevant_entry} field of the descriptor at the code entry.
32397
32398 @item
32399 Set @code{action_flag} to @code{JIT_UNREGISTER} and call
32400 @code{__jit_debug_register_code}.
32401 @end itemize
32402
32403 If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
32404 and the JIT will leak the memory used for the associated symbol files.
32405
32406 @node Custom Debug Info
32407 @section Custom Debug Info
32408 @cindex custom JIT debug info
32409 @cindex JIT debug info reader
32410
32411 Generating debug information in platform-native file formats (like ELF
32412 or COFF) may be an overkill for JIT compilers; especially if all the
32413 debug info is used for is displaying a meaningful backtrace. The
32414 issue can be resolved by having the JIT writers decide on a debug info
32415 format and also provide a reader that parses the debug info generated
32416 by the JIT compiler. This section gives a brief overview on writing
32417 such a parser. More specific details can be found in the source file
32418 @file{gdb/jit-reader.in}, which is also installed as a header at
32419 @file{@var{includedir}/gdb/jit-reader.h} for easy inclusion.
32420
32421 The reader is implemented as a shared object (so this functionality is
32422 not available on platforms which don't allow loading shared objects at
32423 runtime). Two @value{GDBN} commands, @code{jit-reader-load} and
32424 @code{jit-reader-unload} are provided, to be used to load and unload
32425 the readers from a preconfigured directory. Once loaded, the shared
32426 object is used the parse the debug information emitted by the JIT
32427 compiler.
32428
32429 @menu
32430 * Using JIT Debug Info Readers:: How to use supplied readers correctly
32431 * Writing JIT Debug Info Readers:: Creating a debug-info reader
32432 @end menu
32433
32434 @node Using JIT Debug Info Readers
32435 @subsection Using JIT Debug Info Readers
32436 @kindex jit-reader-load
32437 @kindex jit-reader-unload
32438
32439 Readers can be loaded and unloaded using the @code{jit-reader-load}
32440 and @code{jit-reader-unload} commands.
32441
32442 @table @code
32443 @item jit-reader-load @var{reader-name}
32444 Load the JIT reader named @var{reader-name}. On a UNIX system, this
32445 will usually load @file{@var{libdir}/gdb/@var{reader-name}}, where
32446 @var{libdir} is the system library directory, usually
32447 @file{/usr/local/lib}. Only one reader can be active at a time;
32448 trying to load a second reader when one is already loaded will result
32449 in @value{GDBN} reporting an error. A new JIT reader can be loaded by
32450 first unloading the current one using @code{jit-reader-load} and then
32451 invoking @code{jit-reader-load}.
32452
32453 @item jit-reader-unload
32454 Unload the currently loaded JIT reader.
32455
32456 @end table
32457
32458 @node Writing JIT Debug Info Readers
32459 @subsection Writing JIT Debug Info Readers
32460 @cindex writing JIT debug info readers
32461
32462 As mentioned, a reader is essentially a shared object conforming to a
32463 certain ABI. This ABI is described in @file{jit-reader.h}.
32464
32465 @file{jit-reader.h} defines the structures, macros and functions
32466 required to write a reader. It is installed (along with
32467 @value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is
32468 the system include directory.
32469
32470 Readers need to be released under a GPL compatible license. A reader
32471 can be declared as released under such a license by placing the macro
32472 @code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file.
32473
32474 The entry point for readers is the symbol @code{gdb_init_reader},
32475 which is expected to be a function with the prototype
32476
32477 @findex gdb_init_reader
32478 @smallexample
32479 extern struct gdb_reader_funcs *gdb_init_reader (void);
32480 @end smallexample
32481
32482 @cindex @code{struct gdb_reader_funcs}
32483
32484 @code{struct gdb_reader_funcs} contains a set of pointers to callback
32485 functions. These functions are executed to read the debug info
32486 generated by the JIT compiler (@code{read}), to unwind stack frames
32487 (@code{unwind}) and to create canonical frame IDs
32488 (@code{get_Frame_id}). It also has a callback that is called when the
32489 reader is being unloaded (@code{destroy}). The struct looks like this
32490
32491 @smallexample
32492 struct gdb_reader_funcs
32493 @{
32494 /* Must be set to GDB_READER_INTERFACE_VERSION. */
32495 int reader_version;
32496
32497 /* For use by the reader. */
32498 void *priv_data;
32499
32500 gdb_read_debug_info *read;
32501 gdb_unwind_frame *unwind;
32502 gdb_get_frame_id *get_frame_id;
32503 gdb_destroy_reader *destroy;
32504 @};
32505 @end smallexample
32506
32507 @cindex @code{struct gdb_symbol_callbacks}
32508 @cindex @code{struct gdb_unwind_callbacks}
32509
32510 The callbacks are provided with another set of callbacks by
32511 @value{GDBN} to do their job. For @code{read}, these callbacks are
32512 passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind}
32513 and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}.
32514 @code{struct gdb_symbol_callbacks} has callbacks to create new object
32515 files and new symbol tables inside those object files. @code{struct
32516 gdb_unwind_callbacks} has callbacks to read registers off the current
32517 frame and to write out the values of the registers in the previous
32518 frame. Both have a callback (@code{target_read}) to read bytes off the
32519 target's address space.
32520
32521 @node In-Process Agent
32522 @chapter In-Process Agent
32523 @cindex debugging agent
32524 The traditional debugging model is conceptually low-speed, but works fine,
32525 because most bugs can be reproduced in debugging-mode execution. However,
32526 as multi-core or many-core processors are becoming mainstream, and
32527 multi-threaded programs become more and more popular, there should be more
32528 and more bugs that only manifest themselves at normal-mode execution, for
32529 example, thread races, because debugger's interference with the program's
32530 timing may conceal the bugs. On the other hand, in some applications,
32531 it is not feasible for the debugger to interrupt the program's execution
32532 long enough for the developer to learn anything helpful about its behavior.
32533 If the program's correctness depends on its real-time behavior, delays
32534 introduced by a debugger might cause the program to fail, even when the
32535 code itself is correct. It is useful to be able to observe the program's
32536 behavior without interrupting it.
32537
32538 Therefore, traditional debugging model is too intrusive to reproduce
32539 some bugs. In order to reduce the interference with the program, we can
32540 reduce the number of operations performed by debugger. The
32541 @dfn{In-Process Agent}, a shared library, is running within the same
32542 process with inferior, and is able to perform some debugging operations
32543 itself. As a result, debugger is only involved when necessary, and
32544 performance of debugging can be improved accordingly. Note that
32545 interference with program can be reduced but can't be removed completely,
32546 because the in-process agent will still stop or slow down the program.
32547
32548 The in-process agent can interpret and execute Agent Expressions
32549 (@pxref{Agent Expressions}) during performing debugging operations. The
32550 agent expressions can be used for different purposes, such as collecting
32551 data in tracepoints, and condition evaluation in breakpoints.
32552
32553 @anchor{Control Agent}
32554 You can control whether the in-process agent is used as an aid for
32555 debugging with the following commands:
32556
32557 @table @code
32558 @kindex set agent on
32559 @item set agent on
32560 Causes the in-process agent to perform some operations on behalf of the
32561 debugger. Just which operations requested by the user will be done
32562 by the in-process agent depends on the its capabilities. For example,
32563 if you request to evaluate breakpoint conditions in the in-process agent,
32564 and the in-process agent has such capability as well, then breakpoint
32565 conditions will be evaluated in the in-process agent.
32566
32567 @kindex set agent off
32568 @item set agent off
32569 Disables execution of debugging operations by the in-process agent. All
32570 of the operations will be performed by @value{GDBN}.
32571
32572 @kindex show agent
32573 @item show agent
32574 Display the current setting of execution of debugging operations by
32575 the in-process agent.
32576 @end table
32577
32578 @node GDB Bugs
32579 @chapter Reporting Bugs in @value{GDBN}
32580 @cindex bugs in @value{GDBN}
32581 @cindex reporting bugs in @value{GDBN}
32582
32583 Your bug reports play an essential role in making @value{GDBN} reliable.
32584
32585 Reporting a bug may help you by bringing a solution to your problem, or it
32586 may not. But in any case the principal function of a bug report is to help
32587 the entire community by making the next version of @value{GDBN} work better. Bug
32588 reports are your contribution to the maintenance of @value{GDBN}.
32589
32590 In order for a bug report to serve its purpose, you must include the
32591 information that enables us to fix the bug.
32592
32593 @menu
32594 * Bug Criteria:: Have you found a bug?
32595 * Bug Reporting:: How to report bugs
32596 @end menu
32597
32598 @node Bug Criteria
32599 @section Have You Found a Bug?
32600 @cindex bug criteria
32601
32602 If you are not sure whether you have found a bug, here are some guidelines:
32603
32604 @itemize @bullet
32605 @cindex fatal signal
32606 @cindex debugger crash
32607 @cindex crash of debugger
32608 @item
32609 If the debugger gets a fatal signal, for any input whatever, that is a
32610 @value{GDBN} bug. Reliable debuggers never crash.
32611
32612 @cindex error on valid input
32613 @item
32614 If @value{GDBN} produces an error message for valid input, that is a
32615 bug. (Note that if you're cross debugging, the problem may also be
32616 somewhere in the connection to the target.)
32617
32618 @cindex invalid input
32619 @item
32620 If @value{GDBN} does not produce an error message for invalid input,
32621 that is a bug. However, you should note that your idea of
32622 ``invalid input'' might be our idea of ``an extension'' or ``support
32623 for traditional practice''.
32624
32625 @item
32626 If you are an experienced user of debugging tools, your suggestions
32627 for improvement of @value{GDBN} are welcome in any case.
32628 @end itemize
32629
32630 @node Bug Reporting
32631 @section How to Report Bugs
32632 @cindex bug reports
32633 @cindex @value{GDBN} bugs, reporting
32634
32635 A number of companies and individuals offer support for @sc{gnu} products.
32636 If you obtained @value{GDBN} from a support organization, we recommend you
32637 contact that organization first.
32638
32639 You can find contact information for many support companies and
32640 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
32641 distribution.
32642 @c should add a web page ref...
32643
32644 @ifset BUGURL
32645 @ifset BUGURL_DEFAULT
32646 In any event, we also recommend that you submit bug reports for
32647 @value{GDBN}. The preferred method is to submit them directly using
32648 @uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
32649 page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
32650 be used.
32651
32652 @strong{Do not send bug reports to @samp{info-gdb}, or to
32653 @samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
32654 not want to receive bug reports. Those that do have arranged to receive
32655 @samp{bug-gdb}.
32656
32657 The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
32658 serves as a repeater. The mailing list and the newsgroup carry exactly
32659 the same messages. Often people think of posting bug reports to the
32660 newsgroup instead of mailing them. This appears to work, but it has one
32661 problem which can be crucial: a newsgroup posting often lacks a mail
32662 path back to the sender. Thus, if we need to ask for more information,
32663 we may be unable to reach you. For this reason, it is better to send
32664 bug reports to the mailing list.
32665 @end ifset
32666 @ifclear BUGURL_DEFAULT
32667 In any event, we also recommend that you submit bug reports for
32668 @value{GDBN} to @value{BUGURL}.
32669 @end ifclear
32670 @end ifset
32671
32672 The fundamental principle of reporting bugs usefully is this:
32673 @strong{report all the facts}. If you are not sure whether to state a
32674 fact or leave it out, state it!
32675
32676 Often people omit facts because they think they know what causes the
32677 problem and assume that some details do not matter. Thus, you might
32678 assume that the name of the variable you use in an example does not matter.
32679 Well, probably it does not, but one cannot be sure. Perhaps the bug is a
32680 stray memory reference which happens to fetch from the location where that
32681 name is stored in memory; perhaps, if the name were different, the contents
32682 of that location would fool the debugger into doing the right thing despite
32683 the bug. Play it safe and give a specific, complete example. That is the
32684 easiest thing for you to do, and the most helpful.
32685
32686 Keep in mind that the purpose of a bug report is to enable us to fix the
32687 bug. It may be that the bug has been reported previously, but neither
32688 you nor we can know that unless your bug report is complete and
32689 self-contained.
32690
32691 Sometimes people give a few sketchy facts and ask, ``Does this ring a
32692 bell?'' Those bug reports are useless, and we urge everyone to
32693 @emph{refuse to respond to them} except to chide the sender to report
32694 bugs properly.
32695
32696 To enable us to fix the bug, you should include all these things:
32697
32698 @itemize @bullet
32699 @item
32700 The version of @value{GDBN}. @value{GDBN} announces it if you start
32701 with no arguments; you can also print it at any time using @code{show
32702 version}.
32703
32704 Without this, we will not know whether there is any point in looking for
32705 the bug in the current version of @value{GDBN}.
32706
32707 @item
32708 The type of machine you are using, and the operating system name and
32709 version number.
32710
32711 @item
32712 What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
32713 ``@value{GCC}--2.8.1''.
32714
32715 @item
32716 What compiler (and its version) was used to compile the program you are
32717 debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
32718 C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
32719 to get this information; for other compilers, see the documentation for
32720 those compilers.
32721
32722 @item
32723 The command arguments you gave the compiler to compile your example and
32724 observe the bug. For example, did you use @samp{-O}? To guarantee
32725 you will not omit something important, list them all. A copy of the
32726 Makefile (or the output from make) is sufficient.
32727
32728 If we were to try to guess the arguments, we would probably guess wrong
32729 and then we might not encounter the bug.
32730
32731 @item
32732 A complete input script, and all necessary source files, that will
32733 reproduce the bug.
32734
32735 @item
32736 A description of what behavior you observe that you believe is
32737 incorrect. For example, ``It gets a fatal signal.''
32738
32739 Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
32740 will certainly notice it. But if the bug is incorrect output, we might
32741 not notice unless it is glaringly wrong. You might as well not give us
32742 a chance to make a mistake.
32743
32744 Even if the problem you experience is a fatal signal, you should still
32745 say so explicitly. Suppose something strange is going on, such as, your
32746 copy of @value{GDBN} is out of synch, or you have encountered a bug in
32747 the C library on your system. (This has happened!) Your copy might
32748 crash and ours would not. If you told us to expect a crash, then when
32749 ours fails to crash, we would know that the bug was not happening for
32750 us. If you had not told us to expect a crash, then we would not be able
32751 to draw any conclusion from our observations.
32752
32753 @pindex script
32754 @cindex recording a session script
32755 To collect all this information, you can use a session recording program
32756 such as @command{script}, which is available on many Unix systems.
32757 Just run your @value{GDBN} session inside @command{script} and then
32758 include the @file{typescript} file with your bug report.
32759
32760 Another way to record a @value{GDBN} session is to run @value{GDBN}
32761 inside Emacs and then save the entire buffer to a file.
32762
32763 @item
32764 If you wish to suggest changes to the @value{GDBN} source, send us context
32765 diffs. If you even discuss something in the @value{GDBN} source, refer to
32766 it by context, not by line number.
32767
32768 The line numbers in our development sources will not match those in your
32769 sources. Your line numbers would convey no useful information to us.
32770
32771 @end itemize
32772
32773 Here are some things that are not necessary:
32774
32775 @itemize @bullet
32776 @item
32777 A description of the envelope of the bug.
32778
32779 Often people who encounter a bug spend a lot of time investigating
32780 which changes to the input file will make the bug go away and which
32781 changes will not affect it.
32782
32783 This is often time consuming and not very useful, because the way we
32784 will find the bug is by running a single example under the debugger
32785 with breakpoints, not by pure deduction from a series of examples.
32786 We recommend that you save your time for something else.
32787
32788 Of course, if you can find a simpler example to report @emph{instead}
32789 of the original one, that is a convenience for us. Errors in the
32790 output will be easier to spot, running under the debugger will take
32791 less time, and so on.
32792
32793 However, simplification is not vital; if you do not want to do this,
32794 report the bug anyway and send us the entire test case you used.
32795
32796 @item
32797 A patch for the bug.
32798
32799 A patch for the bug does help us if it is a good one. But do not omit
32800 the necessary information, such as the test case, on the assumption that
32801 a patch is all we need. We might see problems with your patch and decide
32802 to fix the problem another way, or we might not understand it at all.
32803
32804 Sometimes with a program as complicated as @value{GDBN} it is very hard to
32805 construct an example that will make the program follow a certain path
32806 through the code. If you do not send us the example, we will not be able
32807 to construct one, so we will not be able to verify that the bug is fixed.
32808
32809 And if we cannot understand what bug you are trying to fix, or why your
32810 patch should be an improvement, we will not install it. A test case will
32811 help us to understand.
32812
32813 @item
32814 A guess about what the bug is or what it depends on.
32815
32816 Such guesses are usually wrong. Even we cannot guess right about such
32817 things without first using the debugger to find the facts.
32818 @end itemize
32819
32820 @c The readline documentation is distributed with the readline code
32821 @c and consists of the two following files:
32822 @c rluser.texi
32823 @c hsuser.texi
32824 @c Use -I with makeinfo to point to the appropriate directory,
32825 @c environment var TEXINPUTS with TeX.
32826 @ifclear SYSTEM_READLINE
32827 @include rluser.texi
32828 @include hsuser.texi
32829 @end ifclear
32830
32831 @node In Memoriam
32832 @appendix In Memoriam
32833
32834 The @value{GDBN} project mourns the loss of the following long-time
32835 contributors:
32836
32837 @table @code
32838 @item Fred Fish
32839 Fred was a long-standing contributor to @value{GDBN} (1991-2006), and
32840 to Free Software in general. Outside of @value{GDBN}, he was known in
32841 the Amiga world for his series of Fish Disks, and the GeekGadget project.
32842
32843 @item Michael Snyder
32844 Michael was one of the Global Maintainers of the @value{GDBN} project,
32845 with contributions recorded as early as 1996, until 2011. In addition
32846 to his day to day participation, he was a large driving force behind
32847 adding Reverse Debugging to @value{GDBN}.
32848 @end table
32849
32850 Beyond their technical contributions to the project, they were also
32851 enjoyable members of the Free Software Community. We will miss them.
32852
32853 @node Formatting Documentation
32854 @appendix Formatting Documentation
32855
32856 @cindex @value{GDBN} reference card
32857 @cindex reference card
32858 The @value{GDBN} 4 release includes an already-formatted reference card, ready
32859 for printing with PostScript or Ghostscript, in the @file{gdb}
32860 subdirectory of the main source directory@footnote{In
32861 @file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
32862 release.}. If you can use PostScript or Ghostscript with your printer,
32863 you can print the reference card immediately with @file{refcard.ps}.
32864
32865 The release also includes the source for the reference card. You
32866 can format it, using @TeX{}, by typing:
32867
32868 @smallexample
32869 make refcard.dvi
32870 @end smallexample
32871
32872 The @value{GDBN} reference card is designed to print in @dfn{landscape}
32873 mode on US ``letter'' size paper;
32874 that is, on a sheet 11 inches wide by 8.5 inches
32875 high. You will need to specify this form of printing as an option to
32876 your @sc{dvi} output program.
32877
32878 @cindex documentation
32879
32880 All the documentation for @value{GDBN} comes as part of the machine-readable
32881 distribution. The documentation is written in Texinfo format, which is
32882 a documentation system that uses a single source file to produce both
32883 on-line information and a printed manual. You can use one of the Info
32884 formatting commands to create the on-line version of the documentation
32885 and @TeX{} (or @code{texi2roff}) to typeset the printed version.
32886
32887 @value{GDBN} includes an already formatted copy of the on-line Info
32888 version of this manual in the @file{gdb} subdirectory. The main Info
32889 file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
32890 subordinate files matching @samp{gdb.info*} in the same directory. If
32891 necessary, you can print out these files, or read them with any editor;
32892 but they are easier to read using the @code{info} subsystem in @sc{gnu}
32893 Emacs or the standalone @code{info} program, available as part of the
32894 @sc{gnu} Texinfo distribution.
32895
32896 If you want to format these Info files yourself, you need one of the
32897 Info formatting programs, such as @code{texinfo-format-buffer} or
32898 @code{makeinfo}.
32899
32900 If you have @code{makeinfo} installed, and are in the top level
32901 @value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
32902 version @value{GDBVN}), you can make the Info file by typing:
32903
32904 @smallexample
32905 cd gdb
32906 make gdb.info
32907 @end smallexample
32908
32909 If you want to typeset and print copies of this manual, you need @TeX{},
32910 a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
32911 Texinfo definitions file.
32912
32913 @TeX{} is a typesetting program; it does not print files directly, but
32914 produces output files called @sc{dvi} files. To print a typeset
32915 document, you need a program to print @sc{dvi} files. If your system
32916 has @TeX{} installed, chances are it has such a program. The precise
32917 command to use depends on your system; @kbd{lpr -d} is common; another
32918 (for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
32919 require a file name without any extension or a @samp{.dvi} extension.
32920
32921 @TeX{} also requires a macro definitions file called
32922 @file{texinfo.tex}. This file tells @TeX{} how to typeset a document
32923 written in Texinfo format. On its own, @TeX{} cannot either read or
32924 typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
32925 and is located in the @file{gdb-@var{version-number}/texinfo}
32926 directory.
32927
32928 If you have @TeX{} and a @sc{dvi} printer program installed, you can
32929 typeset and print this manual. First switch to the @file{gdb}
32930 subdirectory of the main source directory (for example, to
32931 @file{gdb-@value{GDBVN}/gdb}) and type:
32932
32933 @smallexample
32934 make gdb.dvi
32935 @end smallexample
32936
32937 Then give @file{gdb.dvi} to your @sc{dvi} printing program.
32938
32939 @node Installing GDB
32940 @appendix Installing @value{GDBN}
32941 @cindex installation
32942
32943 @menu
32944 * Requirements:: Requirements for building @value{GDBN}
32945 * Running Configure:: Invoking the @value{GDBN} @file{configure} script
32946 * Separate Objdir:: Compiling @value{GDBN} in another directory
32947 * Config Names:: Specifying names for hosts and targets
32948 * Configure Options:: Summary of options for configure
32949 * System-wide configuration:: Having a system-wide init file
32950 @end menu
32951
32952 @node Requirements
32953 @section Requirements for Building @value{GDBN}
32954 @cindex building @value{GDBN}, requirements for
32955
32956 Building @value{GDBN} requires various tools and packages to be available.
32957 Other packages will be used only if they are found.
32958
32959 @heading Tools/Packages Necessary for Building @value{GDBN}
32960 @table @asis
32961 @item ISO C90 compiler
32962 @value{GDBN} is written in ISO C90. It should be buildable with any
32963 working C90 compiler, e.g.@: GCC.
32964
32965 @end table
32966
32967 @heading Tools/Packages Optional for Building @value{GDBN}
32968 @table @asis
32969 @item Expat
32970 @anchor{Expat}
32971 @value{GDBN} can use the Expat XML parsing library. This library may be
32972 included with your operating system distribution; if it is not, you
32973 can get the latest version from @url{http://expat.sourceforge.net}.
32974 The @file{configure} script will search for this library in several
32975 standard locations; if it is installed in an unusual path, you can
32976 use the @option{--with-libexpat-prefix} option to specify its location.
32977
32978 Expat is used for:
32979
32980 @itemize @bullet
32981 @item
32982 Remote protocol memory maps (@pxref{Memory Map Format})
32983 @item
32984 Target descriptions (@pxref{Target Descriptions})
32985 @item
32986 Remote shared library lists (@xref{Library List Format},
32987 or alternatively @pxref{Library List Format for SVR4 Targets})
32988 @item
32989 MS-Windows shared libraries (@pxref{Shared Libraries})
32990 @item
32991 Traceframe info (@pxref{Traceframe Info Format})
32992 @end itemize
32993
32994 @item zlib
32995 @cindex compressed debug sections
32996 @value{GDBN} will use the @samp{zlib} library, if available, to read
32997 compressed debug sections. Some linkers, such as GNU gold, are capable
32998 of producing binaries with compressed debug sections. If @value{GDBN}
32999 is compiled with @samp{zlib}, it will be able to read the debug
33000 information in such binaries.
33001
33002 The @samp{zlib} library is likely included with your operating system
33003 distribution; if it is not, you can get the latest version from
33004 @url{http://zlib.net}.
33005
33006 @item iconv
33007 @value{GDBN}'s features related to character sets (@pxref{Character
33008 Sets}) require a functioning @code{iconv} implementation. If you are
33009 on a GNU system, then this is provided by the GNU C Library. Some
33010 other systems also provide a working @code{iconv}.
33011
33012 If @value{GDBN} is using the @code{iconv} program which is installed
33013 in a non-standard place, you will need to tell @value{GDBN} where to find it.
33014 This is done with @option{--with-iconv-bin} which specifies the
33015 directory that contains the @code{iconv} program.
33016
33017 On systems without @code{iconv}, you can install GNU Libiconv. If you
33018 have previously installed Libiconv, you can use the
33019 @option{--with-libiconv-prefix} option to configure.
33020
33021 @value{GDBN}'s top-level @file{configure} and @file{Makefile} will
33022 arrange to build Libiconv if a directory named @file{libiconv} appears
33023 in the top-most source directory. If Libiconv is built this way, and
33024 if the operating system does not provide a suitable @code{iconv}
33025 implementation, then the just-built library will automatically be used
33026 by @value{GDBN}. One easy way to set this up is to download GNU
33027 Libiconv, unpack it, and then rename the directory holding the
33028 Libiconv source code to @samp{libiconv}.
33029 @end table
33030
33031 @node Running Configure
33032 @section Invoking the @value{GDBN} @file{configure} Script
33033 @cindex configuring @value{GDBN}
33034 @value{GDBN} comes with a @file{configure} script that automates the process
33035 of preparing @value{GDBN} for installation; you can then use @code{make} to
33036 build the @code{gdb} program.
33037 @iftex
33038 @c irrelevant in info file; it's as current as the code it lives with.
33039 @footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
33040 look at the @file{README} file in the sources; we may have improved the
33041 installation procedures since publishing this manual.}
33042 @end iftex
33043
33044 The @value{GDBN} distribution includes all the source code you need for
33045 @value{GDBN} in a single directory, whose name is usually composed by
33046 appending the version number to @samp{gdb}.
33047
33048 For example, the @value{GDBN} version @value{GDBVN} distribution is in the
33049 @file{gdb-@value{GDBVN}} directory. That directory contains:
33050
33051 @table @code
33052 @item gdb-@value{GDBVN}/configure @r{(and supporting files)}
33053 script for configuring @value{GDBN} and all its supporting libraries
33054
33055 @item gdb-@value{GDBVN}/gdb
33056 the source specific to @value{GDBN} itself
33057
33058 @item gdb-@value{GDBVN}/bfd
33059 source for the Binary File Descriptor library
33060
33061 @item gdb-@value{GDBVN}/include
33062 @sc{gnu} include files
33063
33064 @item gdb-@value{GDBVN}/libiberty
33065 source for the @samp{-liberty} free software library
33066
33067 @item gdb-@value{GDBVN}/opcodes
33068 source for the library of opcode tables and disassemblers
33069
33070 @item gdb-@value{GDBVN}/readline
33071 source for the @sc{gnu} command-line interface
33072
33073 @item gdb-@value{GDBVN}/glob
33074 source for the @sc{gnu} filename pattern-matching subroutine
33075
33076 @item gdb-@value{GDBVN}/mmalloc
33077 source for the @sc{gnu} memory-mapped malloc package
33078 @end table
33079
33080 The simplest way to configure and build @value{GDBN} is to run @file{configure}
33081 from the @file{gdb-@var{version-number}} source directory, which in
33082 this example is the @file{gdb-@value{GDBVN}} directory.
33083
33084 First switch to the @file{gdb-@var{version-number}} source directory
33085 if you are not already in it; then run @file{configure}. Pass the
33086 identifier for the platform on which @value{GDBN} will run as an
33087 argument.
33088
33089 For example:
33090
33091 @smallexample
33092 cd gdb-@value{GDBVN}
33093 ./configure @var{host}
33094 make
33095 @end smallexample
33096
33097 @noindent
33098 where @var{host} is an identifier such as @samp{sun4} or
33099 @samp{decstation}, that identifies the platform where @value{GDBN} will run.
33100 (You can often leave off @var{host}; @file{configure} tries to guess the
33101 correct value by examining your system.)
33102
33103 Running @samp{configure @var{host}} and then running @code{make} builds the
33104 @file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
33105 libraries, then @code{gdb} itself. The configured source files, and the
33106 binaries, are left in the corresponding source directories.
33107
33108 @need 750
33109 @file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
33110 system does not recognize this automatically when you run a different
33111 shell, you may need to run @code{sh} on it explicitly:
33112
33113 @smallexample
33114 sh configure @var{host}
33115 @end smallexample
33116
33117 If you run @file{configure} from a directory that contains source
33118 directories for multiple libraries or programs, such as the
33119 @file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
33120 @file{configure}
33121 creates configuration files for every directory level underneath (unless
33122 you tell it not to, with the @samp{--norecursion} option).
33123
33124 You should run the @file{configure} script from the top directory in the
33125 source tree, the @file{gdb-@var{version-number}} directory. If you run
33126 @file{configure} from one of the subdirectories, you will configure only
33127 that subdirectory. That is usually not what you want. In particular,
33128 if you run the first @file{configure} from the @file{gdb} subdirectory
33129 of the @file{gdb-@var{version-number}} directory, you will omit the
33130 configuration of @file{bfd}, @file{readline}, and other sibling
33131 directories of the @file{gdb} subdirectory. This leads to build errors
33132 about missing include files such as @file{bfd/bfd.h}.
33133
33134 You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
33135 However, you should make sure that the shell on your path (named by
33136 the @samp{SHELL} environment variable) is publicly readable. Remember
33137 that @value{GDBN} uses the shell to start your program---some systems refuse to
33138 let @value{GDBN} debug child processes whose programs are not readable.
33139
33140 @node Separate Objdir
33141 @section Compiling @value{GDBN} in Another Directory
33142
33143 If you want to run @value{GDBN} versions for several host or target machines,
33144 you need a different @code{gdb} compiled for each combination of
33145 host and target. @file{configure} is designed to make this easy by
33146 allowing you to generate each configuration in a separate subdirectory,
33147 rather than in the source directory. If your @code{make} program
33148 handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
33149 @code{make} in each of these directories builds the @code{gdb}
33150 program specified there.
33151
33152 To build @code{gdb} in a separate directory, run @file{configure}
33153 with the @samp{--srcdir} option to specify where to find the source.
33154 (You also need to specify a path to find @file{configure}
33155 itself from your working directory. If the path to @file{configure}
33156 would be the same as the argument to @samp{--srcdir}, you can leave out
33157 the @samp{--srcdir} option; it is assumed.)
33158
33159 For example, with version @value{GDBVN}, you can build @value{GDBN} in a
33160 separate directory for a Sun 4 like this:
33161
33162 @smallexample
33163 @group
33164 cd gdb-@value{GDBVN}
33165 mkdir ../gdb-sun4
33166 cd ../gdb-sun4
33167 ../gdb-@value{GDBVN}/configure sun4
33168 make
33169 @end group
33170 @end smallexample
33171
33172 When @file{configure} builds a configuration using a remote source
33173 directory, it creates a tree for the binaries with the same structure
33174 (and using the same names) as the tree under the source directory. In
33175 the example, you'd find the Sun 4 library @file{libiberty.a} in the
33176 directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
33177 @file{gdb-sun4/gdb}.
33178
33179 Make sure that your path to the @file{configure} script has just one
33180 instance of @file{gdb} in it. If your path to @file{configure} looks
33181 like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
33182 one subdirectory of @value{GDBN}, not the whole package. This leads to
33183 build errors about missing include files such as @file{bfd/bfd.h}.
33184
33185 One popular reason to build several @value{GDBN} configurations in separate
33186 directories is to configure @value{GDBN} for cross-compiling (where
33187 @value{GDBN} runs on one machine---the @dfn{host}---while debugging
33188 programs that run on another machine---the @dfn{target}).
33189 You specify a cross-debugging target by
33190 giving the @samp{--target=@var{target}} option to @file{configure}.
33191
33192 When you run @code{make} to build a program or library, you must run
33193 it in a configured directory---whatever directory you were in when you
33194 called @file{configure} (or one of its subdirectories).
33195
33196 The @code{Makefile} that @file{configure} generates in each source
33197 directory also runs recursively. If you type @code{make} in a source
33198 directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
33199 directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
33200 will build all the required libraries, and then build GDB.
33201
33202 When you have multiple hosts or targets configured in separate
33203 directories, you can run @code{make} on them in parallel (for example,
33204 if they are NFS-mounted on each of the hosts); they will not interfere
33205 with each other.
33206
33207 @node Config Names
33208 @section Specifying Names for Hosts and Targets
33209
33210 The specifications used for hosts and targets in the @file{configure}
33211 script are based on a three-part naming scheme, but some short predefined
33212 aliases are also supported. The full naming scheme encodes three pieces
33213 of information in the following pattern:
33214
33215 @smallexample
33216 @var{architecture}-@var{vendor}-@var{os}
33217 @end smallexample
33218
33219 For example, you can use the alias @code{sun4} as a @var{host} argument,
33220 or as the value for @var{target} in a @code{--target=@var{target}}
33221 option. The equivalent full name is @samp{sparc-sun-sunos4}.
33222
33223 The @file{configure} script accompanying @value{GDBN} does not provide
33224 any query facility to list all supported host and target names or
33225 aliases. @file{configure} calls the Bourne shell script
33226 @code{config.sub} to map abbreviations to full names; you can read the
33227 script, if you wish, or you can use it to test your guesses on
33228 abbreviations---for example:
33229
33230 @smallexample
33231 % sh config.sub i386-linux
33232 i386-pc-linux-gnu
33233 % sh config.sub alpha-linux
33234 alpha-unknown-linux-gnu
33235 % sh config.sub hp9k700
33236 hppa1.1-hp-hpux
33237 % sh config.sub sun4
33238 sparc-sun-sunos4.1.1
33239 % sh config.sub sun3
33240 m68k-sun-sunos4.1.1
33241 % sh config.sub i986v
33242 Invalid configuration `i986v': machine `i986v' not recognized
33243 @end smallexample
33244
33245 @noindent
33246 @code{config.sub} is also distributed in the @value{GDBN} source
33247 directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
33248
33249 @node Configure Options
33250 @section @file{configure} Options
33251
33252 Here is a summary of the @file{configure} options and arguments that
33253 are most often useful for building @value{GDBN}. @file{configure} also has
33254 several other options not listed here. @inforef{What Configure
33255 Does,,configure.info}, for a full explanation of @file{configure}.
33256
33257 @smallexample
33258 configure @r{[}--help@r{]}
33259 @r{[}--prefix=@var{dir}@r{]}
33260 @r{[}--exec-prefix=@var{dir}@r{]}
33261 @r{[}--srcdir=@var{dirname}@r{]}
33262 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
33263 @r{[}--target=@var{target}@r{]}
33264 @var{host}
33265 @end smallexample
33266
33267 @noindent
33268 You may introduce options with a single @samp{-} rather than
33269 @samp{--} if you prefer; but you may abbreviate option names if you use
33270 @samp{--}.
33271
33272 @table @code
33273 @item --help
33274 Display a quick summary of how to invoke @file{configure}.
33275
33276 @item --prefix=@var{dir}
33277 Configure the source to install programs and files under directory
33278 @file{@var{dir}}.
33279
33280 @item --exec-prefix=@var{dir}
33281 Configure the source to install programs under directory
33282 @file{@var{dir}}.
33283
33284 @c avoid splitting the warning from the explanation:
33285 @need 2000
33286 @item --srcdir=@var{dirname}
33287 @strong{Warning: using this option requires @sc{gnu} @code{make}, or another
33288 @code{make} that implements the @code{VPATH} feature.}@*
33289 Use this option to make configurations in directories separate from the
33290 @value{GDBN} source directories. Among other things, you can use this to
33291 build (or maintain) several configurations simultaneously, in separate
33292 directories. @file{configure} writes configuration-specific files in
33293 the current directory, but arranges for them to use the source in the
33294 directory @var{dirname}. @file{configure} creates directories under
33295 the working directory in parallel to the source directories below
33296 @var{dirname}.
33297
33298 @item --norecursion
33299 Configure only the directory level where @file{configure} is executed; do not
33300 propagate configuration to subdirectories.
33301
33302 @item --target=@var{target}
33303 Configure @value{GDBN} for cross-debugging programs running on the specified
33304 @var{target}. Without this option, @value{GDBN} is configured to debug
33305 programs that run on the same machine (@var{host}) as @value{GDBN} itself.
33306
33307 There is no convenient way to generate a list of all available targets.
33308
33309 @item @var{host} @dots{}
33310 Configure @value{GDBN} to run on the specified @var{host}.
33311
33312 There is no convenient way to generate a list of all available hosts.
33313 @end table
33314
33315 There are many other options available as well, but they are generally
33316 needed for special purposes only.
33317
33318 @node System-wide configuration
33319 @section System-wide configuration and settings
33320 @cindex system-wide init file
33321
33322 @value{GDBN} can be configured to have a system-wide init file;
33323 this file will be read and executed at startup (@pxref{Startup, , What
33324 @value{GDBN} does during startup}).
33325
33326 Here is the corresponding configure option:
33327
33328 @table @code
33329 @item --with-system-gdbinit=@var{file}
33330 Specify that the default location of the system-wide init file is
33331 @var{file}.
33332 @end table
33333
33334 If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
33335 it may be subject to relocation. Two possible cases:
33336
33337 @itemize @bullet
33338 @item
33339 If the default location of this init file contains @file{$prefix},
33340 it will be subject to relocation. Suppose that the configure options
33341 are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
33342 if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
33343 init file is looked for as @file{$install/etc/gdbinit} instead of
33344 @file{$prefix/etc/gdbinit}.
33345
33346 @item
33347 By contrast, if the default location does not contain the prefix,
33348 it will not be relocated. E.g.@: if @value{GDBN} has been configured with
33349 @option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
33350 then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
33351 wherever @value{GDBN} is installed.
33352 @end itemize
33353
33354 @node Maintenance Commands
33355 @appendix Maintenance Commands
33356 @cindex maintenance commands
33357 @cindex internal commands
33358
33359 In addition to commands intended for @value{GDBN} users, @value{GDBN}
33360 includes a number of commands intended for @value{GDBN} developers,
33361 that are not documented elsewhere in this manual. These commands are
33362 provided here for reference. (For commands that turn on debugging
33363 messages, see @ref{Debugging Output}.)
33364
33365 @table @code
33366 @kindex maint agent
33367 @kindex maint agent-eval
33368 @item maint agent @var{expression}
33369 @itemx maint agent-eval @var{expression}
33370 Translate the given @var{expression} into remote agent bytecodes.
33371 This command is useful for debugging the Agent Expression mechanism
33372 (@pxref{Agent Expressions}). The @samp{agent} version produces an
33373 expression useful for data collection, such as by tracepoints, while
33374 @samp{maint agent-eval} produces an expression that evaluates directly
33375 to a result. For instance, a collection expression for @code{globa +
33376 globb} will include bytecodes to record four bytes of memory at each
33377 of the addresses of @code{globa} and @code{globb}, while discarding
33378 the result of the addition, while an evaluation expression will do the
33379 addition and return the sum.
33380
33381 @kindex maint info breakpoints
33382 @item @anchor{maint info breakpoints}maint info breakpoints
33383 Using the same format as @samp{info breakpoints}, display both the
33384 breakpoints you've set explicitly, and those @value{GDBN} is using for
33385 internal purposes. Internal breakpoints are shown with negative
33386 breakpoint numbers. The type column identifies what kind of breakpoint
33387 is shown:
33388
33389 @table @code
33390 @item breakpoint
33391 Normal, explicitly set breakpoint.
33392
33393 @item watchpoint
33394 Normal, explicitly set watchpoint.
33395
33396 @item longjmp
33397 Internal breakpoint, used to handle correctly stepping through
33398 @code{longjmp} calls.
33399
33400 @item longjmp resume
33401 Internal breakpoint at the target of a @code{longjmp}.
33402
33403 @item until
33404 Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
33405
33406 @item finish
33407 Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
33408
33409 @item shlib events
33410 Shared library events.
33411
33412 @end table
33413
33414 @kindex set displaced-stepping
33415 @kindex show displaced-stepping
33416 @cindex displaced stepping support
33417 @cindex out-of-line single-stepping
33418 @item set displaced-stepping
33419 @itemx show displaced-stepping
33420 Control whether or not @value{GDBN} will do @dfn{displaced stepping}
33421 if the target supports it. Displaced stepping is a way to single-step
33422 over breakpoints without removing them from the inferior, by executing
33423 an out-of-line copy of the instruction that was originally at the
33424 breakpoint location. It is also known as out-of-line single-stepping.
33425
33426 @table @code
33427 @item set displaced-stepping on
33428 If the target architecture supports it, @value{GDBN} will use
33429 displaced stepping to step over breakpoints.
33430
33431 @item set displaced-stepping off
33432 @value{GDBN} will not use displaced stepping to step over breakpoints,
33433 even if such is supported by the target architecture.
33434
33435 @cindex non-stop mode, and @samp{set displaced-stepping}
33436 @item set displaced-stepping auto
33437 This is the default mode. @value{GDBN} will use displaced stepping
33438 only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
33439 architecture supports displaced stepping.
33440 @end table
33441
33442 @kindex maint check-symtabs
33443 @item maint check-symtabs
33444 Check the consistency of psymtabs and symtabs.
33445
33446 @kindex maint cplus first_component
33447 @item maint cplus first_component @var{name}
33448 Print the first C@t{++} class/namespace component of @var{name}.
33449
33450 @kindex maint cplus namespace
33451 @item maint cplus namespace
33452 Print the list of possible C@t{++} namespaces.
33453
33454 @kindex maint demangle
33455 @item maint demangle @var{name}
33456 Demangle a C@t{++} or Objective-C mangled @var{name}.
33457
33458 @kindex maint deprecate
33459 @kindex maint undeprecate
33460 @cindex deprecated commands
33461 @item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
33462 @itemx maint undeprecate @var{command}
33463 Deprecate or undeprecate the named @var{command}. Deprecated commands
33464 cause @value{GDBN} to issue a warning when you use them. The optional
33465 argument @var{replacement} says which newer command should be used in
33466 favor of the deprecated one; if it is given, @value{GDBN} will mention
33467 the replacement as part of the warning.
33468
33469 @kindex maint dump-me
33470 @item maint dump-me
33471 @cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
33472 Cause a fatal signal in the debugger and force it to dump its core.
33473 This is supported only on systems which support aborting a program
33474 with the @code{SIGQUIT} signal.
33475
33476 @kindex maint internal-error
33477 @kindex maint internal-warning
33478 @item maint internal-error @r{[}@var{message-text}@r{]}
33479 @itemx maint internal-warning @r{[}@var{message-text}@r{]}
33480 Cause @value{GDBN} to call the internal function @code{internal_error}
33481 or @code{internal_warning} and hence behave as though an internal error
33482 or internal warning has been detected. In addition to reporting the
33483 internal problem, these functions give the user the opportunity to
33484 either quit @value{GDBN} or create a core file of the current
33485 @value{GDBN} session.
33486
33487 These commands take an optional parameter @var{message-text} that is
33488 used as the text of the error or warning message.
33489
33490 Here's an example of using @code{internal-error}:
33491
33492 @smallexample
33493 (@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
33494 @dots{}/maint.c:121: internal-error: testing, 1, 2
33495 A problem internal to GDB has been detected. Further
33496 debugging may prove unreliable.
33497 Quit this debugging session? (y or n) @kbd{n}
33498 Create a core file? (y or n) @kbd{n}
33499 (@value{GDBP})
33500 @end smallexample
33501
33502 @cindex @value{GDBN} internal error
33503 @cindex internal errors, control of @value{GDBN} behavior
33504
33505 @kindex maint set internal-error
33506 @kindex maint show internal-error
33507 @kindex maint set internal-warning
33508 @kindex maint show internal-warning
33509 @item maint set internal-error @var{action} [ask|yes|no]
33510 @itemx maint show internal-error @var{action}
33511 @itemx maint set internal-warning @var{action} [ask|yes|no]
33512 @itemx maint show internal-warning @var{action}
33513 When @value{GDBN} reports an internal problem (error or warning) it
33514 gives the user the opportunity to both quit @value{GDBN} and create a
33515 core file of the current @value{GDBN} session. These commands let you
33516 override the default behaviour for each particular @var{action},
33517 described in the table below.
33518
33519 @table @samp
33520 @item quit
33521 You can specify that @value{GDBN} should always (yes) or never (no)
33522 quit. The default is to ask the user what to do.
33523
33524 @item corefile
33525 You can specify that @value{GDBN} should always (yes) or never (no)
33526 create a core file. The default is to ask the user what to do.
33527 @end table
33528
33529 @kindex maint packet
33530 @item maint packet @var{text}
33531 If @value{GDBN} is talking to an inferior via the serial protocol,
33532 then this command sends the string @var{text} to the inferior, and
33533 displays the response packet. @value{GDBN} supplies the initial
33534 @samp{$} character, the terminating @samp{#} character, and the
33535 checksum.
33536
33537 @kindex maint print architecture
33538 @item maint print architecture @r{[}@var{file}@r{]}
33539 Print the entire architecture configuration. The optional argument
33540 @var{file} names the file where the output goes.
33541
33542 @kindex maint print c-tdesc
33543 @item maint print c-tdesc
33544 Print the current target description (@pxref{Target Descriptions}) as
33545 a C source file. The created source file can be used in @value{GDBN}
33546 when an XML parser is not available to parse the description.
33547
33548 @kindex maint print dummy-frames
33549 @item maint print dummy-frames
33550 Prints the contents of @value{GDBN}'s internal dummy-frame stack.
33551
33552 @smallexample
33553 (@value{GDBP}) @kbd{b add}
33554 @dots{}
33555 (@value{GDBP}) @kbd{print add(2,3)}
33556 Breakpoint 2, add (a=2, b=3) at @dots{}
33557 58 return (a + b);
33558 The program being debugged stopped while in a function called from GDB.
33559 @dots{}
33560 (@value{GDBP}) @kbd{maint print dummy-frames}
33561 0x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
33562 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
33563 call_lo=0x01014000 call_hi=0x01014001
33564 (@value{GDBP})
33565 @end smallexample
33566
33567 Takes an optional file parameter.
33568
33569 @kindex maint print registers
33570 @kindex maint print raw-registers
33571 @kindex maint print cooked-registers
33572 @kindex maint print register-groups
33573 @kindex maint print remote-registers
33574 @item maint print registers @r{[}@var{file}@r{]}
33575 @itemx maint print raw-registers @r{[}@var{file}@r{]}
33576 @itemx maint print cooked-registers @r{[}@var{file}@r{]}
33577 @itemx maint print register-groups @r{[}@var{file}@r{]}
33578 @itemx maint print remote-registers @r{[}@var{file}@r{]}
33579 Print @value{GDBN}'s internal register data structures.
33580
33581 The command @code{maint print raw-registers} includes the contents of
33582 the raw register cache; the command @code{maint print
33583 cooked-registers} includes the (cooked) value of all registers,
33584 including registers which aren't available on the target nor visible
33585 to user; the command @code{maint print register-groups} includes the
33586 groups that each register is a member of; and the command @code{maint
33587 print remote-registers} includes the remote target's register numbers
33588 and offsets in the `G' packets. @xref{Registers,, Registers, gdbint,
33589 @value{GDBN} Internals}.
33590
33591 These commands take an optional parameter, a file name to which to
33592 write the information.
33593
33594 @kindex maint print reggroups
33595 @item maint print reggroups @r{[}@var{file}@r{]}
33596 Print @value{GDBN}'s internal register group data structures. The
33597 optional argument @var{file} tells to what file to write the
33598 information.
33599
33600 The register groups info looks like this:
33601
33602 @smallexample
33603 (@value{GDBP}) @kbd{maint print reggroups}
33604 Group Type
33605 general user
33606 float user
33607 all user
33608 vector user
33609 system user
33610 save internal
33611 restore internal
33612 @end smallexample
33613
33614 @kindex flushregs
33615 @item flushregs
33616 This command forces @value{GDBN} to flush its internal register cache.
33617
33618 @kindex maint print objfiles
33619 @cindex info for known object files
33620 @item maint print objfiles
33621 Print a dump of all known object files. For each object file, this
33622 command prints its name, address in memory, and all of its psymtabs
33623 and symtabs.
33624
33625 @kindex maint print section-scripts
33626 @cindex info for known .debug_gdb_scripts-loaded scripts
33627 @item maint print section-scripts [@var{regexp}]
33628 Print a dump of scripts specified in the @code{.debug_gdb_section} section.
33629 If @var{regexp} is specified, only print scripts loaded by object files
33630 matching @var{regexp}.
33631 For each script, this command prints its name as specified in the objfile,
33632 and the full path if known.
33633 @xref{dotdebug_gdb_scripts section}.
33634
33635 @kindex maint print statistics
33636 @cindex bcache statistics
33637 @item maint print statistics
33638 This command prints, for each object file in the program, various data
33639 about that object file followed by the byte cache (@dfn{bcache})
33640 statistics for the object file. The objfile data includes the number
33641 of minimal, partial, full, and stabs symbols, the number of types
33642 defined by the objfile, the number of as yet unexpanded psym tables,
33643 the number of line tables and string tables, and the amount of memory
33644 used by the various tables. The bcache statistics include the counts,
33645 sizes, and counts of duplicates of all and unique objects, max,
33646 average, and median entry size, total memory used and its overhead and
33647 savings, and various measures of the hash table size and chain
33648 lengths.
33649
33650 @kindex maint print target-stack
33651 @cindex target stack description
33652 @item maint print target-stack
33653 A @dfn{target} is an interface between the debugger and a particular
33654 kind of file or process. Targets can be stacked in @dfn{strata},
33655 so that more than one target can potentially respond to a request.
33656 In particular, memory accesses will walk down the stack of targets
33657 until they find a target that is interested in handling that particular
33658 address.
33659
33660 This command prints a short description of each layer that was pushed on
33661 the @dfn{target stack}, starting from the top layer down to the bottom one.
33662
33663 @kindex maint print type
33664 @cindex type chain of a data type
33665 @item maint print type @var{expr}
33666 Print the type chain for a type specified by @var{expr}. The argument
33667 can be either a type name or a symbol. If it is a symbol, the type of
33668 that symbol is described. The type chain produced by this command is
33669 a recursive definition of the data type as stored in @value{GDBN}'s
33670 data structures, including its flags and contained types.
33671
33672 @kindex maint set dwarf2 always-disassemble
33673 @kindex maint show dwarf2 always-disassemble
33674 @item maint set dwarf2 always-disassemble
33675 @item maint show dwarf2 always-disassemble
33676 Control the behavior of @code{info address} when using DWARF debugging
33677 information.
33678
33679 The default is @code{off}, which means that @value{GDBN} should try to
33680 describe a variable's location in an easily readable format. When
33681 @code{on}, @value{GDBN} will instead display the DWARF location
33682 expression in an assembly-like format. Note that some locations are
33683 too complex for @value{GDBN} to describe simply; in this case you will
33684 always see the disassembly form.
33685
33686 Here is an example of the resulting disassembly:
33687
33688 @smallexample
33689 (gdb) info addr argc
33690 Symbol "argc" is a complex DWARF expression:
33691 1: DW_OP_fbreg 0
33692 @end smallexample
33693
33694 For more information on these expressions, see
33695 @uref{http://www.dwarfstd.org/, the DWARF standard}.
33696
33697 @kindex maint set dwarf2 max-cache-age
33698 @kindex maint show dwarf2 max-cache-age
33699 @item maint set dwarf2 max-cache-age
33700 @itemx maint show dwarf2 max-cache-age
33701 Control the DWARF 2 compilation unit cache.
33702
33703 @cindex DWARF 2 compilation units cache
33704 In object files with inter-compilation-unit references, such as those
33705 produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
33706 reader needs to frequently refer to previously read compilation units.
33707 This setting controls how long a compilation unit will remain in the
33708 cache if it is not referenced. A higher limit means that cached
33709 compilation units will be stored in memory longer, and more total
33710 memory will be used. Setting it to zero disables caching, which will
33711 slow down @value{GDBN} startup, but reduce memory consumption.
33712
33713 @kindex maint set profile
33714 @kindex maint show profile
33715 @cindex profiling GDB
33716 @item maint set profile
33717 @itemx maint show profile
33718 Control profiling of @value{GDBN}.
33719
33720 Profiling will be disabled until you use the @samp{maint set profile}
33721 command to enable it. When you enable profiling, the system will begin
33722 collecting timing and execution count data; when you disable profiling or
33723 exit @value{GDBN}, the results will be written to a log file. Remember that
33724 if you use profiling, @value{GDBN} will overwrite the profiling log file
33725 (often called @file{gmon.out}). If you have a record of important profiling
33726 data in a @file{gmon.out} file, be sure to move it to a safe location.
33727
33728 Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
33729 compiled with the @samp{-pg} compiler option.
33730
33731 @kindex maint set show-debug-regs
33732 @kindex maint show show-debug-regs
33733 @cindex hardware debug registers
33734 @item maint set show-debug-regs
33735 @itemx maint show show-debug-regs
33736 Control whether to show variables that mirror the hardware debug
33737 registers. Use @code{ON} to enable, @code{OFF} to disable. If
33738 enabled, the debug registers values are shown when @value{GDBN} inserts or
33739 removes a hardware breakpoint or watchpoint, and when the inferior
33740 triggers a hardware-assisted breakpoint or watchpoint.
33741
33742 @kindex maint set show-all-tib
33743 @kindex maint show show-all-tib
33744 @item maint set show-all-tib
33745 @itemx maint show show-all-tib
33746 Control whether to show all non zero areas within a 1k block starting
33747 at thread local base, when using the @samp{info w32 thread-information-block}
33748 command.
33749
33750 @kindex maint space
33751 @cindex memory used by commands
33752 @item maint space
33753 Control whether to display memory usage for each command. If set to a
33754 nonzero value, @value{GDBN} will display how much memory each command
33755 took, following the command's own output. This can also be requested
33756 by invoking @value{GDBN} with the @option{--statistics} command-line
33757 switch (@pxref{Mode Options}).
33758
33759 @kindex maint time
33760 @cindex time of command execution
33761 @item maint time
33762 Control whether to display the execution time of @value{GDBN} for each command.
33763 If set to a nonzero value, @value{GDBN} will display how much time it
33764 took to execute each command, following the command's own output.
33765 Both CPU time and wallclock time are printed.
33766 Printing both is useful when trying to determine whether the cost is
33767 CPU or, e.g., disk/network, latency.
33768 Note that the CPU time printed is for @value{GDBN} only, it does not include
33769 the execution time of the inferior because there's no mechanism currently
33770 to compute how much time was spent by @value{GDBN} and how much time was
33771 spent by the program been debugged.
33772 This can also be requested by invoking @value{GDBN} with the
33773 @option{--statistics} command-line switch (@pxref{Mode Options}).
33774
33775 @kindex maint translate-address
33776 @item maint translate-address @r{[}@var{section}@r{]} @var{addr}
33777 Find the symbol stored at the location specified by the address
33778 @var{addr} and an optional section name @var{section}. If found,
33779 @value{GDBN} prints the name of the closest symbol and an offset from
33780 the symbol's location to the specified address. This is similar to
33781 the @code{info address} command (@pxref{Symbols}), except that this
33782 command also allows to find symbols in other sections.
33783
33784 If section was not specified, the section in which the symbol was found
33785 is also printed. For dynamically linked executables, the name of
33786 executable or shared library containing the symbol is printed as well.
33787
33788 @end table
33789
33790 The following command is useful for non-interactive invocations of
33791 @value{GDBN}, such as in the test suite.
33792
33793 @table @code
33794 @item set watchdog @var{nsec}
33795 @kindex set watchdog
33796 @cindex watchdog timer
33797 @cindex timeout for commands
33798 Set the maximum number of seconds @value{GDBN} will wait for the
33799 target operation to finish. If this time expires, @value{GDBN}
33800 reports and error and the command is aborted.
33801
33802 @item show watchdog
33803 Show the current setting of the target wait timeout.
33804 @end table
33805
33806 @node Remote Protocol
33807 @appendix @value{GDBN} Remote Serial Protocol
33808
33809 @menu
33810 * Overview::
33811 * Packets::
33812 * Stop Reply Packets::
33813 * General Query Packets::
33814 * Architecture-Specific Protocol Details::
33815 * Tracepoint Packets::
33816 * Host I/O Packets::
33817 * Interrupts::
33818 * Notification Packets::
33819 * Remote Non-Stop::
33820 * Packet Acknowledgment::
33821 * Examples::
33822 * File-I/O Remote Protocol Extension::
33823 * Library List Format::
33824 * Library List Format for SVR4 Targets::
33825 * Memory Map Format::
33826 * Thread List Format::
33827 * Traceframe Info Format::
33828 @end menu
33829
33830 @node Overview
33831 @section Overview
33832
33833 There may be occasions when you need to know something about the
33834 protocol---for example, if there is only one serial port to your target
33835 machine, you might want your program to do something special if it
33836 recognizes a packet meant for @value{GDBN}.
33837
33838 In the examples below, @samp{->} and @samp{<-} are used to indicate
33839 transmitted and received data, respectively.
33840
33841 @cindex protocol, @value{GDBN} remote serial
33842 @cindex serial protocol, @value{GDBN} remote
33843 @cindex remote serial protocol
33844 All @value{GDBN} commands and responses (other than acknowledgments
33845 and notifications, see @ref{Notification Packets}) are sent as a
33846 @var{packet}. A @var{packet} is introduced with the character
33847 @samp{$}, the actual @var{packet-data}, and the terminating character
33848 @samp{#} followed by a two-digit @var{checksum}:
33849
33850 @smallexample
33851 @code{$}@var{packet-data}@code{#}@var{checksum}
33852 @end smallexample
33853 @noindent
33854
33855 @cindex checksum, for @value{GDBN} remote
33856 @noindent
33857 The two-digit @var{checksum} is computed as the modulo 256 sum of all
33858 characters between the leading @samp{$} and the trailing @samp{#} (an
33859 eight bit unsigned checksum).
33860
33861 Implementors should note that prior to @value{GDBN} 5.0 the protocol
33862 specification also included an optional two-digit @var{sequence-id}:
33863
33864 @smallexample
33865 @code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
33866 @end smallexample
33867
33868 @cindex sequence-id, for @value{GDBN} remote
33869 @noindent
33870 That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
33871 has never output @var{sequence-id}s. Stubs that handle packets added
33872 since @value{GDBN} 5.0 must not accept @var{sequence-id}.
33873
33874 When either the host or the target machine receives a packet, the first
33875 response expected is an acknowledgment: either @samp{+} (to indicate
33876 the package was received correctly) or @samp{-} (to request
33877 retransmission):
33878
33879 @smallexample
33880 -> @code{$}@var{packet-data}@code{#}@var{checksum}
33881 <- @code{+}
33882 @end smallexample
33883 @noindent
33884
33885 The @samp{+}/@samp{-} acknowledgments can be disabled
33886 once a connection is established.
33887 @xref{Packet Acknowledgment}, for details.
33888
33889 The host (@value{GDBN}) sends @var{command}s, and the target (the
33890 debugging stub incorporated in your program) sends a @var{response}. In
33891 the case of step and continue @var{command}s, the response is only sent
33892 when the operation has completed, and the target has again stopped all
33893 threads in all attached processes. This is the default all-stop mode
33894 behavior, but the remote protocol also supports @value{GDBN}'s non-stop
33895 execution mode; see @ref{Remote Non-Stop}, for details.
33896
33897 @var{packet-data} consists of a sequence of characters with the
33898 exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
33899 exceptions).
33900
33901 @cindex remote protocol, field separator
33902 Fields within the packet should be separated using @samp{,} @samp{;} or
33903 @samp{:}. Except where otherwise noted all numbers are represented in
33904 @sc{hex} with leading zeros suppressed.
33905
33906 Implementors should note that prior to @value{GDBN} 5.0, the character
33907 @samp{:} could not appear as the third character in a packet (as it
33908 would potentially conflict with the @var{sequence-id}).
33909
33910 @cindex remote protocol, binary data
33911 @anchor{Binary Data}
33912 Binary data in most packets is encoded either as two hexadecimal
33913 digits per byte of binary data. This allowed the traditional remote
33914 protocol to work over connections which were only seven-bit clean.
33915 Some packets designed more recently assume an eight-bit clean
33916 connection, and use a more efficient encoding to send and receive
33917 binary data.
33918
33919 The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
33920 as an escape character. Any escaped byte is transmitted as the escape
33921 character followed by the original character XORed with @code{0x20}.
33922 For example, the byte @code{0x7d} would be transmitted as the two
33923 bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
33924 @code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
33925 @samp{@}}) must always be escaped. Responses sent by the stub
33926 must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
33927 is not interpreted as the start of a run-length encoded sequence
33928 (described next).
33929
33930 Response @var{data} can be run-length encoded to save space.
33931 Run-length encoding replaces runs of identical characters with one
33932 instance of the repeated character, followed by a @samp{*} and a
33933 repeat count. The repeat count is itself sent encoded, to avoid
33934 binary characters in @var{data}: a value of @var{n} is sent as
33935 @code{@var{n}+29}. For a repeat count greater or equal to 3, this
33936 produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
33937 code 32) for a repeat count of 3. (This is because run-length
33938 encoding starts to win for counts 3 or more.) Thus, for example,
33939 @samp{0* } is a run-length encoding of ``0000'': the space character
33940 after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
33941 3}} more times.
33942
33943 The printable characters @samp{#} and @samp{$} or with a numeric value
33944 greater than 126 must not be used. Runs of six repeats (@samp{#}) or
33945 seven repeats (@samp{$}) can be expanded using a repeat count of only
33946 five (@samp{"}). For example, @samp{00000000} can be encoded as
33947 @samp{0*"00}.
33948
33949 The error response returned for some packets includes a two character
33950 error number. That number is not well defined.
33951
33952 @cindex empty response, for unsupported packets
33953 For any @var{command} not supported by the stub, an empty response
33954 (@samp{$#00}) should be returned. That way it is possible to extend the
33955 protocol. A newer @value{GDBN} can tell if a packet is supported based
33956 on that response.
33957
33958 At a minimum, a stub is required to support the @samp{g} and @samp{G}
33959 commands for register access, and the @samp{m} and @samp{M} commands
33960 for memory access. Stubs that only control single-threaded targets
33961 can implement run control with the @samp{c} (continue), and @samp{s}
33962 (step) commands. Stubs that support multi-threading targets should
33963 support the @samp{vCont} command. All other commands are optional.
33964
33965 @node Packets
33966 @section Packets
33967
33968 The following table provides a complete list of all currently defined
33969 @var{command}s and their corresponding response @var{data}.
33970 @xref{File-I/O Remote Protocol Extension}, for details about the File
33971 I/O extension of the remote protocol.
33972
33973 Each packet's description has a template showing the packet's overall
33974 syntax, followed by an explanation of the packet's meaning. We
33975 include spaces in some of the templates for clarity; these are not
33976 part of the packet's syntax. No @value{GDBN} packet uses spaces to
33977 separate its components. For example, a template like @samp{foo
33978 @var{bar} @var{baz}} describes a packet beginning with the three ASCII
33979 bytes @samp{foo}, followed by a @var{bar}, followed directly by a
33980 @var{baz}. @value{GDBN} does not transmit a space character between the
33981 @samp{foo} and the @var{bar}, or between the @var{bar} and the
33982 @var{baz}.
33983
33984 @cindex @var{thread-id}, in remote protocol
33985 @anchor{thread-id syntax}
33986 Several packets and replies include a @var{thread-id} field to identify
33987 a thread. Normally these are positive numbers with a target-specific
33988 interpretation, formatted as big-endian hex strings. A @var{thread-id}
33989 can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
33990 pick any thread.
33991
33992 In addition, the remote protocol supports a multiprocess feature in
33993 which the @var{thread-id} syntax is extended to optionally include both
33994 process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
33995 The @var{pid} (process) and @var{tid} (thread) components each have the
33996 format described above: a positive number with target-specific
33997 interpretation formatted as a big-endian hex string, literal @samp{-1}
33998 to indicate all processes or threads (respectively), or @samp{0} to
33999 indicate an arbitrary process or thread. Specifying just a process, as
34000 @samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
34001 error to specify all processes but a specific thread, such as
34002 @samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
34003 for those packets and replies explicitly documented to include a process
34004 ID, rather than a @var{thread-id}.
34005
34006 The multiprocess @var{thread-id} syntax extensions are only used if both
34007 @value{GDBN} and the stub report support for the @samp{multiprocess}
34008 feature using @samp{qSupported}. @xref{multiprocess extensions}, for
34009 more information.
34010
34011 Note that all packet forms beginning with an upper- or lower-case
34012 letter, other than those described here, are reserved for future use.
34013
34014 Here are the packet descriptions.
34015
34016 @table @samp
34017
34018 @item !
34019 @cindex @samp{!} packet
34020 @anchor{extended mode}
34021 Enable extended mode. In extended mode, the remote server is made
34022 persistent. The @samp{R} packet is used to restart the program being
34023 debugged.
34024
34025 Reply:
34026 @table @samp
34027 @item OK
34028 The remote target both supports and has enabled extended mode.
34029 @end table
34030
34031 @item ?
34032 @cindex @samp{?} packet
34033 Indicate the reason the target halted. The reply is the same as for
34034 step and continue. This packet has a special interpretation when the
34035 target is in non-stop mode; see @ref{Remote Non-Stop}.
34036
34037 Reply:
34038 @xref{Stop Reply Packets}, for the reply specifications.
34039
34040 @item A @var{arglen},@var{argnum},@var{arg},@dots{}
34041 @cindex @samp{A} packet
34042 Initialized @code{argv[]} array passed into program. @var{arglen}
34043 specifies the number of bytes in the hex encoded byte stream
34044 @var{arg}. See @code{gdbserver} for more details.
34045
34046 Reply:
34047 @table @samp
34048 @item OK
34049 The arguments were set.
34050 @item E @var{NN}
34051 An error occurred.
34052 @end table
34053
34054 @item b @var{baud}
34055 @cindex @samp{b} packet
34056 (Don't use this packet; its behavior is not well-defined.)
34057 Change the serial line speed to @var{baud}.
34058
34059 JTC: @emph{When does the transport layer state change? When it's
34060 received, or after the ACK is transmitted. In either case, there are
34061 problems if the command or the acknowledgment packet is dropped.}
34062
34063 Stan: @emph{If people really wanted to add something like this, and get
34064 it working for the first time, they ought to modify ser-unix.c to send
34065 some kind of out-of-band message to a specially-setup stub and have the
34066 switch happen "in between" packets, so that from remote protocol's point
34067 of view, nothing actually happened.}
34068
34069 @item B @var{addr},@var{mode}
34070 @cindex @samp{B} packet
34071 Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
34072 breakpoint at @var{addr}.
34073
34074 Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
34075 (@pxref{insert breakpoint or watchpoint packet}).
34076
34077 @cindex @samp{bc} packet
34078 @anchor{bc}
34079 @item bc
34080 Backward continue. Execute the target system in reverse. No parameter.
34081 @xref{Reverse Execution}, for more information.
34082
34083 Reply:
34084 @xref{Stop Reply Packets}, for the reply specifications.
34085
34086 @cindex @samp{bs} packet
34087 @anchor{bs}
34088 @item bs
34089 Backward single step. Execute one instruction in reverse. No parameter.
34090 @xref{Reverse Execution}, for more information.
34091
34092 Reply:
34093 @xref{Stop Reply Packets}, for the reply specifications.
34094
34095 @item c @r{[}@var{addr}@r{]}
34096 @cindex @samp{c} packet
34097 Continue. @var{addr} is address to resume. If @var{addr} is omitted,
34098 resume at current address.
34099
34100 This packet is deprecated for multi-threading support. @xref{vCont
34101 packet}.
34102
34103 Reply:
34104 @xref{Stop Reply Packets}, for the reply specifications.
34105
34106 @item C @var{sig}@r{[};@var{addr}@r{]}
34107 @cindex @samp{C} packet
34108 Continue with signal @var{sig} (hex signal number). If
34109 @samp{;@var{addr}} is omitted, resume at same address.
34110
34111 This packet is deprecated for multi-threading support. @xref{vCont
34112 packet}.
34113
34114 Reply:
34115 @xref{Stop Reply Packets}, for the reply specifications.
34116
34117 @item d
34118 @cindex @samp{d} packet
34119 Toggle debug flag.
34120
34121 Don't use this packet; instead, define a general set packet
34122 (@pxref{General Query Packets}).
34123
34124 @item D
34125 @itemx D;@var{pid}
34126 @cindex @samp{D} packet
34127 The first form of the packet is used to detach @value{GDBN} from the
34128 remote system. It is sent to the remote target
34129 before @value{GDBN} disconnects via the @code{detach} command.
34130
34131 The second form, including a process ID, is used when multiprocess
34132 protocol extensions are enabled (@pxref{multiprocess extensions}), to
34133 detach only a specific process. The @var{pid} is specified as a
34134 big-endian hex string.
34135
34136 Reply:
34137 @table @samp
34138 @item OK
34139 for success
34140 @item E @var{NN}
34141 for an error
34142 @end table
34143
34144 @item F @var{RC},@var{EE},@var{CF};@var{XX}
34145 @cindex @samp{F} packet
34146 A reply from @value{GDBN} to an @samp{F} packet sent by the target.
34147 This is part of the File-I/O protocol extension. @xref{File-I/O
34148 Remote Protocol Extension}, for the specification.
34149
34150 @item g
34151 @anchor{read registers packet}
34152 @cindex @samp{g} packet
34153 Read general registers.
34154
34155 Reply:
34156 @table @samp
34157 @item @var{XX@dots{}}
34158 Each byte of register data is described by two hex digits. The bytes
34159 with the register are transmitted in target byte order. The size of
34160 each register and their position within the @samp{g} packet are
34161 determined by the @value{GDBN} internal gdbarch functions
34162 @code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
34163 specification of several standard @samp{g} packets is specified below.
34164
34165 When reading registers from a trace frame (@pxref{Analyze Collected
34166 Data,,Using the Collected Data}), the stub may also return a string of
34167 literal @samp{x}'s in place of the register data digits, to indicate
34168 that the corresponding register has not been collected, thus its value
34169 is unavailable. For example, for an architecture with 4 registers of
34170 4 bytes each, the following reply indicates to @value{GDBN} that
34171 registers 0 and 2 have not been collected, while registers 1 and 3
34172 have been collected, and both have zero value:
34173
34174 @smallexample
34175 -> @code{g}
34176 <- @code{xxxxxxxx00000000xxxxxxxx00000000}
34177 @end smallexample
34178
34179 @item E @var{NN}
34180 for an error.
34181 @end table
34182
34183 @item G @var{XX@dots{}}
34184 @cindex @samp{G} packet
34185 Write general registers. @xref{read registers packet}, for a
34186 description of the @var{XX@dots{}} data.
34187
34188 Reply:
34189 @table @samp
34190 @item OK
34191 for success
34192 @item E @var{NN}
34193 for an error
34194 @end table
34195
34196 @item H @var{op} @var{thread-id}
34197 @cindex @samp{H} packet
34198 Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
34199 @samp{G}, et.al.). @var{op} depends on the operation to be performed:
34200 it should be @samp{c} for step and continue operations (note that this
34201 is deprecated, supporting the @samp{vCont} command is a better
34202 option), @samp{g} for other operations. The thread designator
34203 @var{thread-id} has the format and interpretation described in
34204 @ref{thread-id syntax}.
34205
34206 Reply:
34207 @table @samp
34208 @item OK
34209 for success
34210 @item E @var{NN}
34211 for an error
34212 @end table
34213
34214 @c FIXME: JTC:
34215 @c 'H': How restrictive (or permissive) is the thread model. If a
34216 @c thread is selected and stopped, are other threads allowed
34217 @c to continue to execute? As I mentioned above, I think the
34218 @c semantics of each command when a thread is selected must be
34219 @c described. For example:
34220 @c
34221 @c 'g': If the stub supports threads and a specific thread is
34222 @c selected, returns the register block from that thread;
34223 @c otherwise returns current registers.
34224 @c
34225 @c 'G' If the stub supports threads and a specific thread is
34226 @c selected, sets the registers of the register block of
34227 @c that thread; otherwise sets current registers.
34228
34229 @item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
34230 @anchor{cycle step packet}
34231 @cindex @samp{i} packet
34232 Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
34233 present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
34234 step starting at that address.
34235
34236 @item I
34237 @cindex @samp{I} packet
34238 Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
34239 step packet}.
34240
34241 @item k
34242 @cindex @samp{k} packet
34243 Kill request.
34244
34245 FIXME: @emph{There is no description of how to operate when a specific
34246 thread context has been selected (i.e.@: does 'k' kill only that
34247 thread?)}.
34248
34249 @item m @var{addr},@var{length}
34250 @cindex @samp{m} packet
34251 Read @var{length} bytes of memory starting at address @var{addr}.
34252 Note that @var{addr} may not be aligned to any particular boundary.
34253
34254 The stub need not use any particular size or alignment when gathering
34255 data from memory for the response; even if @var{addr} is word-aligned
34256 and @var{length} is a multiple of the word size, the stub is free to
34257 use byte accesses, or not. For this reason, this packet may not be
34258 suitable for accessing memory-mapped I/O devices.
34259 @cindex alignment of remote memory accesses
34260 @cindex size of remote memory accesses
34261 @cindex memory, alignment and size of remote accesses
34262
34263 Reply:
34264 @table @samp
34265 @item @var{XX@dots{}}
34266 Memory contents; each byte is transmitted as a two-digit hexadecimal
34267 number. The reply may contain fewer bytes than requested if the
34268 server was able to read only part of the region of memory.
34269 @item E @var{NN}
34270 @var{NN} is errno
34271 @end table
34272
34273 @item M @var{addr},@var{length}:@var{XX@dots{}}
34274 @cindex @samp{M} packet
34275 Write @var{length} bytes of memory starting at address @var{addr}.
34276 @var{XX@dots{}} is the data; each byte is transmitted as a two-digit
34277 hexadecimal number.
34278
34279 Reply:
34280 @table @samp
34281 @item OK
34282 for success
34283 @item E @var{NN}
34284 for an error (this includes the case where only part of the data was
34285 written).
34286 @end table
34287
34288 @item p @var{n}
34289 @cindex @samp{p} packet
34290 Read the value of register @var{n}; @var{n} is in hex.
34291 @xref{read registers packet}, for a description of how the returned
34292 register value is encoded.
34293
34294 Reply:
34295 @table @samp
34296 @item @var{XX@dots{}}
34297 the register's value
34298 @item E @var{NN}
34299 for an error
34300 @item
34301 Indicating an unrecognized @var{query}.
34302 @end table
34303
34304 @item P @var{n@dots{}}=@var{r@dots{}}
34305 @anchor{write register packet}
34306 @cindex @samp{P} packet
34307 Write register @var{n@dots{}} with value @var{r@dots{}}. The register
34308 number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
34309 digits for each byte in the register (target byte order).
34310
34311 Reply:
34312 @table @samp
34313 @item OK
34314 for success
34315 @item E @var{NN}
34316 for an error
34317 @end table
34318
34319 @item q @var{name} @var{params}@dots{}
34320 @itemx Q @var{name} @var{params}@dots{}
34321 @cindex @samp{q} packet
34322 @cindex @samp{Q} packet
34323 General query (@samp{q}) and set (@samp{Q}). These packets are
34324 described fully in @ref{General Query Packets}.
34325
34326 @item r
34327 @cindex @samp{r} packet
34328 Reset the entire system.
34329
34330 Don't use this packet; use the @samp{R} packet instead.
34331
34332 @item R @var{XX}
34333 @cindex @samp{R} packet
34334 Restart the program being debugged. @var{XX}, while needed, is ignored.
34335 This packet is only available in extended mode (@pxref{extended mode}).
34336
34337 The @samp{R} packet has no reply.
34338
34339 @item s @r{[}@var{addr}@r{]}
34340 @cindex @samp{s} packet
34341 Single step. @var{addr} is the address at which to resume. If
34342 @var{addr} is omitted, resume at same address.
34343
34344 This packet is deprecated for multi-threading support. @xref{vCont
34345 packet}.
34346
34347 Reply:
34348 @xref{Stop Reply Packets}, for the reply specifications.
34349
34350 @item S @var{sig}@r{[};@var{addr}@r{]}
34351 @anchor{step with signal packet}
34352 @cindex @samp{S} packet
34353 Step with signal. This is analogous to the @samp{C} packet, but
34354 requests a single-step, rather than a normal resumption of execution.
34355
34356 This packet is deprecated for multi-threading support. @xref{vCont
34357 packet}.
34358
34359 Reply:
34360 @xref{Stop Reply Packets}, for the reply specifications.
34361
34362 @item t @var{addr}:@var{PP},@var{MM}
34363 @cindex @samp{t} packet
34364 Search backwards starting at address @var{addr} for a match with pattern
34365 @var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
34366 @var{addr} must be at least 3 digits.
34367
34368 @item T @var{thread-id}
34369 @cindex @samp{T} packet
34370 Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
34371
34372 Reply:
34373 @table @samp
34374 @item OK
34375 thread is still alive
34376 @item E @var{NN}
34377 thread is dead
34378 @end table
34379
34380 @item v
34381 Packets starting with @samp{v} are identified by a multi-letter name,
34382 up to the first @samp{;} or @samp{?} (or the end of the packet).
34383
34384 @item vAttach;@var{pid}
34385 @cindex @samp{vAttach} packet
34386 Attach to a new process with the specified process ID @var{pid}.
34387 The process ID is a
34388 hexadecimal integer identifying the process. In all-stop mode, all
34389 threads in the attached process are stopped; in non-stop mode, it may be
34390 attached without being stopped if that is supported by the target.
34391
34392 @c In non-stop mode, on a successful vAttach, the stub should set the
34393 @c current thread to a thread of the newly-attached process. After
34394 @c attaching, GDB queries for the attached process's thread ID with qC.
34395 @c Also note that, from a user perspective, whether or not the
34396 @c target is stopped on attach in non-stop mode depends on whether you
34397 @c use the foreground or background version of the attach command, not
34398 @c on what vAttach does; GDB does the right thing with respect to either
34399 @c stopping or restarting threads.
34400
34401 This packet is only available in extended mode (@pxref{extended mode}).
34402
34403 Reply:
34404 @table @samp
34405 @item E @var{nn}
34406 for an error
34407 @item @r{Any stop packet}
34408 for success in all-stop mode (@pxref{Stop Reply Packets})
34409 @item OK
34410 for success in non-stop mode (@pxref{Remote Non-Stop})
34411 @end table
34412
34413 @item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
34414 @cindex @samp{vCont} packet
34415 @anchor{vCont packet}
34416 Resume the inferior, specifying different actions for each thread.
34417 If an action is specified with no @var{thread-id}, then it is applied to any
34418 threads that don't have a specific action specified; if no default action is
34419 specified then other threads should remain stopped in all-stop mode and
34420 in their current state in non-stop mode.
34421 Specifying multiple
34422 default actions is an error; specifying no actions is also an error.
34423 Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
34424
34425 Currently supported actions are:
34426
34427 @table @samp
34428 @item c
34429 Continue.
34430 @item C @var{sig}
34431 Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
34432 @item s
34433 Step.
34434 @item S @var{sig}
34435 Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
34436 @item t
34437 Stop.
34438 @end table
34439
34440 The optional argument @var{addr} normally associated with the
34441 @samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
34442 not supported in @samp{vCont}.
34443
34444 The @samp{t} action is only relevant in non-stop mode
34445 (@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
34446 A stop reply should be generated for any affected thread not already stopped.
34447 When a thread is stopped by means of a @samp{t} action,
34448 the corresponding stop reply should indicate that the thread has stopped with
34449 signal @samp{0}, regardless of whether the target uses some other signal
34450 as an implementation detail.
34451
34452 The stub must support @samp{vCont} if it reports support for
34453 multiprocess extensions (@pxref{multiprocess extensions}). Note that in
34454 this case @samp{vCont} actions can be specified to apply to all threads
34455 in a process by using the @samp{p@var{pid}.-1} form of the
34456 @var{thread-id}.
34457
34458 Reply:
34459 @xref{Stop Reply Packets}, for the reply specifications.
34460
34461 @item vCont?
34462 @cindex @samp{vCont?} packet
34463 Request a list of actions supported by the @samp{vCont} packet.
34464
34465 Reply:
34466 @table @samp
34467 @item vCont@r{[};@var{action}@dots{}@r{]}
34468 The @samp{vCont} packet is supported. Each @var{action} is a supported
34469 command in the @samp{vCont} packet.
34470 @item
34471 The @samp{vCont} packet is not supported.
34472 @end table
34473
34474 @item vFile:@var{operation}:@var{parameter}@dots{}
34475 @cindex @samp{vFile} packet
34476 Perform a file operation on the target system. For details,
34477 see @ref{Host I/O Packets}.
34478
34479 @item vFlashErase:@var{addr},@var{length}
34480 @cindex @samp{vFlashErase} packet
34481 Direct the stub to erase @var{length} bytes of flash starting at
34482 @var{addr}. The region may enclose any number of flash blocks, but
34483 its start and end must fall on block boundaries, as indicated by the
34484 flash block size appearing in the memory map (@pxref{Memory Map
34485 Format}). @value{GDBN} groups flash memory programming operations
34486 together, and sends a @samp{vFlashDone} request after each group; the
34487 stub is allowed to delay erase operation until the @samp{vFlashDone}
34488 packet is received.
34489
34490 Reply:
34491 @table @samp
34492 @item OK
34493 for success
34494 @item E @var{NN}
34495 for an error
34496 @end table
34497
34498 @item vFlashWrite:@var{addr}:@var{XX@dots{}}
34499 @cindex @samp{vFlashWrite} packet
34500 Direct the stub to write data to flash address @var{addr}. The data
34501 is passed in binary form using the same encoding as for the @samp{X}
34502 packet (@pxref{Binary Data}). The memory ranges specified by
34503 @samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
34504 not overlap, and must appear in order of increasing addresses
34505 (although @samp{vFlashErase} packets for higher addresses may already
34506 have been received; the ordering is guaranteed only between
34507 @samp{vFlashWrite} packets). If a packet writes to an address that was
34508 neither erased by a preceding @samp{vFlashErase} packet nor by some other
34509 target-specific method, the results are unpredictable.
34510
34511
34512 Reply:
34513 @table @samp
34514 @item OK
34515 for success
34516 @item E.memtype
34517 for vFlashWrite addressing non-flash memory
34518 @item E @var{NN}
34519 for an error
34520 @end table
34521
34522 @item vFlashDone
34523 @cindex @samp{vFlashDone} packet
34524 Indicate to the stub that flash programming operation is finished.
34525 The stub is permitted to delay or batch the effects of a group of
34526 @samp{vFlashErase} and @samp{vFlashWrite} packets until a
34527 @samp{vFlashDone} packet is received. The contents of the affected
34528 regions of flash memory are unpredictable until the @samp{vFlashDone}
34529 request is completed.
34530
34531 @item vKill;@var{pid}
34532 @cindex @samp{vKill} packet
34533 Kill the process with the specified process ID. @var{pid} is a
34534 hexadecimal integer identifying the process. This packet is used in
34535 preference to @samp{k} when multiprocess protocol extensions are
34536 supported; see @ref{multiprocess extensions}.
34537
34538 Reply:
34539 @table @samp
34540 @item E @var{nn}
34541 for an error
34542 @item OK
34543 for success
34544 @end table
34545
34546 @item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
34547 @cindex @samp{vRun} packet
34548 Run the program @var{filename}, passing it each @var{argument} on its
34549 command line. The file and arguments are hex-encoded strings. If
34550 @var{filename} is an empty string, the stub may use a default program
34551 (e.g.@: the last program run). The program is created in the stopped
34552 state.
34553
34554 @c FIXME: What about non-stop mode?
34555
34556 This packet is only available in extended mode (@pxref{extended mode}).
34557
34558 Reply:
34559 @table @samp
34560 @item E @var{nn}
34561 for an error
34562 @item @r{Any stop packet}
34563 for success (@pxref{Stop Reply Packets})
34564 @end table
34565
34566 @item vStopped
34567 @anchor{vStopped packet}
34568 @cindex @samp{vStopped} packet
34569
34570 In non-stop mode (@pxref{Remote Non-Stop}), acknowledge a previous stop
34571 reply and prompt for the stub to report another one.
34572
34573 Reply:
34574 @table @samp
34575 @item @r{Any stop packet}
34576 if there is another unreported stop event (@pxref{Stop Reply Packets})
34577 @item OK
34578 if there are no unreported stop events
34579 @end table
34580
34581 @item X @var{addr},@var{length}:@var{XX@dots{}}
34582 @anchor{X packet}
34583 @cindex @samp{X} packet
34584 Write data to memory, where the data is transmitted in binary.
34585 @var{addr} is address, @var{length} is number of bytes,
34586 @samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
34587
34588 Reply:
34589 @table @samp
34590 @item OK
34591 for success
34592 @item E @var{NN}
34593 for an error
34594 @end table
34595
34596 @item z @var{type},@var{addr},@var{kind}
34597 @itemx Z @var{type},@var{addr},@var{kind}
34598 @anchor{insert breakpoint or watchpoint packet}
34599 @cindex @samp{z} packet
34600 @cindex @samp{Z} packets
34601 Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
34602 watchpoint starting at address @var{address} of kind @var{kind}.
34603
34604 Each breakpoint and watchpoint packet @var{type} is documented
34605 separately.
34606
34607 @emph{Implementation notes: A remote target shall return an empty string
34608 for an unrecognized breakpoint or watchpoint packet @var{type}. A
34609 remote target shall support either both or neither of a given
34610 @samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
34611 avoid potential problems with duplicate packets, the operations should
34612 be implemented in an idempotent way.}
34613
34614 @item z0,@var{addr},@var{kind}
34615 @itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}
34616 @cindex @samp{z0} packet
34617 @cindex @samp{Z0} packet
34618 Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
34619 @var{addr} of type @var{kind}.
34620
34621 A memory breakpoint is implemented by replacing the instruction at
34622 @var{addr} with a software breakpoint or trap instruction. The
34623 @var{kind} is target-specific and typically indicates the size of
34624 the breakpoint in bytes that should be inserted. E.g., the @sc{arm}
34625 and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
34626 architectures have additional meanings for @var{kind};
34627 @var{cond_list} is an optional list of conditional expressions in bytecode
34628 form that should be evaluated on the target's side. These are the
34629 conditions that should be taken into consideration when deciding if
34630 the breakpoint trigger should be reported back to @var{GDBN}.
34631
34632 The @var{cond_list} parameter is comprised of a series of expressions,
34633 concatenated without separators. Each expression has the following form:
34634
34635 @table @samp
34636
34637 @item X @var{len},@var{expr}
34638 @var{len} is the length of the bytecode expression and @var{expr} is the
34639 actual conditional expression in bytecode form.
34640
34641 @end table
34642
34643 see @ref{Architecture-Specific Protocol Details}.
34644
34645 @emph{Implementation note: It is possible for a target to copy or move
34646 code that contains memory breakpoints (e.g., when implementing
34647 overlays). The behavior of this packet, in the presence of such a
34648 target, is not defined.}
34649
34650 Reply:
34651 @table @samp
34652 @item OK
34653 success
34654 @item
34655 not supported
34656 @item E @var{NN}
34657 for an error
34658 @end table
34659
34660 @item z1,@var{addr},@var{kind}
34661 @itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}
34662 @cindex @samp{z1} packet
34663 @cindex @samp{Z1} packet
34664 Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
34665 address @var{addr}.
34666
34667 A hardware breakpoint is implemented using a mechanism that is not
34668 dependant on being able to modify the target's memory. @var{kind}
34669 and @var{cond_list} have the same meaning as in @samp{Z0} packets.
34670
34671 @emph{Implementation note: A hardware breakpoint is not affected by code
34672 movement.}
34673
34674 Reply:
34675 @table @samp
34676 @item OK
34677 success
34678 @item
34679 not supported
34680 @item E @var{NN}
34681 for an error
34682 @end table
34683
34684 @item z2,@var{addr},@var{kind}
34685 @itemx Z2,@var{addr},@var{kind}
34686 @cindex @samp{z2} packet
34687 @cindex @samp{Z2} packet
34688 Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
34689 @var{kind} is interpreted as the number of bytes to watch.
34690
34691 Reply:
34692 @table @samp
34693 @item OK
34694 success
34695 @item
34696 not supported
34697 @item E @var{NN}
34698 for an error
34699 @end table
34700
34701 @item z3,@var{addr},@var{kind}
34702 @itemx Z3,@var{addr},@var{kind}
34703 @cindex @samp{z3} packet
34704 @cindex @samp{Z3} packet
34705 Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
34706 @var{kind} is interpreted as the number of bytes to watch.
34707
34708 Reply:
34709 @table @samp
34710 @item OK
34711 success
34712 @item
34713 not supported
34714 @item E @var{NN}
34715 for an error
34716 @end table
34717
34718 @item z4,@var{addr},@var{kind}
34719 @itemx Z4,@var{addr},@var{kind}
34720 @cindex @samp{z4} packet
34721 @cindex @samp{Z4} packet
34722 Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
34723 @var{kind} is interpreted as the number of bytes to watch.
34724
34725 Reply:
34726 @table @samp
34727 @item OK
34728 success
34729 @item
34730 not supported
34731 @item E @var{NN}
34732 for an error
34733 @end table
34734
34735 @end table
34736
34737 @node Stop Reply Packets
34738 @section Stop Reply Packets
34739 @cindex stop reply packets
34740
34741 The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
34742 @samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
34743 receive any of the below as a reply. Except for @samp{?}
34744 and @samp{vStopped}, that reply is only returned
34745 when the target halts. In the below the exact meaning of @dfn{signal
34746 number} is defined by the header @file{include/gdb/signals.h} in the
34747 @value{GDBN} source code.
34748
34749 As in the description of request packets, we include spaces in the
34750 reply templates for clarity; these are not part of the reply packet's
34751 syntax. No @value{GDBN} stop reply packet uses spaces to separate its
34752 components.
34753
34754 @table @samp
34755
34756 @item S @var{AA}
34757 The program received signal number @var{AA} (a two-digit hexadecimal
34758 number). This is equivalent to a @samp{T} response with no
34759 @var{n}:@var{r} pairs.
34760
34761 @item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
34762 @cindex @samp{T} packet reply
34763 The program received signal number @var{AA} (a two-digit hexadecimal
34764 number). This is equivalent to an @samp{S} response, except that the
34765 @samp{@var{n}:@var{r}} pairs can carry values of important registers
34766 and other information directly in the stop reply packet, reducing
34767 round-trip latency. Single-step and breakpoint traps are reported
34768 this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
34769
34770 @itemize @bullet
34771 @item
34772 If @var{n} is a hexadecimal number, it is a register number, and the
34773 corresponding @var{r} gives that register's value. @var{r} is a
34774 series of bytes in target byte order, with each byte given by a
34775 two-digit hex number.
34776
34777 @item
34778 If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
34779 the stopped thread, as specified in @ref{thread-id syntax}.
34780
34781 @item
34782 If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
34783 the core on which the stop event was detected.
34784
34785 @item
34786 If @var{n} is a recognized @dfn{stop reason}, it describes a more
34787 specific event that stopped the target. The currently defined stop
34788 reasons are listed below. @var{aa} should be @samp{05}, the trap
34789 signal. At most one stop reason should be present.
34790
34791 @item
34792 Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
34793 and go on to the next; this allows us to extend the protocol in the
34794 future.
34795 @end itemize
34796
34797 The currently defined stop reasons are:
34798
34799 @table @samp
34800 @item watch
34801 @itemx rwatch
34802 @itemx awatch
34803 The packet indicates a watchpoint hit, and @var{r} is the data address, in
34804 hex.
34805
34806 @cindex shared library events, remote reply
34807 @item library
34808 The packet indicates that the loaded libraries have changed.
34809 @value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
34810 list of loaded libraries. @var{r} is ignored.
34811
34812 @cindex replay log events, remote reply
34813 @item replaylog
34814 The packet indicates that the target cannot continue replaying
34815 logged execution events, because it has reached the end (or the
34816 beginning when executing backward) of the log. The value of @var{r}
34817 will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
34818 for more information.
34819 @end table
34820
34821 @item W @var{AA}
34822 @itemx W @var{AA} ; process:@var{pid}
34823 The process exited, and @var{AA} is the exit status. This is only
34824 applicable to certain targets.
34825
34826 The second form of the response, including the process ID of the exited
34827 process, can be used only when @value{GDBN} has reported support for
34828 multiprocess protocol extensions; see @ref{multiprocess extensions}.
34829 The @var{pid} is formatted as a big-endian hex string.
34830
34831 @item X @var{AA}
34832 @itemx X @var{AA} ; process:@var{pid}
34833 The process terminated with signal @var{AA}.
34834
34835 The second form of the response, including the process ID of the
34836 terminated process, can be used only when @value{GDBN} has reported
34837 support for multiprocess protocol extensions; see @ref{multiprocess
34838 extensions}. The @var{pid} is formatted as a big-endian hex string.
34839
34840 @item O @var{XX}@dots{}
34841 @samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
34842 written as the program's console output. This can happen at any time
34843 while the program is running and the debugger should continue to wait
34844 for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
34845
34846 @item F @var{call-id},@var{parameter}@dots{}
34847 @var{call-id} is the identifier which says which host system call should
34848 be called. This is just the name of the function. Translation into the
34849 correct system call is only applicable as it's defined in @value{GDBN}.
34850 @xref{File-I/O Remote Protocol Extension}, for a list of implemented
34851 system calls.
34852
34853 @samp{@var{parameter}@dots{}} is a list of parameters as defined for
34854 this very system call.
34855
34856 The target replies with this packet when it expects @value{GDBN} to
34857 call a host system call on behalf of the target. @value{GDBN} replies
34858 with an appropriate @samp{F} packet and keeps up waiting for the next
34859 reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
34860 or @samp{s} action is expected to be continued. @xref{File-I/O Remote
34861 Protocol Extension}, for more details.
34862
34863 @end table
34864
34865 @node General Query Packets
34866 @section General Query Packets
34867 @cindex remote query requests
34868
34869 Packets starting with @samp{q} are @dfn{general query packets};
34870 packets starting with @samp{Q} are @dfn{general set packets}. General
34871 query and set packets are a semi-unified form for retrieving and
34872 sending information to and from the stub.
34873
34874 The initial letter of a query or set packet is followed by a name
34875 indicating what sort of thing the packet applies to. For example,
34876 @value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
34877 definitions with the stub. These packet names follow some
34878 conventions:
34879
34880 @itemize @bullet
34881 @item
34882 The name must not contain commas, colons or semicolons.
34883 @item
34884 Most @value{GDBN} query and set packets have a leading upper case
34885 letter.
34886 @item
34887 The names of custom vendor packets should use a company prefix, in
34888 lower case, followed by a period. For example, packets designed at
34889 the Acme Corporation might begin with @samp{qacme.foo} (for querying
34890 foos) or @samp{Qacme.bar} (for setting bars).
34891 @end itemize
34892
34893 The name of a query or set packet should be separated from any
34894 parameters by a @samp{:}; the parameters themselves should be
34895 separated by @samp{,} or @samp{;}. Stubs must be careful to match the
34896 full packet name, and check for a separator or the end of the packet,
34897 in case two packet names share a common prefix. New packets should not begin
34898 with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
34899 packets predate these conventions, and have arguments without any terminator
34900 for the packet name; we suspect they are in widespread use in places that
34901 are difficult to upgrade. The @samp{qC} packet has no arguments, but some
34902 existing stubs (e.g.@: RedBoot) are known to not check for the end of the
34903 packet.}.
34904
34905 Like the descriptions of the other packets, each description here
34906 has a template showing the packet's overall syntax, followed by an
34907 explanation of the packet's meaning. We include spaces in some of the
34908 templates for clarity; these are not part of the packet's syntax. No
34909 @value{GDBN} packet uses spaces to separate its components.
34910
34911 Here are the currently defined query and set packets:
34912
34913 @table @samp
34914
34915 @item QAgent:1
34916 @item QAgent:0
34917 Turn on or off the agent as a helper to perform some debugging operations
34918 delegated from @value{GDBN} (@pxref{Control Agent}).
34919
34920 @item QAllow:@var{op}:@var{val}@dots{}
34921 @cindex @samp{QAllow} packet
34922 Specify which operations @value{GDBN} expects to request of the
34923 target, as a semicolon-separated list of operation name and value
34924 pairs. Possible values for @var{op} include @samp{WriteReg},
34925 @samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace},
34926 @samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0,
34927 indicating that @value{GDBN} will not request the operation, or 1,
34928 indicating that it may. (The target can then use this to set up its
34929 own internals optimally, for instance if the debugger never expects to
34930 insert breakpoints, it may not need to install its own trap handler.)
34931
34932 @item qC
34933 @cindex current thread, remote request
34934 @cindex @samp{qC} packet
34935 Return the current thread ID.
34936
34937 Reply:
34938 @table @samp
34939 @item QC @var{thread-id}
34940 Where @var{thread-id} is a thread ID as documented in
34941 @ref{thread-id syntax}.
34942 @item @r{(anything else)}
34943 Any other reply implies the old thread ID.
34944 @end table
34945
34946 @item qCRC:@var{addr},@var{length}
34947 @cindex CRC of memory block, remote request
34948 @cindex @samp{qCRC} packet
34949 Compute the CRC checksum of a block of memory using CRC-32 defined in
34950 IEEE 802.3. The CRC is computed byte at a time, taking the most
34951 significant bit of each byte first. The initial pattern code
34952 @code{0xffffffff} is used to ensure leading zeros affect the CRC.
34953
34954 @emph{Note:} This is the same CRC used in validating separate debug
34955 files (@pxref{Separate Debug Files, , Debugging Information in Separate
34956 Files}). However the algorithm is slightly different. When validating
34957 separate debug files, the CRC is computed taking the @emph{least}
34958 significant bit of each byte first, and the final result is inverted to
34959 detect trailing zeros.
34960
34961 Reply:
34962 @table @samp
34963 @item E @var{NN}
34964 An error (such as memory fault)
34965 @item C @var{crc32}
34966 The specified memory region's checksum is @var{crc32}.
34967 @end table
34968
34969 @item QDisableRandomization:@var{value}
34970 @cindex disable address space randomization, remote request
34971 @cindex @samp{QDisableRandomization} packet
34972 Some target operating systems will randomize the virtual address space
34973 of the inferior process as a security feature, but provide a feature
34974 to disable such randomization, e.g.@: to allow for a more deterministic
34975 debugging experience. On such systems, this packet with a @var{value}
34976 of 1 directs the target to disable address space randomization for
34977 processes subsequently started via @samp{vRun} packets, while a packet
34978 with a @var{value} of 0 tells the target to enable address space
34979 randomization.
34980
34981 This packet is only available in extended mode (@pxref{extended mode}).
34982
34983 Reply:
34984 @table @samp
34985 @item OK
34986 The request succeeded.
34987
34988 @item E @var{nn}
34989 An error occurred. @var{nn} are hex digits.
34990
34991 @item
34992 An empty reply indicates that @samp{QDisableRandomization} is not supported
34993 by the stub.
34994 @end table
34995
34996 This packet is not probed by default; the remote stub must request it,
34997 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
34998 This should only be done on targets that actually support disabling
34999 address space randomization.
35000
35001 @item qfThreadInfo
35002 @itemx qsThreadInfo
35003 @cindex list active threads, remote request
35004 @cindex @samp{qfThreadInfo} packet
35005 @cindex @samp{qsThreadInfo} packet
35006 Obtain a list of all active thread IDs from the target (OS). Since there
35007 may be too many active threads to fit into one reply packet, this query
35008 works iteratively: it may require more than one query/reply sequence to
35009 obtain the entire list of threads. The first query of the sequence will
35010 be the @samp{qfThreadInfo} query; subsequent queries in the
35011 sequence will be the @samp{qsThreadInfo} query.
35012
35013 NOTE: This packet replaces the @samp{qL} query (see below).
35014
35015 Reply:
35016 @table @samp
35017 @item m @var{thread-id}
35018 A single thread ID
35019 @item m @var{thread-id},@var{thread-id}@dots{}
35020 a comma-separated list of thread IDs
35021 @item l
35022 (lower case letter @samp{L}) denotes end of list.
35023 @end table
35024
35025 In response to each query, the target will reply with a list of one or
35026 more thread IDs, separated by commas.
35027 @value{GDBN} will respond to each reply with a request for more thread
35028 ids (using the @samp{qs} form of the query), until the target responds
35029 with @samp{l} (lower-case ell, for @dfn{last}).
35030 Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
35031 fields.
35032
35033 @item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
35034 @cindex get thread-local storage address, remote request
35035 @cindex @samp{qGetTLSAddr} packet
35036 Fetch the address associated with thread local storage specified
35037 by @var{thread-id}, @var{offset}, and @var{lm}.
35038
35039 @var{thread-id} is the thread ID associated with the
35040 thread for which to fetch the TLS address. @xref{thread-id syntax}.
35041
35042 @var{offset} is the (big endian, hex encoded) offset associated with the
35043 thread local variable. (This offset is obtained from the debug
35044 information associated with the variable.)
35045
35046 @var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
35047 load module associated with the thread local storage. For example,
35048 a @sc{gnu}/Linux system will pass the link map address of the shared
35049 object associated with the thread local storage under consideration.
35050 Other operating environments may choose to represent the load module
35051 differently, so the precise meaning of this parameter will vary.
35052
35053 Reply:
35054 @table @samp
35055 @item @var{XX}@dots{}
35056 Hex encoded (big endian) bytes representing the address of the thread
35057 local storage requested.
35058
35059 @item E @var{nn}
35060 An error occurred. @var{nn} are hex digits.
35061
35062 @item
35063 An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
35064 @end table
35065
35066 @item qGetTIBAddr:@var{thread-id}
35067 @cindex get thread information block address
35068 @cindex @samp{qGetTIBAddr} packet
35069 Fetch address of the Windows OS specific Thread Information Block.
35070
35071 @var{thread-id} is the thread ID associated with the thread.
35072
35073 Reply:
35074 @table @samp
35075 @item @var{XX}@dots{}
35076 Hex encoded (big endian) bytes representing the linear address of the
35077 thread information block.
35078
35079 @item E @var{nn}
35080 An error occured. This means that either the thread was not found, or the
35081 address could not be retrieved.
35082
35083 @item
35084 An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub.
35085 @end table
35086
35087 @item qL @var{startflag} @var{threadcount} @var{nextthread}
35088 Obtain thread information from RTOS. Where: @var{startflag} (one hex
35089 digit) is one to indicate the first query and zero to indicate a
35090 subsequent query; @var{threadcount} (two hex digits) is the maximum
35091 number of threads the response packet can contain; and @var{nextthread}
35092 (eight hex digits), for subsequent queries (@var{startflag} is zero), is
35093 returned in the response as @var{argthread}.
35094
35095 Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
35096
35097 Reply:
35098 @table @samp
35099 @item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
35100 Where: @var{count} (two hex digits) is the number of threads being
35101 returned; @var{done} (one hex digit) is zero to indicate more threads
35102 and one indicates no further threads; @var{argthreadid} (eight hex
35103 digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
35104 is a sequence of thread IDs from the target. @var{threadid} (eight hex
35105 digits). See @code{remote.c:parse_threadlist_response()}.
35106 @end table
35107
35108 @item qOffsets
35109 @cindex section offsets, remote request
35110 @cindex @samp{qOffsets} packet
35111 Get section offsets that the target used when relocating the downloaded
35112 image.
35113
35114 Reply:
35115 @table @samp
35116 @item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
35117 Relocate the @code{Text} section by @var{xxx} from its original address.
35118 Relocate the @code{Data} section by @var{yyy} from its original address.
35119 If the object file format provides segment information (e.g.@: @sc{elf}
35120 @samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
35121 segments by the supplied offsets.
35122
35123 @emph{Note: while a @code{Bss} offset may be included in the response,
35124 @value{GDBN} ignores this and instead applies the @code{Data} offset
35125 to the @code{Bss} section.}
35126
35127 @item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
35128 Relocate the first segment of the object file, which conventionally
35129 contains program code, to a starting address of @var{xxx}. If
35130 @samp{DataSeg} is specified, relocate the second segment, which
35131 conventionally contains modifiable data, to a starting address of
35132 @var{yyy}. @value{GDBN} will report an error if the object file
35133 does not contain segment information, or does not contain at least
35134 as many segments as mentioned in the reply. Extra segments are
35135 kept at fixed offsets relative to the last relocated segment.
35136 @end table
35137
35138 @item qP @var{mode} @var{thread-id}
35139 @cindex thread information, remote request
35140 @cindex @samp{qP} packet
35141 Returns information on @var{thread-id}. Where: @var{mode} is a hex
35142 encoded 32 bit mode; @var{thread-id} is a thread ID
35143 (@pxref{thread-id syntax}).
35144
35145 Don't use this packet; use the @samp{qThreadExtraInfo} query instead
35146 (see below).
35147
35148 Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
35149
35150 @item QNonStop:1
35151 @item QNonStop:0
35152 @cindex non-stop mode, remote request
35153 @cindex @samp{QNonStop} packet
35154 @anchor{QNonStop}
35155 Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
35156 @xref{Remote Non-Stop}, for more information.
35157
35158 Reply:
35159 @table @samp
35160 @item OK
35161 The request succeeded.
35162
35163 @item E @var{nn}
35164 An error occurred. @var{nn} are hex digits.
35165
35166 @item
35167 An empty reply indicates that @samp{QNonStop} is not supported by
35168 the stub.
35169 @end table
35170
35171 This packet is not probed by default; the remote stub must request it,
35172 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35173 Use of this packet is controlled by the @code{set non-stop} command;
35174 @pxref{Non-Stop Mode}.
35175
35176 @item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
35177 @cindex pass signals to inferior, remote request
35178 @cindex @samp{QPassSignals} packet
35179 @anchor{QPassSignals}
35180 Each listed @var{signal} should be passed directly to the inferior process.
35181 Signals are numbered identically to continue packets and stop replies
35182 (@pxref{Stop Reply Packets}). Each @var{signal} list item should be
35183 strictly greater than the previous item. These signals do not need to stop
35184 the inferior, or be reported to @value{GDBN}. All other signals should be
35185 reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
35186 combine; any earlier @samp{QPassSignals} list is completely replaced by the
35187 new list. This packet improves performance when using @samp{handle
35188 @var{signal} nostop noprint pass}.
35189
35190 Reply:
35191 @table @samp
35192 @item OK
35193 The request succeeded.
35194
35195 @item E @var{nn}
35196 An error occurred. @var{nn} are hex digits.
35197
35198 @item
35199 An empty reply indicates that @samp{QPassSignals} is not supported by
35200 the stub.
35201 @end table
35202
35203 Use of this packet is controlled by the @code{set remote pass-signals}
35204 command (@pxref{Remote Configuration, set remote pass-signals}).
35205 This packet is not probed by default; the remote stub must request it,
35206 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35207
35208 @item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
35209 @cindex signals the inferior may see, remote request
35210 @cindex @samp{QProgramSignals} packet
35211 @anchor{QProgramSignals}
35212 Each listed @var{signal} may be delivered to the inferior process.
35213 Others should be silently discarded.
35214
35215 In some cases, the remote stub may need to decide whether to deliver a
35216 signal to the program or not without @value{GDBN} involvement. One
35217 example of that is while detaching --- the program's threads may have
35218 stopped for signals that haven't yet had a chance of being reported to
35219 @value{GDBN}, and so the remote stub can use the signal list specified
35220 by this packet to know whether to deliver or ignore those pending
35221 signals.
35222
35223 This does not influence whether to deliver a signal as requested by a
35224 resumption packet (@pxref{vCont packet}).
35225
35226 Signals are numbered identically to continue packets and stop replies
35227 (@pxref{Stop Reply Packets}). Each @var{signal} list item should be
35228 strictly greater than the previous item. Multiple
35229 @samp{QProgramSignals} packets do not combine; any earlier
35230 @samp{QProgramSignals} list is completely replaced by the new list.
35231
35232 Reply:
35233 @table @samp
35234 @item OK
35235 The request succeeded.
35236
35237 @item E @var{nn}
35238 An error occurred. @var{nn} are hex digits.
35239
35240 @item
35241 An empty reply indicates that @samp{QProgramSignals} is not supported
35242 by the stub.
35243 @end table
35244
35245 Use of this packet is controlled by the @code{set remote program-signals}
35246 command (@pxref{Remote Configuration, set remote program-signals}).
35247 This packet is not probed by default; the remote stub must request it,
35248 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35249
35250 @item qRcmd,@var{command}
35251 @cindex execute remote command, remote request
35252 @cindex @samp{qRcmd} packet
35253 @var{command} (hex encoded) is passed to the local interpreter for
35254 execution. Invalid commands should be reported using the output
35255 string. Before the final result packet, the target may also respond
35256 with a number of intermediate @samp{O@var{output}} console output
35257 packets. @emph{Implementors should note that providing access to a
35258 stubs's interpreter may have security implications}.
35259
35260 Reply:
35261 @table @samp
35262 @item OK
35263 A command response with no output.
35264 @item @var{OUTPUT}
35265 A command response with the hex encoded output string @var{OUTPUT}.
35266 @item E @var{NN}
35267 Indicate a badly formed request.
35268 @item
35269 An empty reply indicates that @samp{qRcmd} is not recognized.
35270 @end table
35271
35272 (Note that the @code{qRcmd} packet's name is separated from the
35273 command by a @samp{,}, not a @samp{:}, contrary to the naming
35274 conventions above. Please don't use this packet as a model for new
35275 packets.)
35276
35277 @item qSearch:memory:@var{address};@var{length};@var{search-pattern}
35278 @cindex searching memory, in remote debugging
35279 @cindex @samp{qSearch:memory} packet
35280 @anchor{qSearch memory}
35281 Search @var{length} bytes at @var{address} for @var{search-pattern}.
35282 @var{address} and @var{length} are encoded in hex.
35283 @var{search-pattern} is a sequence of bytes, hex encoded.
35284
35285 Reply:
35286 @table @samp
35287 @item 0
35288 The pattern was not found.
35289 @item 1,address
35290 The pattern was found at @var{address}.
35291 @item E @var{NN}
35292 A badly formed request or an error was encountered while searching memory.
35293 @item
35294 An empty reply indicates that @samp{qSearch:memory} is not recognized.
35295 @end table
35296
35297 @item QStartNoAckMode
35298 @cindex @samp{QStartNoAckMode} packet
35299 @anchor{QStartNoAckMode}
35300 Request that the remote stub disable the normal @samp{+}/@samp{-}
35301 protocol acknowledgments (@pxref{Packet Acknowledgment}).
35302
35303 Reply:
35304 @table @samp
35305 @item OK
35306 The stub has switched to no-acknowledgment mode.
35307 @value{GDBN} acknowledges this reponse,
35308 but neither the stub nor @value{GDBN} shall send or expect further
35309 @samp{+}/@samp{-} acknowledgments in the current connection.
35310 @item
35311 An empty reply indicates that the stub does not support no-acknowledgment mode.
35312 @end table
35313
35314 @item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
35315 @cindex supported packets, remote query
35316 @cindex features of the remote protocol
35317 @cindex @samp{qSupported} packet
35318 @anchor{qSupported}
35319 Tell the remote stub about features supported by @value{GDBN}, and
35320 query the stub for features it supports. This packet allows
35321 @value{GDBN} and the remote stub to take advantage of each others'
35322 features. @samp{qSupported} also consolidates multiple feature probes
35323 at startup, to improve @value{GDBN} performance---a single larger
35324 packet performs better than multiple smaller probe packets on
35325 high-latency links. Some features may enable behavior which must not
35326 be on by default, e.g.@: because it would confuse older clients or
35327 stubs. Other features may describe packets which could be
35328 automatically probed for, but are not. These features must be
35329 reported before @value{GDBN} will use them. This ``default
35330 unsupported'' behavior is not appropriate for all packets, but it
35331 helps to keep the initial connection time under control with new
35332 versions of @value{GDBN} which support increasing numbers of packets.
35333
35334 Reply:
35335 @table @samp
35336 @item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
35337 The stub supports or does not support each returned @var{stubfeature},
35338 depending on the form of each @var{stubfeature} (see below for the
35339 possible forms).
35340 @item
35341 An empty reply indicates that @samp{qSupported} is not recognized,
35342 or that no features needed to be reported to @value{GDBN}.
35343 @end table
35344
35345 The allowed forms for each feature (either a @var{gdbfeature} in the
35346 @samp{qSupported} packet, or a @var{stubfeature} in the response)
35347 are:
35348
35349 @table @samp
35350 @item @var{name}=@var{value}
35351 The remote protocol feature @var{name} is supported, and associated
35352 with the specified @var{value}. The format of @var{value} depends
35353 on the feature, but it must not include a semicolon.
35354 @item @var{name}+
35355 The remote protocol feature @var{name} is supported, and does not
35356 need an associated value.
35357 @item @var{name}-
35358 The remote protocol feature @var{name} is not supported.
35359 @item @var{name}?
35360 The remote protocol feature @var{name} may be supported, and
35361 @value{GDBN} should auto-detect support in some other way when it is
35362 needed. This form will not be used for @var{gdbfeature} notifications,
35363 but may be used for @var{stubfeature} responses.
35364 @end table
35365
35366 Whenever the stub receives a @samp{qSupported} request, the
35367 supplied set of @value{GDBN} features should override any previous
35368 request. This allows @value{GDBN} to put the stub in a known
35369 state, even if the stub had previously been communicating with
35370 a different version of @value{GDBN}.
35371
35372 The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
35373 are defined:
35374
35375 @table @samp
35376 @item multiprocess
35377 This feature indicates whether @value{GDBN} supports multiprocess
35378 extensions to the remote protocol. @value{GDBN} does not use such
35379 extensions unless the stub also reports that it supports them by
35380 including @samp{multiprocess+} in its @samp{qSupported} reply.
35381 @xref{multiprocess extensions}, for details.
35382
35383 @item xmlRegisters
35384 This feature indicates that @value{GDBN} supports the XML target
35385 description. If the stub sees @samp{xmlRegisters=} with target
35386 specific strings separated by a comma, it will report register
35387 description.
35388
35389 @item qRelocInsn
35390 This feature indicates whether @value{GDBN} supports the
35391 @samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate
35392 instruction reply packet}).
35393 @end table
35394
35395 Stubs should ignore any unknown values for
35396 @var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
35397 packet supports receiving packets of unlimited length (earlier
35398 versions of @value{GDBN} may reject overly long responses). Additional values
35399 for @var{gdbfeature} may be defined in the future to let the stub take
35400 advantage of new features in @value{GDBN}, e.g.@: incompatible
35401 improvements in the remote protocol---the @samp{multiprocess} feature is
35402 an example of such a feature. The stub's reply should be independent
35403 of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
35404 describes all the features it supports, and then the stub replies with
35405 all the features it supports.
35406
35407 Similarly, @value{GDBN} will silently ignore unrecognized stub feature
35408 responses, as long as each response uses one of the standard forms.
35409
35410 Some features are flags. A stub which supports a flag feature
35411 should respond with a @samp{+} form response. Other features
35412 require values, and the stub should respond with an @samp{=}
35413 form response.
35414
35415 Each feature has a default value, which @value{GDBN} will use if
35416 @samp{qSupported} is not available or if the feature is not mentioned
35417 in the @samp{qSupported} response. The default values are fixed; a
35418 stub is free to omit any feature responses that match the defaults.
35419
35420 Not all features can be probed, but for those which can, the probing
35421 mechanism is useful: in some cases, a stub's internal
35422 architecture may not allow the protocol layer to know some information
35423 about the underlying target in advance. This is especially common in
35424 stubs which may be configured for multiple targets.
35425
35426 These are the currently defined stub features and their properties:
35427
35428 @multitable @columnfractions 0.35 0.2 0.12 0.2
35429 @c NOTE: The first row should be @headitem, but we do not yet require
35430 @c a new enough version of Texinfo (4.7) to use @headitem.
35431 @item Feature Name
35432 @tab Value Required
35433 @tab Default
35434 @tab Probe Allowed
35435
35436 @item @samp{PacketSize}
35437 @tab Yes
35438 @tab @samp{-}
35439 @tab No
35440
35441 @item @samp{qXfer:auxv:read}
35442 @tab No
35443 @tab @samp{-}
35444 @tab Yes
35445
35446 @item @samp{qXfer:features:read}
35447 @tab No
35448 @tab @samp{-}
35449 @tab Yes
35450
35451 @item @samp{qXfer:libraries:read}
35452 @tab No
35453 @tab @samp{-}
35454 @tab Yes
35455
35456 @item @samp{qXfer:memory-map:read}
35457 @tab No
35458 @tab @samp{-}
35459 @tab Yes
35460
35461 @item @samp{qXfer:sdata:read}
35462 @tab No
35463 @tab @samp{-}
35464 @tab Yes
35465
35466 @item @samp{qXfer:spu:read}
35467 @tab No
35468 @tab @samp{-}
35469 @tab Yes
35470
35471 @item @samp{qXfer:spu:write}
35472 @tab No
35473 @tab @samp{-}
35474 @tab Yes
35475
35476 @item @samp{qXfer:siginfo:read}
35477 @tab No
35478 @tab @samp{-}
35479 @tab Yes
35480
35481 @item @samp{qXfer:siginfo:write}
35482 @tab No
35483 @tab @samp{-}
35484 @tab Yes
35485
35486 @item @samp{qXfer:threads:read}
35487 @tab No
35488 @tab @samp{-}
35489 @tab Yes
35490
35491 @item @samp{qXfer:traceframe-info:read}
35492 @tab No
35493 @tab @samp{-}
35494 @tab Yes
35495
35496 @item @samp{qXfer:uib:read}
35497 @tab No
35498 @tab @samp{-}
35499 @tab Yes
35500
35501 @item @samp{qXfer:fdpic:read}
35502 @tab No
35503 @tab @samp{-}
35504 @tab Yes
35505
35506 @item @samp{QNonStop}
35507 @tab No
35508 @tab @samp{-}
35509 @tab Yes
35510
35511 @item @samp{QPassSignals}
35512 @tab No
35513 @tab @samp{-}
35514 @tab Yes
35515
35516 @item @samp{QStartNoAckMode}
35517 @tab No
35518 @tab @samp{-}
35519 @tab Yes
35520
35521 @item @samp{multiprocess}
35522 @tab No
35523 @tab @samp{-}
35524 @tab No
35525
35526 @item @samp{ConditionalBreakpoints}
35527 @tab No
35528 @tab @samp{-}
35529 @tab No
35530
35531 @item @samp{ConditionalTracepoints}
35532 @tab No
35533 @tab @samp{-}
35534 @tab No
35535
35536 @item @samp{ReverseContinue}
35537 @tab No
35538 @tab @samp{-}
35539 @tab No
35540
35541 @item @samp{ReverseStep}
35542 @tab No
35543 @tab @samp{-}
35544 @tab No
35545
35546 @item @samp{TracepointSource}
35547 @tab No
35548 @tab @samp{-}
35549 @tab No
35550
35551 @item @samp{QAgent}
35552 @tab No
35553 @tab @samp{-}
35554 @tab No
35555
35556 @item @samp{QAllow}
35557 @tab No
35558 @tab @samp{-}
35559 @tab No
35560
35561 @item @samp{QDisableRandomization}
35562 @tab No
35563 @tab @samp{-}
35564 @tab No
35565
35566 @item @samp{EnableDisableTracepoints}
35567 @tab No
35568 @tab @samp{-}
35569 @tab No
35570
35571 @item @samp{tracenz}
35572 @tab No
35573 @tab @samp{-}
35574 @tab No
35575
35576 @end multitable
35577
35578 These are the currently defined stub features, in more detail:
35579
35580 @table @samp
35581 @cindex packet size, remote protocol
35582 @item PacketSize=@var{bytes}
35583 The remote stub can accept packets up to at least @var{bytes} in
35584 length. @value{GDBN} will send packets up to this size for bulk
35585 transfers, and will never send larger packets. This is a limit on the
35586 data characters in the packet, including the frame and checksum.
35587 There is no trailing NUL byte in a remote protocol packet; if the stub
35588 stores packets in a NUL-terminated format, it should allow an extra
35589 byte in its buffer for the NUL. If this stub feature is not supported,
35590 @value{GDBN} guesses based on the size of the @samp{g} packet response.
35591
35592 @item qXfer:auxv:read
35593 The remote stub understands the @samp{qXfer:auxv:read} packet
35594 (@pxref{qXfer auxiliary vector read}).
35595
35596 @item qXfer:features:read
35597 The remote stub understands the @samp{qXfer:features:read} packet
35598 (@pxref{qXfer target description read}).
35599
35600 @item qXfer:libraries:read
35601 The remote stub understands the @samp{qXfer:libraries:read} packet
35602 (@pxref{qXfer library list read}).
35603
35604 @item qXfer:libraries-svr4:read
35605 The remote stub understands the @samp{qXfer:libraries-svr4:read} packet
35606 (@pxref{qXfer svr4 library list read}).
35607
35608 @item qXfer:memory-map:read
35609 The remote stub understands the @samp{qXfer:memory-map:read} packet
35610 (@pxref{qXfer memory map read}).
35611
35612 @item qXfer:sdata:read
35613 The remote stub understands the @samp{qXfer:sdata:read} packet
35614 (@pxref{qXfer sdata read}).
35615
35616 @item qXfer:spu:read
35617 The remote stub understands the @samp{qXfer:spu:read} packet
35618 (@pxref{qXfer spu read}).
35619
35620 @item qXfer:spu:write
35621 The remote stub understands the @samp{qXfer:spu:write} packet
35622 (@pxref{qXfer spu write}).
35623
35624 @item qXfer:siginfo:read
35625 The remote stub understands the @samp{qXfer:siginfo:read} packet
35626 (@pxref{qXfer siginfo read}).
35627
35628 @item qXfer:siginfo:write
35629 The remote stub understands the @samp{qXfer:siginfo:write} packet
35630 (@pxref{qXfer siginfo write}).
35631
35632 @item qXfer:threads:read
35633 The remote stub understands the @samp{qXfer:threads:read} packet
35634 (@pxref{qXfer threads read}).
35635
35636 @item qXfer:traceframe-info:read
35637 The remote stub understands the @samp{qXfer:traceframe-info:read}
35638 packet (@pxref{qXfer traceframe info read}).
35639
35640 @item qXfer:uib:read
35641 The remote stub understands the @samp{qXfer:uib:read}
35642 packet (@pxref{qXfer unwind info block}).
35643
35644 @item qXfer:fdpic:read
35645 The remote stub understands the @samp{qXfer:fdpic:read}
35646 packet (@pxref{qXfer fdpic loadmap read}).
35647
35648 @item QNonStop
35649 The remote stub understands the @samp{QNonStop} packet
35650 (@pxref{QNonStop}).
35651
35652 @item QPassSignals
35653 The remote stub understands the @samp{QPassSignals} packet
35654 (@pxref{QPassSignals}).
35655
35656 @item QStartNoAckMode
35657 The remote stub understands the @samp{QStartNoAckMode} packet and
35658 prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
35659
35660 @item multiprocess
35661 @anchor{multiprocess extensions}
35662 @cindex multiprocess extensions, in remote protocol
35663 The remote stub understands the multiprocess extensions to the remote
35664 protocol syntax. The multiprocess extensions affect the syntax of
35665 thread IDs in both packets and replies (@pxref{thread-id syntax}), and
35666 add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
35667 replies. Note that reporting this feature indicates support for the
35668 syntactic extensions only, not that the stub necessarily supports
35669 debugging of more than one process at a time. The stub must not use
35670 multiprocess extensions in packet replies unless @value{GDBN} has also
35671 indicated it supports them in its @samp{qSupported} request.
35672
35673 @item qXfer:osdata:read
35674 The remote stub understands the @samp{qXfer:osdata:read} packet
35675 ((@pxref{qXfer osdata read}).
35676
35677 @item ConditionalBreakpoints
35678 The target accepts and implements evaluation of conditional expressions
35679 defined for breakpoints. The target will only report breakpoint triggers
35680 when such conditions are true (@pxref{Conditions, ,Break Conditions}).
35681
35682 @item ConditionalTracepoints
35683 The remote stub accepts and implements conditional expressions defined
35684 for tracepoints (@pxref{Tracepoint Conditions}).
35685
35686 @item ReverseContinue
35687 The remote stub accepts and implements the reverse continue packet
35688 (@pxref{bc}).
35689
35690 @item ReverseStep
35691 The remote stub accepts and implements the reverse step packet
35692 (@pxref{bs}).
35693
35694 @item TracepointSource
35695 The remote stub understands the @samp{QTDPsrc} packet that supplies
35696 the source form of tracepoint definitions.
35697
35698 @item QAgent
35699 The remote stub understands the @samp{QAgent} packet.
35700
35701 @item QAllow
35702 The remote stub understands the @samp{QAllow} packet.
35703
35704 @item QDisableRandomization
35705 The remote stub understands the @samp{QDisableRandomization} packet.
35706
35707 @item StaticTracepoint
35708 @cindex static tracepoints, in remote protocol
35709 The remote stub supports static tracepoints.
35710
35711 @item InstallInTrace
35712 @anchor{install tracepoint in tracing}
35713 The remote stub supports installing tracepoint in tracing.
35714
35715 @item EnableDisableTracepoints
35716 The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and
35717 @samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints
35718 to be enabled and disabled while a trace experiment is running.
35719
35720 @item tracenz
35721 @cindex string tracing, in remote protocol
35722 The remote stub supports the @samp{tracenz} bytecode for collecting strings.
35723 See @ref{Bytecode Descriptions} for details about the bytecode.
35724
35725 @end table
35726
35727 @item qSymbol::
35728 @cindex symbol lookup, remote request
35729 @cindex @samp{qSymbol} packet
35730 Notify the target that @value{GDBN} is prepared to serve symbol lookup
35731 requests. Accept requests from the target for the values of symbols.
35732
35733 Reply:
35734 @table @samp
35735 @item OK
35736 The target does not need to look up any (more) symbols.
35737 @item qSymbol:@var{sym_name}
35738 The target requests the value of symbol @var{sym_name} (hex encoded).
35739 @value{GDBN} may provide the value by using the
35740 @samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
35741 below.
35742 @end table
35743
35744 @item qSymbol:@var{sym_value}:@var{sym_name}
35745 Set the value of @var{sym_name} to @var{sym_value}.
35746
35747 @var{sym_name} (hex encoded) is the name of a symbol whose value the
35748 target has previously requested.
35749
35750 @var{sym_value} (hex) is the value for symbol @var{sym_name}. If
35751 @value{GDBN} cannot supply a value for @var{sym_name}, then this field
35752 will be empty.
35753
35754 Reply:
35755 @table @samp
35756 @item OK
35757 The target does not need to look up any (more) symbols.
35758 @item qSymbol:@var{sym_name}
35759 The target requests the value of a new symbol @var{sym_name} (hex
35760 encoded). @value{GDBN} will continue to supply the values of symbols
35761 (if available), until the target ceases to request them.
35762 @end table
35763
35764 @item qTBuffer
35765 @item QTBuffer
35766 @item QTDisconnected
35767 @itemx QTDP
35768 @itemx QTDPsrc
35769 @itemx QTDV
35770 @itemx qTfP
35771 @itemx qTfV
35772 @itemx QTFrame
35773 @itemx qTMinFTPILen
35774
35775 @xref{Tracepoint Packets}.
35776
35777 @item qThreadExtraInfo,@var{thread-id}
35778 @cindex thread attributes info, remote request
35779 @cindex @samp{qThreadExtraInfo} packet
35780 Obtain a printable string description of a thread's attributes from
35781 the target OS. @var{thread-id} is a thread ID;
35782 see @ref{thread-id syntax}. This
35783 string may contain anything that the target OS thinks is interesting
35784 for @value{GDBN} to tell the user about the thread. The string is
35785 displayed in @value{GDBN}'s @code{info threads} display. Some
35786 examples of possible thread extra info strings are @samp{Runnable}, or
35787 @samp{Blocked on Mutex}.
35788
35789 Reply:
35790 @table @samp
35791 @item @var{XX}@dots{}
35792 Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
35793 comprising the printable string containing the extra information about
35794 the thread's attributes.
35795 @end table
35796
35797 (Note that the @code{qThreadExtraInfo} packet's name is separated from
35798 the command by a @samp{,}, not a @samp{:}, contrary to the naming
35799 conventions above. Please don't use this packet as a model for new
35800 packets.)
35801
35802 @item QTNotes
35803 @item qTP
35804 @item QTSave
35805 @item qTsP
35806 @item qTsV
35807 @itemx QTStart
35808 @itemx QTStop
35809 @itemx QTEnable
35810 @itemx QTDisable
35811 @itemx QTinit
35812 @itemx QTro
35813 @itemx qTStatus
35814 @itemx qTV
35815 @itemx qTfSTM
35816 @itemx qTsSTM
35817 @itemx qTSTMat
35818 @xref{Tracepoint Packets}.
35819
35820 @item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
35821 @cindex read special object, remote request
35822 @cindex @samp{qXfer} packet
35823 @anchor{qXfer read}
35824 Read uninterpreted bytes from the target's special data area
35825 identified by the keyword @var{object}. Request @var{length} bytes
35826 starting at @var{offset} bytes into the data. The content and
35827 encoding of @var{annex} is specific to @var{object}; it can supply
35828 additional details about what data to access.
35829
35830 Here are the specific requests of this form defined so far. All
35831 @samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
35832 formats, listed below.
35833
35834 @table @samp
35835 @item qXfer:auxv:read::@var{offset},@var{length}
35836 @anchor{qXfer auxiliary vector read}
35837 Access the target's @dfn{auxiliary vector}. @xref{OS Information,
35838 auxiliary vector}. Note @var{annex} must be empty.
35839
35840 This packet is not probed by default; the remote stub must request it,
35841 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35842
35843 @item qXfer:features:read:@var{annex}:@var{offset},@var{length}
35844 @anchor{qXfer target description read}
35845 Access the @dfn{target description}. @xref{Target Descriptions}. The
35846 annex specifies which XML document to access. The main description is
35847 always loaded from the @samp{target.xml} annex.
35848
35849 This packet is not probed by default; the remote stub must request it,
35850 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35851
35852 @item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
35853 @anchor{qXfer library list read}
35854 Access the target's list of loaded libraries. @xref{Library List Format}.
35855 The annex part of the generic @samp{qXfer} packet must be empty
35856 (@pxref{qXfer read}).
35857
35858 Targets which maintain a list of libraries in the program's memory do
35859 not need to implement this packet; it is designed for platforms where
35860 the operating system manages the list of loaded libraries.
35861
35862 This packet is not probed by default; the remote stub must request it,
35863 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35864
35865 @item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length}
35866 @anchor{qXfer svr4 library list read}
35867 Access the target's list of loaded libraries when the target is an SVR4
35868 platform. @xref{Library List Format for SVR4 Targets}. The annex part
35869 of the generic @samp{qXfer} packet must be empty (@pxref{qXfer read}).
35870
35871 This packet is optional for better performance on SVR4 targets.
35872 @value{GDBN} uses memory read packets to read the SVR4 library list otherwise.
35873
35874 This packet is not probed by default; the remote stub must request it,
35875 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35876
35877 @item qXfer:memory-map:read::@var{offset},@var{length}
35878 @anchor{qXfer memory map read}
35879 Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
35880 annex part of the generic @samp{qXfer} packet must be empty
35881 (@pxref{qXfer read}).
35882
35883 This packet is not probed by default; the remote stub must request it,
35884 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35885
35886 @item qXfer:sdata:read::@var{offset},@var{length}
35887 @anchor{qXfer sdata read}
35888
35889 Read contents of the extra collected static tracepoint marker
35890 information. The annex part of the generic @samp{qXfer} packet must
35891 be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint
35892 Action Lists}.
35893
35894 This packet is not probed by default; the remote stub must request it,
35895 by supplying an appropriate @samp{qSupported} response
35896 (@pxref{qSupported}).
35897
35898 @item qXfer:siginfo:read::@var{offset},@var{length}
35899 @anchor{qXfer siginfo read}
35900 Read contents of the extra signal information on the target
35901 system. The annex part of the generic @samp{qXfer} packet must be
35902 empty (@pxref{qXfer read}).
35903
35904 This packet is not probed by default; the remote stub must request it,
35905 by supplying an appropriate @samp{qSupported} response
35906 (@pxref{qSupported}).
35907
35908 @item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
35909 @anchor{qXfer spu read}
35910 Read contents of an @code{spufs} file on the target system. The
35911 annex specifies which file to read; it must be of the form
35912 @file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
35913 in the target process, and @var{name} identifes the @code{spufs} file
35914 in that context to be accessed.
35915
35916 This packet is not probed by default; the remote stub must request it,
35917 by supplying an appropriate @samp{qSupported} response
35918 (@pxref{qSupported}).
35919
35920 @item qXfer:threads:read::@var{offset},@var{length}
35921 @anchor{qXfer threads read}
35922 Access the list of threads on target. @xref{Thread List Format}. The
35923 annex part of the generic @samp{qXfer} packet must be empty
35924 (@pxref{qXfer read}).
35925
35926 This packet is not probed by default; the remote stub must request it,
35927 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35928
35929 @item qXfer:traceframe-info:read::@var{offset},@var{length}
35930 @anchor{qXfer traceframe info read}
35931
35932 Return a description of the current traceframe's contents.
35933 @xref{Traceframe Info Format}. The annex part of the generic
35934 @samp{qXfer} packet must be empty (@pxref{qXfer read}).
35935
35936 This packet is not probed by default; the remote stub must request it,
35937 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35938
35939 @item qXfer:uib:read:@var{pc}:@var{offset},@var{length}
35940 @anchor{qXfer unwind info block}
35941
35942 Return the unwind information block for @var{pc}. This packet is used
35943 on OpenVMS/ia64 to ask the kernel unwind information.
35944
35945 This packet is not probed by default.
35946
35947 @item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length}
35948 @anchor{qXfer fdpic loadmap read}
35949 Read contents of @code{loadmap}s on the target system. The
35950 annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap},
35951 executable @code{loadmap} or interpreter @code{loadmap} to read.
35952
35953 This packet is not probed by default; the remote stub must request it,
35954 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
35955
35956 @item qXfer:osdata:read::@var{offset},@var{length}
35957 @anchor{qXfer osdata read}
35958 Access the target's @dfn{operating system information}.
35959 @xref{Operating System Information}.
35960
35961 @end table
35962
35963 Reply:
35964 @table @samp
35965 @item m @var{data}
35966 Data @var{data} (@pxref{Binary Data}) has been read from the
35967 target. There may be more data at a higher address (although
35968 it is permitted to return @samp{m} even for the last valid
35969 block of data, as long as at least one byte of data was read).
35970 @var{data} may have fewer bytes than the @var{length} in the
35971 request.
35972
35973 @item l @var{data}
35974 Data @var{data} (@pxref{Binary Data}) has been read from the target.
35975 There is no more data to be read. @var{data} may have fewer bytes
35976 than the @var{length} in the request.
35977
35978 @item l
35979 The @var{offset} in the request is at the end of the data.
35980 There is no more data to be read.
35981
35982 @item E00
35983 The request was malformed, or @var{annex} was invalid.
35984
35985 @item E @var{nn}
35986 The offset was invalid, or there was an error encountered reading the data.
35987 @var{nn} is a hex-encoded @code{errno} value.
35988
35989 @item
35990 An empty reply indicates the @var{object} string was not recognized by
35991 the stub, or that the object does not support reading.
35992 @end table
35993
35994 @item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
35995 @cindex write data into object, remote request
35996 @anchor{qXfer write}
35997 Write uninterpreted bytes into the target's special data area
35998 identified by the keyword @var{object}, starting at @var{offset} bytes
35999 into the data. @var{data}@dots{} is the binary-encoded data
36000 (@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
36001 is specific to @var{object}; it can supply additional details about what data
36002 to access.
36003
36004 Here are the specific requests of this form defined so far. All
36005 @samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
36006 formats, listed below.
36007
36008 @table @samp
36009 @item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
36010 @anchor{qXfer siginfo write}
36011 Write @var{data} to the extra signal information on the target system.
36012 The annex part of the generic @samp{qXfer} packet must be
36013 empty (@pxref{qXfer write}).
36014
36015 This packet is not probed by default; the remote stub must request it,
36016 by supplying an appropriate @samp{qSupported} response
36017 (@pxref{qSupported}).
36018
36019 @item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
36020 @anchor{qXfer spu write}
36021 Write @var{data} to an @code{spufs} file on the target system. The
36022 annex specifies which file to write; it must be of the form
36023 @file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
36024 in the target process, and @var{name} identifes the @code{spufs} file
36025 in that context to be accessed.
36026
36027 This packet is not probed by default; the remote stub must request it,
36028 by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36029 @end table
36030
36031 Reply:
36032 @table @samp
36033 @item @var{nn}
36034 @var{nn} (hex encoded) is the number of bytes written.
36035 This may be fewer bytes than supplied in the request.
36036
36037 @item E00
36038 The request was malformed, or @var{annex} was invalid.
36039
36040 @item E @var{nn}
36041 The offset was invalid, or there was an error encountered writing the data.
36042 @var{nn} is a hex-encoded @code{errno} value.
36043
36044 @item
36045 An empty reply indicates the @var{object} string was not
36046 recognized by the stub, or that the object does not support writing.
36047 @end table
36048
36049 @item qXfer:@var{object}:@var{operation}:@dots{}
36050 Requests of this form may be added in the future. When a stub does
36051 not recognize the @var{object} keyword, or its support for
36052 @var{object} does not recognize the @var{operation} keyword, the stub
36053 must respond with an empty packet.
36054
36055 @item qAttached:@var{pid}
36056 @cindex query attached, remote request
36057 @cindex @samp{qAttached} packet
36058 Return an indication of whether the remote server attached to an
36059 existing process or created a new process. When the multiprocess
36060 protocol extensions are supported (@pxref{multiprocess extensions}),
36061 @var{pid} is an integer in hexadecimal format identifying the target
36062 process. Otherwise, @value{GDBN} will omit the @var{pid} field and
36063 the query packet will be simplified as @samp{qAttached}.
36064
36065 This query is used, for example, to know whether the remote process
36066 should be detached or killed when a @value{GDBN} session is ended with
36067 the @code{quit} command.
36068
36069 Reply:
36070 @table @samp
36071 @item 1
36072 The remote server attached to an existing process.
36073 @item 0
36074 The remote server created a new process.
36075 @item E @var{NN}
36076 A badly formed request or an error was encountered.
36077 @end table
36078
36079 @end table
36080
36081 @node Architecture-Specific Protocol Details
36082 @section Architecture-Specific Protocol Details
36083
36084 This section describes how the remote protocol is applied to specific
36085 target architectures. Also see @ref{Standard Target Features}, for
36086 details of XML target descriptions for each architecture.
36087
36088 @subsection ARM
36089
36090 @subsubsection Breakpoint Kinds
36091
36092 These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
36093
36094 @table @r
36095
36096 @item 2
36097 16-bit Thumb mode breakpoint.
36098
36099 @item 3
36100 32-bit Thumb mode (Thumb-2) breakpoint.
36101
36102 @item 4
36103 32-bit ARM mode breakpoint.
36104
36105 @end table
36106
36107 @subsection MIPS
36108
36109 @subsubsection Register Packet Format
36110
36111 The following @code{g}/@code{G} packets have previously been defined.
36112 In the below, some thirty-two bit registers are transferred as
36113 sixty-four bits. Those registers should be zero/sign extended (which?)
36114 to fill the space allocated. Register bytes are transferred in target
36115 byte order. The two nibbles within a register byte are transferred
36116 most-significant - least-significant.
36117
36118 @table @r
36119
36120 @item MIPS32
36121
36122 All registers are transferred as thirty-two bit quantities in the order:
36123 32 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
36124 registers; fsr; fir; fp.
36125
36126 @item MIPS64
36127
36128 All registers are transferred as sixty-four bit quantities (including
36129 thirty-two bit registers such as @code{sr}). The ordering is the same
36130 as @code{MIPS32}.
36131
36132 @end table
36133
36134 @node Tracepoint Packets
36135 @section Tracepoint Packets
36136 @cindex tracepoint packets
36137 @cindex packets, tracepoint
36138
36139 Here we describe the packets @value{GDBN} uses to implement
36140 tracepoints (@pxref{Tracepoints}).
36141
36142 @table @samp
36143
36144 @item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
36145 Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
36146 is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
36147 the tracepoint is disabled. @var{step} is the tracepoint's step
36148 count, and @var{pass} is its pass count. If an @samp{F} is present,
36149 then the tracepoint is to be a fast tracepoint, and the @var{flen} is
36150 the number of bytes that the target should copy elsewhere to make room
36151 for the tracepoint. If an @samp{X} is present, it introduces a
36152 tracepoint condition, which consists of a hexadecimal length, followed
36153 by a comma and hex-encoded bytes, in a manner similar to action
36154 encodings as described below. If the trailing @samp{-} is present,
36155 further @samp{QTDP} packets will follow to specify this tracepoint's
36156 actions.
36157
36158 Replies:
36159 @table @samp
36160 @item OK
36161 The packet was understood and carried out.
36162 @item qRelocInsn
36163 @xref{Tracepoint Packets,,Relocate instruction reply packet}.
36164 @item
36165 The packet was not recognized.
36166 @end table
36167
36168 @item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
36169 Define actions to be taken when a tracepoint is hit. @var{n} and
36170 @var{addr} must be the same as in the initial @samp{QTDP} packet for
36171 this tracepoint. This packet may only be sent immediately after
36172 another @samp{QTDP} packet that ended with a @samp{-}. If the
36173 trailing @samp{-} is present, further @samp{QTDP} packets will follow,
36174 specifying more actions for this tracepoint.
36175
36176 In the series of action packets for a given tracepoint, at most one
36177 can have an @samp{S} before its first @var{action}. If such a packet
36178 is sent, it and the following packets define ``while-stepping''
36179 actions. Any prior packets define ordinary actions --- that is, those
36180 taken when the tracepoint is first hit. If no action packet has an
36181 @samp{S}, then all the packets in the series specify ordinary
36182 tracepoint actions.
36183
36184 The @samp{@var{action}@dots{}} portion of the packet is a series of
36185 actions, concatenated without separators. Each action has one of the
36186 following forms:
36187
36188 @table @samp
36189
36190 @item R @var{mask}
36191 Collect the registers whose bits are set in @var{mask}. @var{mask} is
36192 a hexadecimal number whose @var{i}'th bit is set if register number
36193 @var{i} should be collected. (The least significant bit is numbered
36194 zero.) Note that @var{mask} may be any number of digits long; it may
36195 not fit in a 32-bit word.
36196
36197 @item M @var{basereg},@var{offset},@var{len}
36198 Collect @var{len} bytes of memory starting at the address in register
36199 number @var{basereg}, plus @var{offset}. If @var{basereg} is
36200 @samp{-1}, then the range has a fixed address: @var{offset} is the
36201 address of the lowest byte to collect. The @var{basereg},
36202 @var{offset}, and @var{len} parameters are all unsigned hexadecimal
36203 values (the @samp{-1} value for @var{basereg} is a special case).
36204
36205 @item X @var{len},@var{expr}
36206 Evaluate @var{expr}, whose length is @var{len}, and collect memory as
36207 it directs. @var{expr} is an agent expression, as described in
36208 @ref{Agent Expressions}. Each byte of the expression is encoded as a
36209 two-digit hex number in the packet; @var{len} is the number of bytes
36210 in the expression (and thus one-half the number of hex digits in the
36211 packet).
36212
36213 @end table
36214
36215 Any number of actions may be packed together in a single @samp{QTDP}
36216 packet, as long as the packet does not exceed the maximum packet
36217 length (400 bytes, for many stubs). There may be only one @samp{R}
36218 action per tracepoint, and it must precede any @samp{M} or @samp{X}
36219 actions. Any registers referred to by @samp{M} and @samp{X} actions
36220 must be collected by a preceding @samp{R} action. (The
36221 ``while-stepping'' actions are treated as if they were attached to a
36222 separate tracepoint, as far as these restrictions are concerned.)
36223
36224 Replies:
36225 @table @samp
36226 @item OK
36227 The packet was understood and carried out.
36228 @item qRelocInsn
36229 @xref{Tracepoint Packets,,Relocate instruction reply packet}.
36230 @item
36231 The packet was not recognized.
36232 @end table
36233
36234 @item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
36235 @cindex @samp{QTDPsrc} packet
36236 Specify a source string of tracepoint @var{n} at address @var{addr}.
36237 This is useful to get accurate reproduction of the tracepoints
36238 originally downloaded at the beginning of the trace run. @var{type}
36239 is the name of the tracepoint part, such as @samp{cond} for the
36240 tracepoint's conditional expression (see below for a list of types), while
36241 @var{bytes} is the string, encoded in hexadecimal.
36242
36243 @var{start} is the offset of the @var{bytes} within the overall source
36244 string, while @var{slen} is the total length of the source string.
36245 This is intended for handling source strings that are longer than will
36246 fit in a single packet.
36247 @c Add detailed example when this info is moved into a dedicated
36248 @c tracepoint descriptions section.
36249
36250 The available string types are @samp{at} for the location,
36251 @samp{cond} for the conditional, and @samp{cmd} for an action command.
36252 @value{GDBN} sends a separate packet for each command in the action
36253 list, in the same order in which the commands are stored in the list.
36254
36255 The target does not need to do anything with source strings except
36256 report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
36257 query packets.
36258
36259 Although this packet is optional, and @value{GDBN} will only send it
36260 if the target replies with @samp{TracepointSource} @xref{General
36261 Query Packets}, it makes both disconnected tracing and trace files
36262 much easier to use. Otherwise the user must be careful that the
36263 tracepoints in effect while looking at trace frames are identical to
36264 the ones in effect during the trace run; even a small discrepancy
36265 could cause @samp{tdump} not to work, or a particular trace frame not
36266 be found.
36267
36268 @item QTDV:@var{n}:@var{value}
36269 @cindex define trace state variable, remote request
36270 @cindex @samp{QTDV} packet
36271 Create a new trace state variable, number @var{n}, with an initial
36272 value of @var{value}, which is a 64-bit signed integer. Both @var{n}
36273 and @var{value} are encoded as hexadecimal values. @value{GDBN} has
36274 the option of not using this packet for initial values of zero; the
36275 target should simply create the trace state variables as they are
36276 mentioned in expressions.
36277
36278 @item QTFrame:@var{n}
36279 Select the @var{n}'th tracepoint frame from the buffer, and use the
36280 register and memory contents recorded there to answer subsequent
36281 request packets from @value{GDBN}.
36282
36283 A successful reply from the stub indicates that the stub has found the
36284 requested frame. The response is a series of parts, concatenated
36285 without separators, describing the frame we selected. Each part has
36286 one of the following forms:
36287
36288 @table @samp
36289 @item F @var{f}
36290 The selected frame is number @var{n} in the trace frame buffer;
36291 @var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
36292 was no frame matching the criteria in the request packet.
36293
36294 @item T @var{t}
36295 The selected trace frame records a hit of tracepoint number @var{t};
36296 @var{t} is a hexadecimal number.
36297
36298 @end table
36299
36300 @item QTFrame:pc:@var{addr}
36301 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
36302 currently selected frame whose PC is @var{addr};
36303 @var{addr} is a hexadecimal number.
36304
36305 @item QTFrame:tdp:@var{t}
36306 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
36307 currently selected frame that is a hit of tracepoint @var{t}; @var{t}
36308 is a hexadecimal number.
36309
36310 @item QTFrame:range:@var{start}:@var{end}
36311 Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
36312 currently selected frame whose PC is between @var{start} (inclusive)
36313 and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
36314 numbers.
36315
36316 @item QTFrame:outside:@var{start}:@var{end}
36317 Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
36318 frame @emph{outside} the given range of addresses (exclusive).
36319
36320 @item qTMinFTPILen
36321 This packet requests the minimum length of instruction at which a fast
36322 tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on
36323 the 32-bit x86 architecture, it is possible to use a 4-byte jump, but
36324 it depends on the target system being able to create trampolines in
36325 the first 64K of memory, which might or might not be possible for that
36326 system. So the reply to this packet will be 4 if it is able to
36327 arrange for that.
36328
36329 Replies:
36330
36331 @table @samp
36332 @item 0
36333 The minimum instruction length is currently unknown.
36334 @item @var{length}
36335 The minimum instruction length is @var{length}, where @var{length} is greater
36336 or equal to 1. @var{length} is a hexadecimal number. A reply of 1 means
36337 that a fast tracepoint may be placed on any instruction regardless of size.
36338 @item E
36339 An error has occurred.
36340 @item
36341 An empty reply indicates that the request is not supported by the stub.
36342 @end table
36343
36344 @item QTStart
36345 Begin the tracepoint experiment. Begin collecting data from
36346 tracepoint hits in the trace frame buffer. This packet supports the
36347 @samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate
36348 instruction reply packet}).
36349
36350 @item QTStop
36351 End the tracepoint experiment. Stop collecting trace frames.
36352
36353 @item QTEnable:@var{n}:@var{addr}
36354 @anchor{QTEnable}
36355 Enable tracepoint @var{n} at address @var{addr} in a started tracepoint
36356 experiment. If the tracepoint was previously disabled, then collection
36357 of data from it will resume.
36358
36359 @item QTDisable:@var{n}:@var{addr}
36360 @anchor{QTDisable}
36361 Disable tracepoint @var{n} at address @var{addr} in a started tracepoint
36362 experiment. No more data will be collected from the tracepoint unless
36363 @samp{QTEnable:@var{n}:@var{addr}} is subsequently issued.
36364
36365 @item QTinit
36366 Clear the table of tracepoints, and empty the trace frame buffer.
36367
36368 @item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
36369 Establish the given ranges of memory as ``transparent''. The stub
36370 will answer requests for these ranges from memory's current contents,
36371 if they were not collected as part of the tracepoint hit.
36372
36373 @value{GDBN} uses this to mark read-only regions of memory, like those
36374 containing program code. Since these areas never change, they should
36375 still have the same contents they did when the tracepoint was hit, so
36376 there's no reason for the stub to refuse to provide their contents.
36377
36378 @item QTDisconnected:@var{value}
36379 Set the choice to what to do with the tracing run when @value{GDBN}
36380 disconnects from the target. A @var{value} of 1 directs the target to
36381 continue the tracing run, while 0 tells the target to stop tracing if
36382 @value{GDBN} is no longer in the picture.
36383
36384 @item qTStatus
36385 Ask the stub if there is a trace experiment running right now.
36386
36387 The reply has the form:
36388
36389 @table @samp
36390
36391 @item T@var{running}@r{[};@var{field}@r{]}@dots{}
36392 @var{running} is a single digit @code{1} if the trace is presently
36393 running, or @code{0} if not. It is followed by semicolon-separated
36394 optional fields that an agent may use to report additional status.
36395
36396 @end table
36397
36398 If the trace is not running, the agent may report any of several
36399 explanations as one of the optional fields:
36400
36401 @table @samp
36402
36403 @item tnotrun:0
36404 No trace has been run yet.
36405
36406 @item tstop[:@var{text}]:0
36407 The trace was stopped by a user-originated stop command. The optional
36408 @var{text} field is a user-supplied string supplied as part of the
36409 stop command (for instance, an explanation of why the trace was
36410 stopped manually). It is hex-encoded.
36411
36412 @item tfull:0
36413 The trace stopped because the trace buffer filled up.
36414
36415 @item tdisconnected:0
36416 The trace stopped because @value{GDBN} disconnected from the target.
36417
36418 @item tpasscount:@var{tpnum}
36419 The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
36420
36421 @item terror:@var{text}:@var{tpnum}
36422 The trace stopped because tracepoint @var{tpnum} had an error. The
36423 string @var{text} is available to describe the nature of the error
36424 (for instance, a divide by zero in the condition expression).
36425 @var{text} is hex encoded.
36426
36427 @item tunknown:0
36428 The trace stopped for some other reason.
36429
36430 @end table
36431
36432 Additional optional fields supply statistical and other information.
36433 Although not required, they are extremely useful for users monitoring
36434 the progress of a trace run. If a trace has stopped, and these
36435 numbers are reported, they must reflect the state of the just-stopped
36436 trace.
36437
36438 @table @samp
36439
36440 @item tframes:@var{n}
36441 The number of trace frames in the buffer.
36442
36443 @item tcreated:@var{n}
36444 The total number of trace frames created during the run. This may
36445 be larger than the trace frame count, if the buffer is circular.
36446
36447 @item tsize:@var{n}
36448 The total size of the trace buffer, in bytes.
36449
36450 @item tfree:@var{n}
36451 The number of bytes still unused in the buffer.
36452
36453 @item circular:@var{n}
36454 The value of the circular trace buffer flag. @code{1} means that the
36455 trace buffer is circular and old trace frames will be discarded if
36456 necessary to make room, @code{0} means that the trace buffer is linear
36457 and may fill up.
36458
36459 @item disconn:@var{n}
36460 The value of the disconnected tracing flag. @code{1} means that
36461 tracing will continue after @value{GDBN} disconnects, @code{0} means
36462 that the trace run will stop.
36463
36464 @end table
36465
36466 @item qTP:@var{tp}:@var{addr}
36467 @cindex tracepoint status, remote request
36468 @cindex @samp{qTP} packet
36469 Ask the stub for the current state of tracepoint number @var{tp} at
36470 address @var{addr}.
36471
36472 Replies:
36473 @table @samp
36474 @item V@var{hits}:@var{usage}
36475 The tracepoint has been hit @var{hits} times so far during the trace
36476 run, and accounts for @var{usage} in the trace buffer. Note that
36477 @code{while-stepping} steps are not counted as separate hits, but the
36478 steps' space consumption is added into the usage number.
36479
36480 @end table
36481
36482 @item qTV:@var{var}
36483 @cindex trace state variable value, remote request
36484 @cindex @samp{qTV} packet
36485 Ask the stub for the value of the trace state variable number @var{var}.
36486
36487 Replies:
36488 @table @samp
36489 @item V@var{value}
36490 The value of the variable is @var{value}. This will be the current
36491 value of the variable if the user is examining a running target, or a
36492 saved value if the variable was collected in the trace frame that the
36493 user is looking at. Note that multiple requests may result in
36494 different reply values, such as when requesting values while the
36495 program is running.
36496
36497 @item U
36498 The value of the variable is unknown. This would occur, for example,
36499 if the user is examining a trace frame in which the requested variable
36500 was not collected.
36501 @end table
36502
36503 @item qTfP
36504 @itemx qTsP
36505 These packets request data about tracepoints that are being used by
36506 the target. @value{GDBN} sends @code{qTfP} to get the first piece
36507 of data, and multiple @code{qTsP} to get additional pieces. Replies
36508 to these packets generally take the form of the @code{QTDP} packets
36509 that define tracepoints. (FIXME add detailed syntax)
36510
36511 @item qTfV
36512 @itemx qTsV
36513 These packets request data about trace state variables that are on the
36514 target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
36515 and multiple @code{qTsV} to get additional variables. Replies to
36516 these packets follow the syntax of the @code{QTDV} packets that define
36517 trace state variables.
36518
36519 @item qTfSTM
36520 @itemx qTsSTM
36521 These packets request data about static tracepoint markers that exist
36522 in the target program. @value{GDBN} sends @code{qTfSTM} to get the
36523 first piece of data, and multiple @code{qTsSTM} to get additional
36524 pieces. Replies to these packets take the following form:
36525
36526 Reply:
36527 @table @samp
36528 @item m @var{address}:@var{id}:@var{extra}
36529 A single marker
36530 @item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{}
36531 a comma-separated list of markers
36532 @item l
36533 (lower case letter @samp{L}) denotes end of list.
36534 @item E @var{nn}
36535 An error occurred. @var{nn} are hex digits.
36536 @item
36537 An empty reply indicates that the request is not supported by the
36538 stub.
36539 @end table
36540
36541 @var{address} is encoded in hex.
36542 @var{id} and @var{extra} are strings encoded in hex.
36543
36544 In response to each query, the target will reply with a list of one or
36545 more markers, separated by commas. @value{GDBN} will respond to each
36546 reply with a request for more markers (using the @samp{qs} form of the
36547 query), until the target responds with @samp{l} (lower-case ell, for
36548 @dfn{last}).
36549
36550 @item qTSTMat:@var{address}
36551 This packets requests data about static tracepoint markers in the
36552 target program at @var{address}. Replies to this packet follow the
36553 syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static
36554 tracepoint markers.
36555
36556 @item QTSave:@var{filename}
36557 This packet directs the target to save trace data to the file name
36558 @var{filename} in the target's filesystem. @var{filename} is encoded
36559 as a hex string; the interpretation of the file name (relative vs
36560 absolute, wild cards, etc) is up to the target.
36561
36562 @item qTBuffer:@var{offset},@var{len}
36563 Return up to @var{len} bytes of the current contents of trace buffer,
36564 starting at @var{offset}. The trace buffer is treated as if it were
36565 a contiguous collection of traceframes, as per the trace file format.
36566 The reply consists as many hex-encoded bytes as the target can deliver
36567 in a packet; it is not an error to return fewer than were asked for.
36568 A reply consisting of just @code{l} indicates that no bytes are
36569 available.
36570
36571 @item QTBuffer:circular:@var{value}
36572 This packet directs the target to use a circular trace buffer if
36573 @var{value} is 1, or a linear buffer if the value is 0.
36574
36575 @item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{}
36576 This packet adds optional textual notes to the trace run. Allowable
36577 types include @code{user}, @code{notes}, and @code{tstop}, the
36578 @var{text} fields are arbitrary strings, hex-encoded.
36579
36580 @end table
36581
36582 @subsection Relocate instruction reply packet
36583 When installing fast tracepoints in memory, the target may need to
36584 relocate the instruction currently at the tracepoint address to a
36585 different address in memory. For most instructions, a simple copy is
36586 enough, but, for example, call instructions that implicitly push the
36587 return address on the stack, and relative branches or other
36588 PC-relative instructions require offset adjustment, so that the effect
36589 of executing the instruction at a different address is the same as if
36590 it had executed in the original location.
36591
36592 In response to several of the tracepoint packets, the target may also
36593 respond with a number of intermediate @samp{qRelocInsn} request
36594 packets before the final result packet, to have @value{GDBN} handle
36595 this relocation operation. If a packet supports this mechanism, its
36596 documentation will explicitly say so. See for example the above
36597 descriptions for the @samp{QTStart} and @samp{QTDP} packets. The
36598 format of the request is:
36599
36600 @table @samp
36601 @item qRelocInsn:@var{from};@var{to}
36602
36603 This requests @value{GDBN} to copy instruction at address @var{from}
36604 to address @var{to}, possibly adjusted so that executing the
36605 instruction at @var{to} has the same effect as executing it at
36606 @var{from}. @value{GDBN} writes the adjusted instruction to target
36607 memory starting at @var{to}.
36608 @end table
36609
36610 Replies:
36611 @table @samp
36612 @item qRelocInsn:@var{adjusted_size}
36613 Informs the stub the relocation is complete. @var{adjusted_size} is
36614 the length in bytes of resulting relocated instruction sequence.
36615 @item E @var{NN}
36616 A badly formed request was detected, or an error was encountered while
36617 relocating the instruction.
36618 @end table
36619
36620 @node Host I/O Packets
36621 @section Host I/O Packets
36622 @cindex Host I/O, remote protocol
36623 @cindex file transfer, remote protocol
36624
36625 The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
36626 operations on the far side of a remote link. For example, Host I/O is
36627 used to upload and download files to a remote target with its own
36628 filesystem. Host I/O uses the same constant values and data structure
36629 layout as the target-initiated File-I/O protocol. However, the
36630 Host I/O packets are structured differently. The target-initiated
36631 protocol relies on target memory to store parameters and buffers.
36632 Host I/O requests are initiated by @value{GDBN}, and the
36633 target's memory is not involved. @xref{File-I/O Remote Protocol
36634 Extension}, for more details on the target-initiated protocol.
36635
36636 The Host I/O request packets all encode a single operation along with
36637 its arguments. They have this format:
36638
36639 @table @samp
36640
36641 @item vFile:@var{operation}: @var{parameter}@dots{}
36642 @var{operation} is the name of the particular request; the target
36643 should compare the entire packet name up to the second colon when checking
36644 for a supported operation. The format of @var{parameter} depends on
36645 the operation. Numbers are always passed in hexadecimal. Negative
36646 numbers have an explicit minus sign (i.e.@: two's complement is not
36647 used). Strings (e.g.@: filenames) are encoded as a series of
36648 hexadecimal bytes. The last argument to a system call may be a
36649 buffer of escaped binary data (@pxref{Binary Data}).
36650
36651 @end table
36652
36653 The valid responses to Host I/O packets are:
36654
36655 @table @samp
36656
36657 @item F @var{result} [, @var{errno}] [; @var{attachment}]
36658 @var{result} is the integer value returned by this operation, usually
36659 non-negative for success and -1 for errors. If an error has occured,
36660 @var{errno} will be included in the result. @var{errno} will have a
36661 value defined by the File-I/O protocol (@pxref{Errno Values}). For
36662 operations which return data, @var{attachment} supplies the data as a
36663 binary buffer. Binary buffers in response packets are escaped in the
36664 normal way (@pxref{Binary Data}). See the individual packet
36665 documentation for the interpretation of @var{result} and
36666 @var{attachment}.
36667
36668 @item
36669 An empty response indicates that this operation is not recognized.
36670
36671 @end table
36672
36673 These are the supported Host I/O operations:
36674
36675 @table @samp
36676 @item vFile:open: @var{pathname}, @var{flags}, @var{mode}
36677 Open a file at @var{pathname} and return a file descriptor for it, or
36678 return -1 if an error occurs. @var{pathname} is a string,
36679 @var{flags} is an integer indicating a mask of open flags
36680 (@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
36681 of mode bits to use if the file is created (@pxref{mode_t Values}).
36682 @xref{open}, for details of the open flags and mode values.
36683
36684 @item vFile:close: @var{fd}
36685 Close the open file corresponding to @var{fd} and return 0, or
36686 -1 if an error occurs.
36687
36688 @item vFile:pread: @var{fd}, @var{count}, @var{offset}
36689 Read data from the open file corresponding to @var{fd}. Up to
36690 @var{count} bytes will be read from the file, starting at @var{offset}
36691 relative to the start of the file. The target may read fewer bytes;
36692 common reasons include packet size limits and an end-of-file
36693 condition. The number of bytes read is returned. Zero should only be
36694 returned for a successful read at the end of the file, or if
36695 @var{count} was zero.
36696
36697 The data read should be returned as a binary attachment on success.
36698 If zero bytes were read, the response should include an empty binary
36699 attachment (i.e.@: a trailing semicolon). The return value is the
36700 number of target bytes read; the binary attachment may be longer if
36701 some characters were escaped.
36702
36703 @item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
36704 Write @var{data} (a binary buffer) to the open file corresponding
36705 to @var{fd}. Start the write at @var{offset} from the start of the
36706 file. Unlike many @code{write} system calls, there is no
36707 separate @var{count} argument; the length of @var{data} in the
36708 packet is used. @samp{vFile:write} returns the number of bytes written,
36709 which may be shorter than the length of @var{data}, or -1 if an
36710 error occurred.
36711
36712 @item vFile:unlink: @var{pathname}
36713 Delete the file at @var{pathname} on the target. Return 0,
36714 or -1 if an error occurs. @var{pathname} is a string.
36715
36716 @item vFile:readlink: @var{filename}
36717 Read value of symbolic link @var{filename} on the target. Return
36718 the number of bytes read, or -1 if an error occurs.
36719
36720 The data read should be returned as a binary attachment on success.
36721 If zero bytes were read, the response should include an empty binary
36722 attachment (i.e.@: a trailing semicolon). The return value is the
36723 number of target bytes read; the binary attachment may be longer if
36724 some characters were escaped.
36725
36726 @end table
36727
36728 @node Interrupts
36729 @section Interrupts
36730 @cindex interrupts (remote protocol)
36731
36732 When a program on the remote target is running, @value{GDBN} may
36733 attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or
36734 a @code{BREAK} followed by @code{g},
36735 control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}.
36736
36737 The precise meaning of @code{BREAK} is defined by the transport
36738 mechanism and may, in fact, be undefined. @value{GDBN} does not
36739 currently define a @code{BREAK} mechanism for any of the network
36740 interfaces except for TCP, in which case @value{GDBN} sends the
36741 @code{telnet} BREAK sequence.
36742
36743 @samp{Ctrl-C}, on the other hand, is defined and implemented for all
36744 transport mechanisms. It is represented by sending the single byte
36745 @code{0x03} without any of the usual packet overhead described in
36746 the Overview section (@pxref{Overview}). When a @code{0x03} byte is
36747 transmitted as part of a packet, it is considered to be packet data
36748 and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
36749 (@pxref{X packet}), used for binary downloads, may include an unescaped
36750 @code{0x03} as part of its packet.
36751
36752 @code{BREAK} followed by @code{g} is also known as Magic SysRq g.
36753 When Linux kernel receives this sequence from serial port,
36754 it stops execution and connects to gdb.
36755
36756 Stubs are not required to recognize these interrupt mechanisms and the
36757 precise meaning associated with receipt of the interrupt is
36758 implementation defined. If the target supports debugging of multiple
36759 threads and/or processes, it should attempt to interrupt all
36760 currently-executing threads and processes.
36761 If the stub is successful at interrupting the
36762 running program, it should send one of the stop
36763 reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
36764 of successfully stopping the program in all-stop mode, and a stop reply
36765 for each stopped thread in non-stop mode.
36766 Interrupts received while the
36767 program is stopped are discarded.
36768
36769 @node Notification Packets
36770 @section Notification Packets
36771 @cindex notification packets
36772 @cindex packets, notification
36773
36774 The @value{GDBN} remote serial protocol includes @dfn{notifications},
36775 packets that require no acknowledgment. Both the GDB and the stub
36776 may send notifications (although the only notifications defined at
36777 present are sent by the stub). Notifications carry information
36778 without incurring the round-trip latency of an acknowledgment, and so
36779 are useful for low-impact communications where occasional packet loss
36780 is not a problem.
36781
36782 A notification packet has the form @samp{% @var{data} #
36783 @var{checksum}}, where @var{data} is the content of the notification,
36784 and @var{checksum} is a checksum of @var{data}, computed and formatted
36785 as for ordinary @value{GDBN} packets. A notification's @var{data}
36786 never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
36787 receiving a notification, the recipient sends no @samp{+} or @samp{-}
36788 to acknowledge the notification's receipt or to report its corruption.
36789
36790 Every notification's @var{data} begins with a name, which contains no
36791 colon characters, followed by a colon character.
36792
36793 Recipients should silently ignore corrupted notifications and
36794 notifications they do not understand. Recipients should restart
36795 timeout periods on receipt of a well-formed notification, whether or
36796 not they understand it.
36797
36798 Senders should only send the notifications described here when this
36799 protocol description specifies that they are permitted. In the
36800 future, we may extend the protocol to permit existing notifications in
36801 new contexts; this rule helps older senders avoid confusing newer
36802 recipients.
36803
36804 (Older versions of @value{GDBN} ignore bytes received until they see
36805 the @samp{$} byte that begins an ordinary packet, so new stubs may
36806 transmit notifications without fear of confusing older clients. There
36807 are no notifications defined for @value{GDBN} to send at the moment, but we
36808 assume that most older stubs would ignore them, as well.)
36809
36810 The following notification packets from the stub to @value{GDBN} are
36811 defined:
36812
36813 @table @samp
36814 @item Stop: @var{reply}
36815 Report an asynchronous stop event in non-stop mode.
36816 The @var{reply} has the form of a stop reply, as
36817 described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
36818 for information on how these notifications are acknowledged by
36819 @value{GDBN}.
36820 @end table
36821
36822 @node Remote Non-Stop
36823 @section Remote Protocol Support for Non-Stop Mode
36824
36825 @value{GDBN}'s remote protocol supports non-stop debugging of
36826 multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
36827 supports non-stop mode, it should report that to @value{GDBN} by including
36828 @samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
36829
36830 @value{GDBN} typically sends a @samp{QNonStop} packet only when
36831 establishing a new connection with the stub. Entering non-stop mode
36832 does not alter the state of any currently-running threads, but targets
36833 must stop all threads in any already-attached processes when entering
36834 all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
36835 probe the target state after a mode change.
36836
36837 In non-stop mode, when an attached process encounters an event that
36838 would otherwise be reported with a stop reply, it uses the
36839 asynchronous notification mechanism (@pxref{Notification Packets}) to
36840 inform @value{GDBN}. In contrast to all-stop mode, where all threads
36841 in all processes are stopped when a stop reply is sent, in non-stop
36842 mode only the thread reporting the stop event is stopped. That is,
36843 when reporting a @samp{S} or @samp{T} response to indicate completion
36844 of a step operation, hitting a breakpoint, or a fault, only the
36845 affected thread is stopped; any other still-running threads continue
36846 to run. When reporting a @samp{W} or @samp{X} response, all running
36847 threads belonging to other attached processes continue to run.
36848
36849 Only one stop reply notification at a time may be pending; if
36850 additional stop events occur before @value{GDBN} has acknowledged the
36851 previous notification, they must be queued by the stub for later
36852 synchronous transmission in response to @samp{vStopped} packets from
36853 @value{GDBN}. Because the notification mechanism is unreliable,
36854 the stub is permitted to resend a stop reply notification
36855 if it believes @value{GDBN} may not have received it. @value{GDBN}
36856 ignores additional stop reply notifications received before it has
36857 finished processing a previous notification and the stub has completed
36858 sending any queued stop events.
36859
36860 Otherwise, @value{GDBN} must be prepared to receive a stop reply
36861 notification at any time. Specifically, they may appear when
36862 @value{GDBN} is not otherwise reading input from the stub, or when
36863 @value{GDBN} is expecting to read a normal synchronous response or a
36864 @samp{+}/@samp{-} acknowledgment to a packet it has sent.
36865 Notification packets are distinct from any other communication from
36866 the stub so there is no ambiguity.
36867
36868 After receiving a stop reply notification, @value{GDBN} shall
36869 acknowledge it by sending a @samp{vStopped} packet (@pxref{vStopped packet})
36870 as a regular, synchronous request to the stub. Such acknowledgment
36871 is not required to happen immediately, as @value{GDBN} is permitted to
36872 send other, unrelated packets to the stub first, which the stub should
36873 process normally.
36874
36875 Upon receiving a @samp{vStopped} packet, if the stub has other queued
36876 stop events to report to @value{GDBN}, it shall respond by sending a
36877 normal stop reply response. @value{GDBN} shall then send another
36878 @samp{vStopped} packet to solicit further responses; again, it is
36879 permitted to send other, unrelated packets as well which the stub
36880 should process normally.
36881
36882 If the stub receives a @samp{vStopped} packet and there are no
36883 additional stop events to report, the stub shall return an @samp{OK}
36884 response. At this point, if further stop events occur, the stub shall
36885 send a new stop reply notification, @value{GDBN} shall accept the
36886 notification, and the process shall be repeated.
36887
36888 In non-stop mode, the target shall respond to the @samp{?} packet as
36889 follows. First, any incomplete stop reply notification/@samp{vStopped}
36890 sequence in progress is abandoned. The target must begin a new
36891 sequence reporting stop events for all stopped threads, whether or not
36892 it has previously reported those events to @value{GDBN}. The first
36893 stop reply is sent as a synchronous reply to the @samp{?} packet, and
36894 subsequent stop replies are sent as responses to @samp{vStopped} packets
36895 using the mechanism described above. The target must not send
36896 asynchronous stop reply notifications until the sequence is complete.
36897 If all threads are running when the target receives the @samp{?} packet,
36898 or if the target is not attached to any process, it shall respond
36899 @samp{OK}.
36900
36901 @node Packet Acknowledgment
36902 @section Packet Acknowledgment
36903
36904 @cindex acknowledgment, for @value{GDBN} remote
36905 @cindex packet acknowledgment, for @value{GDBN} remote
36906 By default, when either the host or the target machine receives a packet,
36907 the first response expected is an acknowledgment: either @samp{+} (to indicate
36908 the package was received correctly) or @samp{-} (to request retransmission).
36909 This mechanism allows the @value{GDBN} remote protocol to operate over
36910 unreliable transport mechanisms, such as a serial line.
36911
36912 In cases where the transport mechanism is itself reliable (such as a pipe or
36913 TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
36914 It may be desirable to disable them in that case to reduce communication
36915 overhead, or for other reasons. This can be accomplished by means of the
36916 @samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
36917
36918 When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
36919 expect @samp{+}/@samp{-} protocol acknowledgments. The packet
36920 and response format still includes the normal checksum, as described in
36921 @ref{Overview}, but the checksum may be ignored by the receiver.
36922
36923 If the stub supports @samp{QStartNoAckMode} and prefers to operate in
36924 no-acknowledgment mode, it should report that to @value{GDBN}
36925 by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
36926 @pxref{qSupported}.
36927 If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
36928 disabled via the @code{set remote noack-packet off} command
36929 (@pxref{Remote Configuration}),
36930 @value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
36931 Only then may the stub actually turn off packet acknowledgments.
36932 @value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
36933 response, which can be safely ignored by the stub.
36934
36935 Note that @code{set remote noack-packet} command only affects negotiation
36936 between @value{GDBN} and the stub when subsequent connections are made;
36937 it does not affect the protocol acknowledgment state for any current
36938 connection.
36939 Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
36940 new connection is established,
36941 there is also no protocol request to re-enable the acknowledgments
36942 for the current connection, once disabled.
36943
36944 @node Examples
36945 @section Examples
36946
36947 Example sequence of a target being re-started. Notice how the restart
36948 does not get any direct output:
36949
36950 @smallexample
36951 -> @code{R00}
36952 <- @code{+}
36953 @emph{target restarts}
36954 -> @code{?}
36955 <- @code{+}
36956 <- @code{T001:1234123412341234}
36957 -> @code{+}
36958 @end smallexample
36959
36960 Example sequence of a target being stepped by a single instruction:
36961
36962 @smallexample
36963 -> @code{G1445@dots{}}
36964 <- @code{+}
36965 -> @code{s}
36966 <- @code{+}
36967 @emph{time passes}
36968 <- @code{T001:1234123412341234}
36969 -> @code{+}
36970 -> @code{g}
36971 <- @code{+}
36972 <- @code{1455@dots{}}
36973 -> @code{+}
36974 @end smallexample
36975
36976 @node File-I/O Remote Protocol Extension
36977 @section File-I/O Remote Protocol Extension
36978 @cindex File-I/O remote protocol extension
36979
36980 @menu
36981 * File-I/O Overview::
36982 * Protocol Basics::
36983 * The F Request Packet::
36984 * The F Reply Packet::
36985 * The Ctrl-C Message::
36986 * Console I/O::
36987 * List of Supported Calls::
36988 * Protocol-specific Representation of Datatypes::
36989 * Constants::
36990 * File-I/O Examples::
36991 @end menu
36992
36993 @node File-I/O Overview
36994 @subsection File-I/O Overview
36995 @cindex file-i/o overview
36996
36997 The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
36998 target to use the host's file system and console I/O to perform various
36999 system calls. System calls on the target system are translated into a
37000 remote protocol packet to the host system, which then performs the needed
37001 actions and returns a response packet to the target system.
37002 This simulates file system operations even on targets that lack file systems.
37003
37004 The protocol is defined to be independent of both the host and target systems.
37005 It uses its own internal representation of datatypes and values. Both
37006 @value{GDBN} and the target's @value{GDBN} stub are responsible for
37007 translating the system-dependent value representations into the internal
37008 protocol representations when data is transmitted.
37009
37010 The communication is synchronous. A system call is possible only when
37011 @value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
37012 or @samp{s} packets. While @value{GDBN} handles the request for a system call,
37013 the target is stopped to allow deterministic access to the target's
37014 memory. Therefore File-I/O is not interruptible by target signals. On
37015 the other hand, it is possible to interrupt File-I/O by a user interrupt
37016 (@samp{Ctrl-C}) within @value{GDBN}.
37017
37018 The target's request to perform a host system call does not finish
37019 the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
37020 after finishing the system call, the target returns to continuing the
37021 previous activity (continue, step). No additional continue or step
37022 request from @value{GDBN} is required.
37023
37024 @smallexample
37025 (@value{GDBP}) continue
37026 <- target requests 'system call X'
37027 target is stopped, @value{GDBN} executes system call
37028 -> @value{GDBN} returns result
37029 ... target continues, @value{GDBN} returns to wait for the target
37030 <- target hits breakpoint and sends a Txx packet
37031 @end smallexample
37032
37033 The protocol only supports I/O on the console and to regular files on
37034 the host file system. Character or block special devices, pipes,
37035 named pipes, sockets or any other communication method on the host
37036 system are not supported by this protocol.
37037
37038 File I/O is not supported in non-stop mode.
37039
37040 @node Protocol Basics
37041 @subsection Protocol Basics
37042 @cindex protocol basics, file-i/o
37043
37044 The File-I/O protocol uses the @code{F} packet as the request as well
37045 as reply packet. Since a File-I/O system call can only occur when
37046 @value{GDBN} is waiting for a response from the continuing or stepping target,
37047 the File-I/O request is a reply that @value{GDBN} has to expect as a result
37048 of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
37049 This @code{F} packet contains all information needed to allow @value{GDBN}
37050 to call the appropriate host system call:
37051
37052 @itemize @bullet
37053 @item
37054 A unique identifier for the requested system call.
37055
37056 @item
37057 All parameters to the system call. Pointers are given as addresses
37058 in the target memory address space. Pointers to strings are given as
37059 pointer/length pair. Numerical values are given as they are.
37060 Numerical control flags are given in a protocol-specific representation.
37061
37062 @end itemize
37063
37064 At this point, @value{GDBN} has to perform the following actions.
37065
37066 @itemize @bullet
37067 @item
37068 If the parameters include pointer values to data needed as input to a
37069 system call, @value{GDBN} requests this data from the target with a
37070 standard @code{m} packet request. This additional communication has to be
37071 expected by the target implementation and is handled as any other @code{m}
37072 packet.
37073
37074 @item
37075 @value{GDBN} translates all value from protocol representation to host
37076 representation as needed. Datatypes are coerced into the host types.
37077
37078 @item
37079 @value{GDBN} calls the system call.
37080
37081 @item
37082 It then coerces datatypes back to protocol representation.
37083
37084 @item
37085 If the system call is expected to return data in buffer space specified
37086 by pointer parameters to the call, the data is transmitted to the
37087 target using a @code{M} or @code{X} packet. This packet has to be expected
37088 by the target implementation and is handled as any other @code{M} or @code{X}
37089 packet.
37090
37091 @end itemize
37092
37093 Eventually @value{GDBN} replies with another @code{F} packet which contains all
37094 necessary information for the target to continue. This at least contains
37095
37096 @itemize @bullet
37097 @item
37098 Return value.
37099
37100 @item
37101 @code{errno}, if has been changed by the system call.
37102
37103 @item
37104 ``Ctrl-C'' flag.
37105
37106 @end itemize
37107
37108 After having done the needed type and value coercion, the target continues
37109 the latest continue or step action.
37110
37111 @node The F Request Packet
37112 @subsection The @code{F} Request Packet
37113 @cindex file-i/o request packet
37114 @cindex @code{F} request packet
37115
37116 The @code{F} request packet has the following format:
37117
37118 @table @samp
37119 @item F@var{call-id},@var{parameter@dots{}}
37120
37121 @var{call-id} is the identifier to indicate the host system call to be called.
37122 This is just the name of the function.
37123
37124 @var{parameter@dots{}} are the parameters to the system call.
37125 Parameters are hexadecimal integer values, either the actual values in case
37126 of scalar datatypes, pointers to target buffer space in case of compound
37127 datatypes and unspecified memory areas, or pointer/length pairs in case
37128 of string parameters. These are appended to the @var{call-id} as a
37129 comma-delimited list. All values are transmitted in ASCII
37130 string representation, pointer/length pairs separated by a slash.
37131
37132 @end table
37133
37134
37135
37136 @node The F Reply Packet
37137 @subsection The @code{F} Reply Packet
37138 @cindex file-i/o reply packet
37139 @cindex @code{F} reply packet
37140
37141 The @code{F} reply packet has the following format:
37142
37143 @table @samp
37144
37145 @item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
37146
37147 @var{retcode} is the return code of the system call as hexadecimal value.
37148
37149 @var{errno} is the @code{errno} set by the call, in protocol-specific
37150 representation.
37151 This parameter can be omitted if the call was successful.
37152
37153 @var{Ctrl-C flag} is only sent if the user requested a break. In this
37154 case, @var{errno} must be sent as well, even if the call was successful.
37155 The @var{Ctrl-C flag} itself consists of the character @samp{C}:
37156
37157 @smallexample
37158 F0,0,C
37159 @end smallexample
37160
37161 @noindent
37162 or, if the call was interrupted before the host call has been performed:
37163
37164 @smallexample
37165 F-1,4,C
37166 @end smallexample
37167
37168 @noindent
37169 assuming 4 is the protocol-specific representation of @code{EINTR}.
37170
37171 @end table
37172
37173
37174 @node The Ctrl-C Message
37175 @subsection The @samp{Ctrl-C} Message
37176 @cindex ctrl-c message, in file-i/o protocol
37177
37178 If the @samp{Ctrl-C} flag is set in the @value{GDBN}
37179 reply packet (@pxref{The F Reply Packet}),
37180 the target should behave as if it had
37181 gotten a break message. The meaning for the target is ``system call
37182 interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
37183 (as with a break message) and return to @value{GDBN} with a @code{T02}
37184 packet.
37185
37186 It's important for the target to know in which
37187 state the system call was interrupted. There are two possible cases:
37188
37189 @itemize @bullet
37190 @item
37191 The system call hasn't been performed on the host yet.
37192
37193 @item
37194 The system call on the host has been finished.
37195
37196 @end itemize
37197
37198 These two states can be distinguished by the target by the value of the
37199 returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
37200 call hasn't been performed. This is equivalent to the @code{EINTR} handling
37201 on POSIX systems. In any other case, the target may presume that the
37202 system call has been finished --- successfully or not --- and should behave
37203 as if the break message arrived right after the system call.
37204
37205 @value{GDBN} must behave reliably. If the system call has not been called
37206 yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
37207 @code{errno} in the packet. If the system call on the host has been finished
37208 before the user requests a break, the full action must be finished by
37209 @value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
37210 The @code{F} packet may only be sent when either nothing has happened
37211 or the full action has been completed.
37212
37213 @node Console I/O
37214 @subsection Console I/O
37215 @cindex console i/o as part of file-i/o
37216
37217 By default and if not explicitly closed by the target system, the file
37218 descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
37219 on the @value{GDBN} console is handled as any other file output operation
37220 (@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
37221 by @value{GDBN} so that after the target read request from file descriptor
37222 0 all following typing is buffered until either one of the following
37223 conditions is met:
37224
37225 @itemize @bullet
37226 @item
37227 The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
37228 @code{read}
37229 system call is treated as finished.
37230
37231 @item
37232 The user presses @key{RET}. This is treated as end of input with a trailing
37233 newline.
37234
37235 @item
37236 The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
37237 character (neither newline nor @samp{Ctrl-D}) is appended to the input.
37238
37239 @end itemize
37240
37241 If the user has typed more characters than fit in the buffer given to
37242 the @code{read} call, the trailing characters are buffered in @value{GDBN} until
37243 either another @code{read(0, @dots{})} is requested by the target, or debugging
37244 is stopped at the user's request.
37245
37246
37247 @node List of Supported Calls
37248 @subsection List of Supported Calls
37249 @cindex list of supported file-i/o calls
37250
37251 @menu
37252 * open::
37253 * close::
37254 * read::
37255 * write::
37256 * lseek::
37257 * rename::
37258 * unlink::
37259 * stat/fstat::
37260 * gettimeofday::
37261 * isatty::
37262 * system::
37263 @end menu
37264
37265 @node open
37266 @unnumberedsubsubsec open
37267 @cindex open, file-i/o system call
37268
37269 @table @asis
37270 @item Synopsis:
37271 @smallexample
37272 int open(const char *pathname, int flags);
37273 int open(const char *pathname, int flags, mode_t mode);
37274 @end smallexample
37275
37276 @item Request:
37277 @samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
37278
37279 @noindent
37280 @var{flags} is the bitwise @code{OR} of the following values:
37281
37282 @table @code
37283 @item O_CREAT
37284 If the file does not exist it will be created. The host
37285 rules apply as far as file ownership and time stamps
37286 are concerned.
37287
37288 @item O_EXCL
37289 When used with @code{O_CREAT}, if the file already exists it is
37290 an error and open() fails.
37291
37292 @item O_TRUNC
37293 If the file already exists and the open mode allows
37294 writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
37295 truncated to zero length.
37296
37297 @item O_APPEND
37298 The file is opened in append mode.
37299
37300 @item O_RDONLY
37301 The file is opened for reading only.
37302
37303 @item O_WRONLY
37304 The file is opened for writing only.
37305
37306 @item O_RDWR
37307 The file is opened for reading and writing.
37308 @end table
37309
37310 @noindent
37311 Other bits are silently ignored.
37312
37313
37314 @noindent
37315 @var{mode} is the bitwise @code{OR} of the following values:
37316
37317 @table @code
37318 @item S_IRUSR
37319 User has read permission.
37320
37321 @item S_IWUSR
37322 User has write permission.
37323
37324 @item S_IRGRP
37325 Group has read permission.
37326
37327 @item S_IWGRP
37328 Group has write permission.
37329
37330 @item S_IROTH
37331 Others have read permission.
37332
37333 @item S_IWOTH
37334 Others have write permission.
37335 @end table
37336
37337 @noindent
37338 Other bits are silently ignored.
37339
37340
37341 @item Return value:
37342 @code{open} returns the new file descriptor or -1 if an error
37343 occurred.
37344
37345 @item Errors:
37346
37347 @table @code
37348 @item EEXIST
37349 @var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
37350
37351 @item EISDIR
37352 @var{pathname} refers to a directory.
37353
37354 @item EACCES
37355 The requested access is not allowed.
37356
37357 @item ENAMETOOLONG
37358 @var{pathname} was too long.
37359
37360 @item ENOENT
37361 A directory component in @var{pathname} does not exist.
37362
37363 @item ENODEV
37364 @var{pathname} refers to a device, pipe, named pipe or socket.
37365
37366 @item EROFS
37367 @var{pathname} refers to a file on a read-only filesystem and
37368 write access was requested.
37369
37370 @item EFAULT
37371 @var{pathname} is an invalid pointer value.
37372
37373 @item ENOSPC
37374 No space on device to create the file.
37375
37376 @item EMFILE
37377 The process already has the maximum number of files open.
37378
37379 @item ENFILE
37380 The limit on the total number of files open on the system
37381 has been reached.
37382
37383 @item EINTR
37384 The call was interrupted by the user.
37385 @end table
37386
37387 @end table
37388
37389 @node close
37390 @unnumberedsubsubsec close
37391 @cindex close, file-i/o system call
37392
37393 @table @asis
37394 @item Synopsis:
37395 @smallexample
37396 int close(int fd);
37397 @end smallexample
37398
37399 @item Request:
37400 @samp{Fclose,@var{fd}}
37401
37402 @item Return value:
37403 @code{close} returns zero on success, or -1 if an error occurred.
37404
37405 @item Errors:
37406
37407 @table @code
37408 @item EBADF
37409 @var{fd} isn't a valid open file descriptor.
37410
37411 @item EINTR
37412 The call was interrupted by the user.
37413 @end table
37414
37415 @end table
37416
37417 @node read
37418 @unnumberedsubsubsec read
37419 @cindex read, file-i/o system call
37420
37421 @table @asis
37422 @item Synopsis:
37423 @smallexample
37424 int read(int fd, void *buf, unsigned int count);
37425 @end smallexample
37426
37427 @item Request:
37428 @samp{Fread,@var{fd},@var{bufptr},@var{count}}
37429
37430 @item Return value:
37431 On success, the number of bytes read is returned.
37432 Zero indicates end of file. If count is zero, read
37433 returns zero as well. On error, -1 is returned.
37434
37435 @item Errors:
37436
37437 @table @code
37438 @item EBADF
37439 @var{fd} is not a valid file descriptor or is not open for
37440 reading.
37441
37442 @item EFAULT
37443 @var{bufptr} is an invalid pointer value.
37444
37445 @item EINTR
37446 The call was interrupted by the user.
37447 @end table
37448
37449 @end table
37450
37451 @node write
37452 @unnumberedsubsubsec write
37453 @cindex write, file-i/o system call
37454
37455 @table @asis
37456 @item Synopsis:
37457 @smallexample
37458 int write(int fd, const void *buf, unsigned int count);
37459 @end smallexample
37460
37461 @item Request:
37462 @samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
37463
37464 @item Return value:
37465 On success, the number of bytes written are returned.
37466 Zero indicates nothing was written. On error, -1
37467 is returned.
37468
37469 @item Errors:
37470
37471 @table @code
37472 @item EBADF
37473 @var{fd} is not a valid file descriptor or is not open for
37474 writing.
37475
37476 @item EFAULT
37477 @var{bufptr} is an invalid pointer value.
37478
37479 @item EFBIG
37480 An attempt was made to write a file that exceeds the
37481 host-specific maximum file size allowed.
37482
37483 @item ENOSPC
37484 No space on device to write the data.
37485
37486 @item EINTR
37487 The call was interrupted by the user.
37488 @end table
37489
37490 @end table
37491
37492 @node lseek
37493 @unnumberedsubsubsec lseek
37494 @cindex lseek, file-i/o system call
37495
37496 @table @asis
37497 @item Synopsis:
37498 @smallexample
37499 long lseek (int fd, long offset, int flag);
37500 @end smallexample
37501
37502 @item Request:
37503 @samp{Flseek,@var{fd},@var{offset},@var{flag}}
37504
37505 @var{flag} is one of:
37506
37507 @table @code
37508 @item SEEK_SET
37509 The offset is set to @var{offset} bytes.
37510
37511 @item SEEK_CUR
37512 The offset is set to its current location plus @var{offset}
37513 bytes.
37514
37515 @item SEEK_END
37516 The offset is set to the size of the file plus @var{offset}
37517 bytes.
37518 @end table
37519
37520 @item Return value:
37521 On success, the resulting unsigned offset in bytes from
37522 the beginning of the file is returned. Otherwise, a
37523 value of -1 is returned.
37524
37525 @item Errors:
37526
37527 @table @code
37528 @item EBADF
37529 @var{fd} is not a valid open file descriptor.
37530
37531 @item ESPIPE
37532 @var{fd} is associated with the @value{GDBN} console.
37533
37534 @item EINVAL
37535 @var{flag} is not a proper value.
37536
37537 @item EINTR
37538 The call was interrupted by the user.
37539 @end table
37540
37541 @end table
37542
37543 @node rename
37544 @unnumberedsubsubsec rename
37545 @cindex rename, file-i/o system call
37546
37547 @table @asis
37548 @item Synopsis:
37549 @smallexample
37550 int rename(const char *oldpath, const char *newpath);
37551 @end smallexample
37552
37553 @item Request:
37554 @samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
37555
37556 @item Return value:
37557 On success, zero is returned. On error, -1 is returned.
37558
37559 @item Errors:
37560
37561 @table @code
37562 @item EISDIR
37563 @var{newpath} is an existing directory, but @var{oldpath} is not a
37564 directory.
37565
37566 @item EEXIST
37567 @var{newpath} is a non-empty directory.
37568
37569 @item EBUSY
37570 @var{oldpath} or @var{newpath} is a directory that is in use by some
37571 process.
37572
37573 @item EINVAL
37574 An attempt was made to make a directory a subdirectory
37575 of itself.
37576
37577 @item ENOTDIR
37578 A component used as a directory in @var{oldpath} or new
37579 path is not a directory. Or @var{oldpath} is a directory
37580 and @var{newpath} exists but is not a directory.
37581
37582 @item EFAULT
37583 @var{oldpathptr} or @var{newpathptr} are invalid pointer values.
37584
37585 @item EACCES
37586 No access to the file or the path of the file.
37587
37588 @item ENAMETOOLONG
37589
37590 @var{oldpath} or @var{newpath} was too long.
37591
37592 @item ENOENT
37593 A directory component in @var{oldpath} or @var{newpath} does not exist.
37594
37595 @item EROFS
37596 The file is on a read-only filesystem.
37597
37598 @item ENOSPC
37599 The device containing the file has no room for the new
37600 directory entry.
37601
37602 @item EINTR
37603 The call was interrupted by the user.
37604 @end table
37605
37606 @end table
37607
37608 @node unlink
37609 @unnumberedsubsubsec unlink
37610 @cindex unlink, file-i/o system call
37611
37612 @table @asis
37613 @item Synopsis:
37614 @smallexample
37615 int unlink(const char *pathname);
37616 @end smallexample
37617
37618 @item Request:
37619 @samp{Funlink,@var{pathnameptr}/@var{len}}
37620
37621 @item Return value:
37622 On success, zero is returned. On error, -1 is returned.
37623
37624 @item Errors:
37625
37626 @table @code
37627 @item EACCES
37628 No access to the file or the path of the file.
37629
37630 @item EPERM
37631 The system does not allow unlinking of directories.
37632
37633 @item EBUSY
37634 The file @var{pathname} cannot be unlinked because it's
37635 being used by another process.
37636
37637 @item EFAULT
37638 @var{pathnameptr} is an invalid pointer value.
37639
37640 @item ENAMETOOLONG
37641 @var{pathname} was too long.
37642
37643 @item ENOENT
37644 A directory component in @var{pathname} does not exist.
37645
37646 @item ENOTDIR
37647 A component of the path is not a directory.
37648
37649 @item EROFS
37650 The file is on a read-only filesystem.
37651
37652 @item EINTR
37653 The call was interrupted by the user.
37654 @end table
37655
37656 @end table
37657
37658 @node stat/fstat
37659 @unnumberedsubsubsec stat/fstat
37660 @cindex fstat, file-i/o system call
37661 @cindex stat, file-i/o system call
37662
37663 @table @asis
37664 @item Synopsis:
37665 @smallexample
37666 int stat(const char *pathname, struct stat *buf);
37667 int fstat(int fd, struct stat *buf);
37668 @end smallexample
37669
37670 @item Request:
37671 @samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
37672 @samp{Ffstat,@var{fd},@var{bufptr}}
37673
37674 @item Return value:
37675 On success, zero is returned. On error, -1 is returned.
37676
37677 @item Errors:
37678
37679 @table @code
37680 @item EBADF
37681 @var{fd} is not a valid open file.
37682
37683 @item ENOENT
37684 A directory component in @var{pathname} does not exist or the
37685 path is an empty string.
37686
37687 @item ENOTDIR
37688 A component of the path is not a directory.
37689
37690 @item EFAULT
37691 @var{pathnameptr} is an invalid pointer value.
37692
37693 @item EACCES
37694 No access to the file or the path of the file.
37695
37696 @item ENAMETOOLONG
37697 @var{pathname} was too long.
37698
37699 @item EINTR
37700 The call was interrupted by the user.
37701 @end table
37702
37703 @end table
37704
37705 @node gettimeofday
37706 @unnumberedsubsubsec gettimeofday
37707 @cindex gettimeofday, file-i/o system call
37708
37709 @table @asis
37710 @item Synopsis:
37711 @smallexample
37712 int gettimeofday(struct timeval *tv, void *tz);
37713 @end smallexample
37714
37715 @item Request:
37716 @samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
37717
37718 @item Return value:
37719 On success, 0 is returned, -1 otherwise.
37720
37721 @item Errors:
37722
37723 @table @code
37724 @item EINVAL
37725 @var{tz} is a non-NULL pointer.
37726
37727 @item EFAULT
37728 @var{tvptr} and/or @var{tzptr} is an invalid pointer value.
37729 @end table
37730
37731 @end table
37732
37733 @node isatty
37734 @unnumberedsubsubsec isatty
37735 @cindex isatty, file-i/o system call
37736
37737 @table @asis
37738 @item Synopsis:
37739 @smallexample
37740 int isatty(int fd);
37741 @end smallexample
37742
37743 @item Request:
37744 @samp{Fisatty,@var{fd}}
37745
37746 @item Return value:
37747 Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
37748
37749 @item Errors:
37750
37751 @table @code
37752 @item EINTR
37753 The call was interrupted by the user.
37754 @end table
37755
37756 @end table
37757
37758 Note that the @code{isatty} call is treated as a special case: it returns
37759 1 to the target if the file descriptor is attached
37760 to the @value{GDBN} console, 0 otherwise. Implementing through system calls
37761 would require implementing @code{ioctl} and would be more complex than
37762 needed.
37763
37764
37765 @node system
37766 @unnumberedsubsubsec system
37767 @cindex system, file-i/o system call
37768
37769 @table @asis
37770 @item Synopsis:
37771 @smallexample
37772 int system(const char *command);
37773 @end smallexample
37774
37775 @item Request:
37776 @samp{Fsystem,@var{commandptr}/@var{len}}
37777
37778 @item Return value:
37779 If @var{len} is zero, the return value indicates whether a shell is
37780 available. A zero return value indicates a shell is not available.
37781 For non-zero @var{len}, the value returned is -1 on error and the
37782 return status of the command otherwise. Only the exit status of the
37783 command is returned, which is extracted from the host's @code{system}
37784 return value by calling @code{WEXITSTATUS(retval)}. In case
37785 @file{/bin/sh} could not be executed, 127 is returned.
37786
37787 @item Errors:
37788
37789 @table @code
37790 @item EINTR
37791 The call was interrupted by the user.
37792 @end table
37793
37794 @end table
37795
37796 @value{GDBN} takes over the full task of calling the necessary host calls
37797 to perform the @code{system} call. The return value of @code{system} on
37798 the host is simplified before it's returned
37799 to the target. Any termination signal information from the child process
37800 is discarded, and the return value consists
37801 entirely of the exit status of the called command.
37802
37803 Due to security concerns, the @code{system} call is by default refused
37804 by @value{GDBN}. The user has to allow this call explicitly with the
37805 @code{set remote system-call-allowed 1} command.
37806
37807 @table @code
37808 @item set remote system-call-allowed
37809 @kindex set remote system-call-allowed
37810 Control whether to allow the @code{system} calls in the File I/O
37811 protocol for the remote target. The default is zero (disabled).
37812
37813 @item show remote system-call-allowed
37814 @kindex show remote system-call-allowed
37815 Show whether the @code{system} calls are allowed in the File I/O
37816 protocol.
37817 @end table
37818
37819 @node Protocol-specific Representation of Datatypes
37820 @subsection Protocol-specific Representation of Datatypes
37821 @cindex protocol-specific representation of datatypes, in file-i/o protocol
37822
37823 @menu
37824 * Integral Datatypes::
37825 * Pointer Values::
37826 * Memory Transfer::
37827 * struct stat::
37828 * struct timeval::
37829 @end menu
37830
37831 @node Integral Datatypes
37832 @unnumberedsubsubsec Integral Datatypes
37833 @cindex integral datatypes, in file-i/o protocol
37834
37835 The integral datatypes used in the system calls are @code{int},
37836 @code{unsigned int}, @code{long}, @code{unsigned long},
37837 @code{mode_t}, and @code{time_t}.
37838
37839 @code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
37840 implemented as 32 bit values in this protocol.
37841
37842 @code{long} and @code{unsigned long} are implemented as 64 bit types.
37843
37844 @xref{Limits}, for corresponding MIN and MAX values (similar to those
37845 in @file{limits.h}) to allow range checking on host and target.
37846
37847 @code{time_t} datatypes are defined as seconds since the Epoch.
37848
37849 All integral datatypes transferred as part of a memory read or write of a
37850 structured datatype e.g.@: a @code{struct stat} have to be given in big endian
37851 byte order.
37852
37853 @node Pointer Values
37854 @unnumberedsubsubsec Pointer Values
37855 @cindex pointer values, in file-i/o protocol
37856
37857 Pointers to target data are transmitted as they are. An exception
37858 is made for pointers to buffers for which the length isn't
37859 transmitted as part of the function call, namely strings. Strings
37860 are transmitted as a pointer/length pair, both as hex values, e.g.@:
37861
37862 @smallexample
37863 @code{1aaf/12}
37864 @end smallexample
37865
37866 @noindent
37867 which is a pointer to data of length 18 bytes at position 0x1aaf.
37868 The length is defined as the full string length in bytes, including
37869 the trailing null byte. For example, the string @code{"hello world"}
37870 at address 0x123456 is transmitted as
37871
37872 @smallexample
37873 @code{123456/d}
37874 @end smallexample
37875
37876 @node Memory Transfer
37877 @unnumberedsubsubsec Memory Transfer
37878 @cindex memory transfer, in file-i/o protocol
37879
37880 Structured data which is transferred using a memory read or write (for
37881 example, a @code{struct stat}) is expected to be in a protocol-specific format
37882 with all scalar multibyte datatypes being big endian. Translation to
37883 this representation needs to be done both by the target before the @code{F}
37884 packet is sent, and by @value{GDBN} before
37885 it transfers memory to the target. Transferred pointers to structured
37886 data should point to the already-coerced data at any time.
37887
37888
37889 @node struct stat
37890 @unnumberedsubsubsec struct stat
37891 @cindex struct stat, in file-i/o protocol
37892
37893 The buffer of type @code{struct stat} used by the target and @value{GDBN}
37894 is defined as follows:
37895
37896 @smallexample
37897 struct stat @{
37898 unsigned int st_dev; /* device */
37899 unsigned int st_ino; /* inode */
37900 mode_t st_mode; /* protection */
37901 unsigned int st_nlink; /* number of hard links */
37902 unsigned int st_uid; /* user ID of owner */
37903 unsigned int st_gid; /* group ID of owner */
37904 unsigned int st_rdev; /* device type (if inode device) */
37905 unsigned long st_size; /* total size, in bytes */
37906 unsigned long st_blksize; /* blocksize for filesystem I/O */
37907 unsigned long st_blocks; /* number of blocks allocated */
37908 time_t st_atime; /* time of last access */
37909 time_t st_mtime; /* time of last modification */
37910 time_t st_ctime; /* time of last change */
37911 @};
37912 @end smallexample
37913
37914 The integral datatypes conform to the definitions given in the
37915 appropriate section (see @ref{Integral Datatypes}, for details) so this
37916 structure is of size 64 bytes.
37917
37918 The values of several fields have a restricted meaning and/or
37919 range of values.
37920
37921 @table @code
37922
37923 @item st_dev
37924 A value of 0 represents a file, 1 the console.
37925
37926 @item st_ino
37927 No valid meaning for the target. Transmitted unchanged.
37928
37929 @item st_mode
37930 Valid mode bits are described in @ref{Constants}. Any other
37931 bits have currently no meaning for the target.
37932
37933 @item st_uid
37934 @itemx st_gid
37935 @itemx st_rdev
37936 No valid meaning for the target. Transmitted unchanged.
37937
37938 @item st_atime
37939 @itemx st_mtime
37940 @itemx st_ctime
37941 These values have a host and file system dependent
37942 accuracy. Especially on Windows hosts, the file system may not
37943 support exact timing values.
37944 @end table
37945
37946 The target gets a @code{struct stat} of the above representation and is
37947 responsible for coercing it to the target representation before
37948 continuing.
37949
37950 Note that due to size differences between the host, target, and protocol
37951 representations of @code{struct stat} members, these members could eventually
37952 get truncated on the target.
37953
37954 @node struct timeval
37955 @unnumberedsubsubsec struct timeval
37956 @cindex struct timeval, in file-i/o protocol
37957
37958 The buffer of type @code{struct timeval} used by the File-I/O protocol
37959 is defined as follows:
37960
37961 @smallexample
37962 struct timeval @{
37963 time_t tv_sec; /* second */
37964 long tv_usec; /* microsecond */
37965 @};
37966 @end smallexample
37967
37968 The integral datatypes conform to the definitions given in the
37969 appropriate section (see @ref{Integral Datatypes}, for details) so this
37970 structure is of size 8 bytes.
37971
37972 @node Constants
37973 @subsection Constants
37974 @cindex constants, in file-i/o protocol
37975
37976 The following values are used for the constants inside of the
37977 protocol. @value{GDBN} and target are responsible for translating these
37978 values before and after the call as needed.
37979
37980 @menu
37981 * Open Flags::
37982 * mode_t Values::
37983 * Errno Values::
37984 * Lseek Flags::
37985 * Limits::
37986 @end menu
37987
37988 @node Open Flags
37989 @unnumberedsubsubsec Open Flags
37990 @cindex open flags, in file-i/o protocol
37991
37992 All values are given in hexadecimal representation.
37993
37994 @smallexample
37995 O_RDONLY 0x0
37996 O_WRONLY 0x1
37997 O_RDWR 0x2
37998 O_APPEND 0x8
37999 O_CREAT 0x200
38000 O_TRUNC 0x400
38001 O_EXCL 0x800
38002 @end smallexample
38003
38004 @node mode_t Values
38005 @unnumberedsubsubsec mode_t Values
38006 @cindex mode_t values, in file-i/o protocol
38007
38008 All values are given in octal representation.
38009
38010 @smallexample
38011 S_IFREG 0100000
38012 S_IFDIR 040000
38013 S_IRUSR 0400
38014 S_IWUSR 0200
38015 S_IXUSR 0100
38016 S_IRGRP 040
38017 S_IWGRP 020
38018 S_IXGRP 010
38019 S_IROTH 04
38020 S_IWOTH 02
38021 S_IXOTH 01
38022 @end smallexample
38023
38024 @node Errno Values
38025 @unnumberedsubsubsec Errno Values
38026 @cindex errno values, in file-i/o protocol
38027
38028 All values are given in decimal representation.
38029
38030 @smallexample
38031 EPERM 1
38032 ENOENT 2
38033 EINTR 4
38034 EBADF 9
38035 EACCES 13
38036 EFAULT 14
38037 EBUSY 16
38038 EEXIST 17
38039 ENODEV 19
38040 ENOTDIR 20
38041 EISDIR 21
38042 EINVAL 22
38043 ENFILE 23
38044 EMFILE 24
38045 EFBIG 27
38046 ENOSPC 28
38047 ESPIPE 29
38048 EROFS 30
38049 ENAMETOOLONG 91
38050 EUNKNOWN 9999
38051 @end smallexample
38052
38053 @code{EUNKNOWN} is used as a fallback error value if a host system returns
38054 any error value not in the list of supported error numbers.
38055
38056 @node Lseek Flags
38057 @unnumberedsubsubsec Lseek Flags
38058 @cindex lseek flags, in file-i/o protocol
38059
38060 @smallexample
38061 SEEK_SET 0
38062 SEEK_CUR 1
38063 SEEK_END 2
38064 @end smallexample
38065
38066 @node Limits
38067 @unnumberedsubsubsec Limits
38068 @cindex limits, in file-i/o protocol
38069
38070 All values are given in decimal representation.
38071
38072 @smallexample
38073 INT_MIN -2147483648
38074 INT_MAX 2147483647
38075 UINT_MAX 4294967295
38076 LONG_MIN -9223372036854775808
38077 LONG_MAX 9223372036854775807
38078 ULONG_MAX 18446744073709551615
38079 @end smallexample
38080
38081 @node File-I/O Examples
38082 @subsection File-I/O Examples
38083 @cindex file-i/o examples
38084
38085 Example sequence of a write call, file descriptor 3, buffer is at target
38086 address 0x1234, 6 bytes should be written:
38087
38088 @smallexample
38089 <- @code{Fwrite,3,1234,6}
38090 @emph{request memory read from target}
38091 -> @code{m1234,6}
38092 <- XXXXXX
38093 @emph{return "6 bytes written"}
38094 -> @code{F6}
38095 @end smallexample
38096
38097 Example sequence of a read call, file descriptor 3, buffer is at target
38098 address 0x1234, 6 bytes should be read:
38099
38100 @smallexample
38101 <- @code{Fread,3,1234,6}
38102 @emph{request memory write to target}
38103 -> @code{X1234,6:XXXXXX}
38104 @emph{return "6 bytes read"}
38105 -> @code{F6}
38106 @end smallexample
38107
38108 Example sequence of a read call, call fails on the host due to invalid
38109 file descriptor (@code{EBADF}):
38110
38111 @smallexample
38112 <- @code{Fread,3,1234,6}
38113 -> @code{F-1,9}
38114 @end smallexample
38115
38116 Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
38117 host is called:
38118
38119 @smallexample
38120 <- @code{Fread,3,1234,6}
38121 -> @code{F-1,4,C}
38122 <- @code{T02}
38123 @end smallexample
38124
38125 Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
38126 host is called:
38127
38128 @smallexample
38129 <- @code{Fread,3,1234,6}
38130 -> @code{X1234,6:XXXXXX}
38131 <- @code{T02}
38132 @end smallexample
38133
38134 @node Library List Format
38135 @section Library List Format
38136 @cindex library list format, remote protocol
38137
38138 On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
38139 same process as your application to manage libraries. In this case,
38140 @value{GDBN} can use the loader's symbol table and normal memory
38141 operations to maintain a list of shared libraries. On other
38142 platforms, the operating system manages loaded libraries.
38143 @value{GDBN} can not retrieve the list of currently loaded libraries
38144 through memory operations, so it uses the @samp{qXfer:libraries:read}
38145 packet (@pxref{qXfer library list read}) instead. The remote stub
38146 queries the target's operating system and reports which libraries
38147 are loaded.
38148
38149 The @samp{qXfer:libraries:read} packet returns an XML document which
38150 lists loaded libraries and their offsets. Each library has an
38151 associated name and one or more segment or section base addresses,
38152 which report where the library was loaded in memory.
38153
38154 For the common case of libraries that are fully linked binaries, the
38155 library should have a list of segments. If the target supports
38156 dynamic linking of a relocatable object file, its library XML element
38157 should instead include a list of allocated sections. The segment or
38158 section bases are start addresses, not relocation offsets; they do not
38159 depend on the library's link-time base addresses.
38160
38161 @value{GDBN} must be linked with the Expat library to support XML
38162 library lists. @xref{Expat}.
38163
38164 A simple memory map, with one loaded library relocated by a single
38165 offset, looks like this:
38166
38167 @smallexample
38168 <library-list>
38169 <library name="/lib/libc.so.6">
38170 <segment address="0x10000000"/>
38171 </library>
38172 </library-list>
38173 @end smallexample
38174
38175 Another simple memory map, with one loaded library with three
38176 allocated sections (.text, .data, .bss), looks like this:
38177
38178 @smallexample
38179 <library-list>
38180 <library name="sharedlib.o">
38181 <section address="0x10000000"/>
38182 <section address="0x20000000"/>
38183 <section address="0x30000000"/>
38184 </library>
38185 </library-list>
38186 @end smallexample
38187
38188 The format of a library list is described by this DTD:
38189
38190 @smallexample
38191 <!-- library-list: Root element with versioning -->
38192 <!ELEMENT library-list (library)*>
38193 <!ATTLIST library-list version CDATA #FIXED "1.0">
38194 <!ELEMENT library (segment*, section*)>
38195 <!ATTLIST library name CDATA #REQUIRED>
38196 <!ELEMENT segment EMPTY>
38197 <!ATTLIST segment address CDATA #REQUIRED>
38198 <!ELEMENT section EMPTY>
38199 <!ATTLIST section address CDATA #REQUIRED>
38200 @end smallexample
38201
38202 In addition, segments and section descriptors cannot be mixed within a
38203 single library element, and you must supply at least one segment or
38204 section for each library.
38205
38206 @node Library List Format for SVR4 Targets
38207 @section Library List Format for SVR4 Targets
38208 @cindex library list format, remote protocol
38209
38210 On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader
38211 (e.g.@: @file{ld.so}) and normal memory operations to maintain a list of
38212 shared libraries. Still a special library list provided by this packet is
38213 more efficient for the @value{GDBN} remote protocol.
38214
38215 The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists
38216 loaded libraries and their SVR4 linker parameters. For each library on SVR4
38217 target, the following parameters are reported:
38218
38219 @itemize @minus
38220 @item
38221 @code{name}, the absolute file name from the @code{l_name} field of
38222 @code{struct link_map}.
38223 @item
38224 @code{lm} with address of @code{struct link_map} used for TLS
38225 (Thread Local Storage) access.
38226 @item
38227 @code{l_addr}, the displacement as read from the field @code{l_addr} of
38228 @code{struct link_map}. For prelinked libraries this is not an absolute
38229 memory address. It is a displacement of absolute memory address against
38230 address the file was prelinked to during the library load.
38231 @item
38232 @code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment
38233 @end itemize
38234
38235 Additionally the single @code{main-lm} attribute specifies address of
38236 @code{struct link_map} used for the main executable. This parameter is used
38237 for TLS access and its presence is optional.
38238
38239 @value{GDBN} must be linked with the Expat library to support XML
38240 SVR4 library lists. @xref{Expat}.
38241
38242 A simple memory map, with two loaded libraries (which do not use prelink),
38243 looks like this:
38244
38245 @smallexample
38246 <library-list-svr4 version="1.0" main-lm="0xe4f8f8">
38247 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
38248 l_ld="0xe4eefc"/>
38249 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
38250 l_ld="0x152350"/>
38251 </library-list-svr>
38252 @end smallexample
38253
38254 The format of an SVR4 library list is described by this DTD:
38255
38256 @smallexample
38257 <!-- library-list-svr4: Root element with versioning -->
38258 <!ELEMENT library-list-svr4 (library)*>
38259 <!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
38260 <!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
38261 <!ELEMENT library EMPTY>
38262 <!ATTLIST library name CDATA #REQUIRED>
38263 <!ATTLIST library lm CDATA #REQUIRED>
38264 <!ATTLIST library l_addr CDATA #REQUIRED>
38265 <!ATTLIST library l_ld CDATA #REQUIRED>
38266 @end smallexample
38267
38268 @node Memory Map Format
38269 @section Memory Map Format
38270 @cindex memory map format
38271
38272 To be able to write into flash memory, @value{GDBN} needs to obtain a
38273 memory map from the target. This section describes the format of the
38274 memory map.
38275
38276 The memory map is obtained using the @samp{qXfer:memory-map:read}
38277 (@pxref{qXfer memory map read}) packet and is an XML document that
38278 lists memory regions.
38279
38280 @value{GDBN} must be linked with the Expat library to support XML
38281 memory maps. @xref{Expat}.
38282
38283 The top-level structure of the document is shown below:
38284
38285 @smallexample
38286 <?xml version="1.0"?>
38287 <!DOCTYPE memory-map
38288 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
38289 "http://sourceware.org/gdb/gdb-memory-map.dtd">
38290 <memory-map>
38291 region...
38292 </memory-map>
38293 @end smallexample
38294
38295 Each region can be either:
38296
38297 @itemize
38298
38299 @item
38300 A region of RAM starting at @var{addr} and extending for @var{length}
38301 bytes from there:
38302
38303 @smallexample
38304 <memory type="ram" start="@var{addr}" length="@var{length}"/>
38305 @end smallexample
38306
38307
38308 @item
38309 A region of read-only memory:
38310
38311 @smallexample
38312 <memory type="rom" start="@var{addr}" length="@var{length}"/>
38313 @end smallexample
38314
38315
38316 @item
38317 A region of flash memory, with erasure blocks @var{blocksize}
38318 bytes in length:
38319
38320 @smallexample
38321 <memory type="flash" start="@var{addr}" length="@var{length}">
38322 <property name="blocksize">@var{blocksize}</property>
38323 </memory>
38324 @end smallexample
38325
38326 @end itemize
38327
38328 Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
38329 by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
38330 packets to write to addresses in such ranges.
38331
38332 The formal DTD for memory map format is given below:
38333
38334 @smallexample
38335 <!-- ................................................... -->
38336 <!-- Memory Map XML DTD ................................ -->
38337 <!-- File: memory-map.dtd .............................. -->
38338 <!-- .................................... .............. -->
38339 <!-- memory-map.dtd -->
38340 <!-- memory-map: Root element with versioning -->
38341 <!ELEMENT memory-map (memory | property)>
38342 <!ATTLIST memory-map version CDATA #FIXED "1.0.0">
38343 <!ELEMENT memory (property)>
38344 <!-- memory: Specifies a memory region,
38345 and its type, or device. -->
38346 <!ATTLIST memory type CDATA #REQUIRED
38347 start CDATA #REQUIRED
38348 length CDATA #REQUIRED
38349 device CDATA #IMPLIED>
38350 <!-- property: Generic attribute tag -->
38351 <!ELEMENT property (#PCDATA | property)*>
38352 <!ATTLIST property name CDATA #REQUIRED>
38353 @end smallexample
38354
38355 @node Thread List Format
38356 @section Thread List Format
38357 @cindex thread list format
38358
38359 To efficiently update the list of threads and their attributes,
38360 @value{GDBN} issues the @samp{qXfer:threads:read} packet
38361 (@pxref{qXfer threads read}) and obtains the XML document with
38362 the following structure:
38363
38364 @smallexample
38365 <?xml version="1.0"?>
38366 <threads>
38367 <thread id="id" core="0">
38368 ... description ...
38369 </thread>
38370 </threads>
38371 @end smallexample
38372
38373 Each @samp{thread} element must have the @samp{id} attribute that
38374 identifies the thread (@pxref{thread-id syntax}). The
38375 @samp{core} attribute, if present, specifies which processor core
38376 the thread was last executing on. The content of the of @samp{thread}
38377 element is interpreted as human-readable auxilliary information.
38378
38379 @node Traceframe Info Format
38380 @section Traceframe Info Format
38381 @cindex traceframe info format
38382
38383 To be able to know which objects in the inferior can be examined when
38384 inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of
38385 memory ranges, registers and trace state variables that have been
38386 collected in a traceframe.
38387
38388 This list is obtained using the @samp{qXfer:traceframe-info:read}
38389 (@pxref{qXfer traceframe info read}) packet and is an XML document.
38390
38391 @value{GDBN} must be linked with the Expat library to support XML
38392 traceframe info discovery. @xref{Expat}.
38393
38394 The top-level structure of the document is shown below:
38395
38396 @smallexample
38397 <?xml version="1.0"?>
38398 <!DOCTYPE traceframe-info
38399 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
38400 "http://sourceware.org/gdb/gdb-traceframe-info.dtd">
38401 <traceframe-info>
38402 block...
38403 </traceframe-info>
38404 @end smallexample
38405
38406 Each traceframe block can be either:
38407
38408 @itemize
38409
38410 @item
38411 A region of collected memory starting at @var{addr} and extending for
38412 @var{length} bytes from there:
38413
38414 @smallexample
38415 <memory start="@var{addr}" length="@var{length}"/>
38416 @end smallexample
38417
38418 @end itemize
38419
38420 The formal DTD for the traceframe info format is given below:
38421
38422 @smallexample
38423 <!ELEMENT traceframe-info (memory)* >
38424 <!ATTLIST traceframe-info version CDATA #FIXED "1.0">
38425
38426 <!ELEMENT memory EMPTY>
38427 <!ATTLIST memory start CDATA #REQUIRED
38428 length CDATA #REQUIRED>
38429 @end smallexample
38430
38431 @include agentexpr.texi
38432
38433 @node Target Descriptions
38434 @appendix Target Descriptions
38435 @cindex target descriptions
38436
38437 One of the challenges of using @value{GDBN} to debug embedded systems
38438 is that there are so many minor variants of each processor
38439 architecture in use. It is common practice for vendors to start with
38440 a standard processor core --- ARM, PowerPC, or MIPS, for example ---
38441 and then make changes to adapt it to a particular market niche. Some
38442 architectures have hundreds of variants, available from dozens of
38443 vendors. This leads to a number of problems:
38444
38445 @itemize @bullet
38446 @item
38447 With so many different customized processors, it is difficult for
38448 the @value{GDBN} maintainers to keep up with the changes.
38449 @item
38450 Since individual variants may have short lifetimes or limited
38451 audiences, it may not be worthwhile to carry information about every
38452 variant in the @value{GDBN} source tree.
38453 @item
38454 When @value{GDBN} does support the architecture of the embedded system
38455 at hand, the task of finding the correct architecture name to give the
38456 @command{set architecture} command can be error-prone.
38457 @end itemize
38458
38459 To address these problems, the @value{GDBN} remote protocol allows a
38460 target system to not only identify itself to @value{GDBN}, but to
38461 actually describe its own features. This lets @value{GDBN} support
38462 processor variants it has never seen before --- to the extent that the
38463 descriptions are accurate, and that @value{GDBN} understands them.
38464
38465 @value{GDBN} must be linked with the Expat library to support XML
38466 target descriptions. @xref{Expat}.
38467
38468 @menu
38469 * Retrieving Descriptions:: How descriptions are fetched from a target.
38470 * Target Description Format:: The contents of a target description.
38471 * Predefined Target Types:: Standard types available for target
38472 descriptions.
38473 * Standard Target Features:: Features @value{GDBN} knows about.
38474 @end menu
38475
38476 @node Retrieving Descriptions
38477 @section Retrieving Descriptions
38478
38479 Target descriptions can be read from the target automatically, or
38480 specified by the user manually. The default behavior is to read the
38481 description from the target. @value{GDBN} retrieves it via the remote
38482 protocol using @samp{qXfer} requests (@pxref{General Query Packets,
38483 qXfer}). The @var{annex} in the @samp{qXfer} packet will be
38484 @samp{target.xml}. The contents of the @samp{target.xml} annex are an
38485 XML document, of the form described in @ref{Target Description
38486 Format}.
38487
38488 Alternatively, you can specify a file to read for the target description.
38489 If a file is set, the target will not be queried. The commands to
38490 specify a file are:
38491
38492 @table @code
38493 @cindex set tdesc filename
38494 @item set tdesc filename @var{path}
38495 Read the target description from @var{path}.
38496
38497 @cindex unset tdesc filename
38498 @item unset tdesc filename
38499 Do not read the XML target description from a file. @value{GDBN}
38500 will use the description supplied by the current target.
38501
38502 @cindex show tdesc filename
38503 @item show tdesc filename
38504 Show the filename to read for a target description, if any.
38505 @end table
38506
38507
38508 @node Target Description Format
38509 @section Target Description Format
38510 @cindex target descriptions, XML format
38511
38512 A target description annex is an @uref{http://www.w3.org/XML/, XML}
38513 document which complies with the Document Type Definition provided in
38514 the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
38515 means you can use generally available tools like @command{xmllint} to
38516 check that your feature descriptions are well-formed and valid.
38517 However, to help people unfamiliar with XML write descriptions for
38518 their targets, we also describe the grammar here.
38519
38520 Target descriptions can identify the architecture of the remote target
38521 and (for some architectures) provide information about custom register
38522 sets. They can also identify the OS ABI of the remote target.
38523 @value{GDBN} can use this information to autoconfigure for your
38524 target, or to warn you if you connect to an unsupported target.
38525
38526 Here is a simple target description:
38527
38528 @smallexample
38529 <target version="1.0">
38530 <architecture>i386:x86-64</architecture>
38531 </target>
38532 @end smallexample
38533
38534 @noindent
38535 This minimal description only says that the target uses
38536 the x86-64 architecture.
38537
38538 A target description has the following overall form, with [ ] marking
38539 optional elements and @dots{} marking repeatable elements. The elements
38540 are explained further below.
38541
38542 @smallexample
38543 <?xml version="1.0"?>
38544 <!DOCTYPE target SYSTEM "gdb-target.dtd">
38545 <target version="1.0">
38546 @r{[}@var{architecture}@r{]}
38547 @r{[}@var{osabi}@r{]}
38548 @r{[}@var{compatible}@r{]}
38549 @r{[}@var{feature}@dots{}@r{]}
38550 </target>
38551 @end smallexample
38552
38553 @noindent
38554 The description is generally insensitive to whitespace and line
38555 breaks, under the usual common-sense rules. The XML version
38556 declaration and document type declaration can generally be omitted
38557 (@value{GDBN} does not require them), but specifying them may be
38558 useful for XML validation tools. The @samp{version} attribute for
38559 @samp{<target>} may also be omitted, but we recommend
38560 including it; if future versions of @value{GDBN} use an incompatible
38561 revision of @file{gdb-target.dtd}, they will detect and report
38562 the version mismatch.
38563
38564 @subsection Inclusion
38565 @cindex target descriptions, inclusion
38566 @cindex XInclude
38567 @ifnotinfo
38568 @cindex <xi:include>
38569 @end ifnotinfo
38570
38571 It can sometimes be valuable to split a target description up into
38572 several different annexes, either for organizational purposes, or to
38573 share files between different possible target descriptions. You can
38574 divide a description into multiple files by replacing any element of
38575 the target description with an inclusion directive of the form:
38576
38577 @smallexample
38578 <xi:include href="@var{document}"/>
38579 @end smallexample
38580
38581 @noindent
38582 When @value{GDBN} encounters an element of this form, it will retrieve
38583 the named XML @var{document}, and replace the inclusion directive with
38584 the contents of that document. If the current description was read
38585 using @samp{qXfer}, then so will be the included document;
38586 @var{document} will be interpreted as the name of an annex. If the
38587 current description was read from a file, @value{GDBN} will look for
38588 @var{document} as a file in the same directory where it found the
38589 original description.
38590
38591 @subsection Architecture
38592 @cindex <architecture>
38593
38594 An @samp{<architecture>} element has this form:
38595
38596 @smallexample
38597 <architecture>@var{arch}</architecture>
38598 @end smallexample
38599
38600 @var{arch} is one of the architectures from the set accepted by
38601 @code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
38602
38603 @subsection OS ABI
38604 @cindex @code{<osabi>}
38605
38606 This optional field was introduced in @value{GDBN} version 7.0.
38607 Previous versions of @value{GDBN} ignore it.
38608
38609 An @samp{<osabi>} element has this form:
38610
38611 @smallexample
38612 <osabi>@var{abi-name}</osabi>
38613 @end smallexample
38614
38615 @var{abi-name} is an OS ABI name from the same selection accepted by
38616 @w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
38617
38618 @subsection Compatible Architecture
38619 @cindex @code{<compatible>}
38620
38621 This optional field was introduced in @value{GDBN} version 7.0.
38622 Previous versions of @value{GDBN} ignore it.
38623
38624 A @samp{<compatible>} element has this form:
38625
38626 @smallexample
38627 <compatible>@var{arch}</compatible>
38628 @end smallexample
38629
38630 @var{arch} is one of the architectures from the set accepted by
38631 @code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
38632
38633 A @samp{<compatible>} element is used to specify that the target
38634 is able to run binaries in some other than the main target architecture
38635 given by the @samp{<architecture>} element. For example, on the
38636 Cell Broadband Engine, the main architecture is @code{powerpc:common}
38637 or @code{powerpc:common64}, but the system is able to run binaries
38638 in the @code{spu} architecture as well. The way to describe this
38639 capability with @samp{<compatible>} is as follows:
38640
38641 @smallexample
38642 <architecture>powerpc:common</architecture>
38643 <compatible>spu</compatible>
38644 @end smallexample
38645
38646 @subsection Features
38647 @cindex <feature>
38648
38649 Each @samp{<feature>} describes some logical portion of the target
38650 system. Features are currently used to describe available CPU
38651 registers and the types of their contents. A @samp{<feature>} element
38652 has this form:
38653
38654 @smallexample
38655 <feature name="@var{name}">
38656 @r{[}@var{type}@dots{}@r{]}
38657 @var{reg}@dots{}
38658 </feature>
38659 @end smallexample
38660
38661 @noindent
38662 Each feature's name should be unique within the description. The name
38663 of a feature does not matter unless @value{GDBN} has some special
38664 knowledge of the contents of that feature; if it does, the feature
38665 should have its standard name. @xref{Standard Target Features}.
38666
38667 @subsection Types
38668
38669 Any register's value is a collection of bits which @value{GDBN} must
38670 interpret. The default interpretation is a two's complement integer,
38671 but other types can be requested by name in the register description.
38672 Some predefined types are provided by @value{GDBN} (@pxref{Predefined
38673 Target Types}), and the description can define additional composite types.
38674
38675 Each type element must have an @samp{id} attribute, which gives
38676 a unique (within the containing @samp{<feature>}) name to the type.
38677 Types must be defined before they are used.
38678
38679 @cindex <vector>
38680 Some targets offer vector registers, which can be treated as arrays
38681 of scalar elements. These types are written as @samp{<vector>} elements,
38682 specifying the array element type, @var{type}, and the number of elements,
38683 @var{count}:
38684
38685 @smallexample
38686 <vector id="@var{id}" type="@var{type}" count="@var{count}"/>
38687 @end smallexample
38688
38689 @cindex <union>
38690 If a register's value is usefully viewed in multiple ways, define it
38691 with a union type containing the useful representations. The
38692 @samp{<union>} element contains one or more @samp{<field>} elements,
38693 each of which has a @var{name} and a @var{type}:
38694
38695 @smallexample
38696 <union id="@var{id}">
38697 <field name="@var{name}" type="@var{type}"/>
38698 @dots{}
38699 </union>
38700 @end smallexample
38701
38702 @cindex <struct>
38703 If a register's value is composed from several separate values, define
38704 it with a structure type. There are two forms of the @samp{<struct>}
38705 element; a @samp{<struct>} element must either contain only bitfields
38706 or contain no bitfields. If the structure contains only bitfields,
38707 its total size in bytes must be specified, each bitfield must have an
38708 explicit start and end, and bitfields are automatically assigned an
38709 integer type. The field's @var{start} should be less than or
38710 equal to its @var{end}, and zero represents the least significant bit.
38711
38712 @smallexample
38713 <struct id="@var{id}" size="@var{size}">
38714 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
38715 @dots{}
38716 </struct>
38717 @end smallexample
38718
38719 If the structure contains no bitfields, then each field has an
38720 explicit type, and no implicit padding is added.
38721
38722 @smallexample
38723 <struct id="@var{id}">
38724 <field name="@var{name}" type="@var{type}"/>
38725 @dots{}
38726 </struct>
38727 @end smallexample
38728
38729 @cindex <flags>
38730 If a register's value is a series of single-bit flags, define it with
38731 a flags type. The @samp{<flags>} element has an explicit @var{size}
38732 and contains one or more @samp{<field>} elements. Each field has a
38733 @var{name}, a @var{start}, and an @var{end}. Only single-bit flags
38734 are supported.
38735
38736 @smallexample
38737 <flags id="@var{id}" size="@var{size}">
38738 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
38739 @dots{}
38740 </flags>
38741 @end smallexample
38742
38743 @subsection Registers
38744 @cindex <reg>
38745
38746 Each register is represented as an element with this form:
38747
38748 @smallexample
38749 <reg name="@var{name}"
38750 bitsize="@var{size}"
38751 @r{[}regnum="@var{num}"@r{]}
38752 @r{[}save-restore="@var{save-restore}"@r{]}
38753 @r{[}type="@var{type}"@r{]}
38754 @r{[}group="@var{group}"@r{]}/>
38755 @end smallexample
38756
38757 @noindent
38758 The components are as follows:
38759
38760 @table @var
38761
38762 @item name
38763 The register's name; it must be unique within the target description.
38764
38765 @item bitsize
38766 The register's size, in bits.
38767
38768 @item regnum
38769 The register's number. If omitted, a register's number is one greater
38770 than that of the previous register (either in the current feature or in
38771 a preceding feature); the first register in the target description
38772 defaults to zero. This register number is used to read or write
38773 the register; e.g.@: it is used in the remote @code{p} and @code{P}
38774 packets, and registers appear in the @code{g} and @code{G} packets
38775 in order of increasing register number.
38776
38777 @item save-restore
38778 Whether the register should be preserved across inferior function
38779 calls; this must be either @code{yes} or @code{no}. The default is
38780 @code{yes}, which is appropriate for most registers except for
38781 some system control registers; this is not related to the target's
38782 ABI.
38783
38784 @item type
38785 The type of the register. @var{type} may be a predefined type, a type
38786 defined in the current feature, or one of the special types @code{int}
38787 and @code{float}. @code{int} is an integer type of the correct size
38788 for @var{bitsize}, and @code{float} is a floating point type (in the
38789 architecture's normal floating point format) of the correct size for
38790 @var{bitsize}. The default is @code{int}.
38791
38792 @item group
38793 The register group to which this register belongs. @var{group} must
38794 be either @code{general}, @code{float}, or @code{vector}. If no
38795 @var{group} is specified, @value{GDBN} will not display the register
38796 in @code{info registers}.
38797
38798 @end table
38799
38800 @node Predefined Target Types
38801 @section Predefined Target Types
38802 @cindex target descriptions, predefined types
38803
38804 Type definitions in the self-description can build up composite types
38805 from basic building blocks, but can not define fundamental types. Instead,
38806 standard identifiers are provided by @value{GDBN} for the fundamental
38807 types. The currently supported types are:
38808
38809 @table @code
38810
38811 @item int8
38812 @itemx int16
38813 @itemx int32
38814 @itemx int64
38815 @itemx int128
38816 Signed integer types holding the specified number of bits.
38817
38818 @item uint8
38819 @itemx uint16
38820 @itemx uint32
38821 @itemx uint64
38822 @itemx uint128
38823 Unsigned integer types holding the specified number of bits.
38824
38825 @item code_ptr
38826 @itemx data_ptr
38827 Pointers to unspecified code and data. The program counter and
38828 any dedicated return address register may be marked as code
38829 pointers; printing a code pointer converts it into a symbolic
38830 address. The stack pointer and any dedicated address registers
38831 may be marked as data pointers.
38832
38833 @item ieee_single
38834 Single precision IEEE floating point.
38835
38836 @item ieee_double
38837 Double precision IEEE floating point.
38838
38839 @item arm_fpa_ext
38840 The 12-byte extended precision format used by ARM FPA registers.
38841
38842 @item i387_ext
38843 The 10-byte extended precision format used by x87 registers.
38844
38845 @item i386_eflags
38846 32bit @sc{eflags} register used by x86.
38847
38848 @item i386_mxcsr
38849 32bit @sc{mxcsr} register used by x86.
38850
38851 @end table
38852
38853 @node Standard Target Features
38854 @section Standard Target Features
38855 @cindex target descriptions, standard features
38856
38857 A target description must contain either no registers or all the
38858 target's registers. If the description contains no registers, then
38859 @value{GDBN} will assume a default register layout, selected based on
38860 the architecture. If the description contains any registers, the
38861 default layout will not be used; the standard registers must be
38862 described in the target description, in such a way that @value{GDBN}
38863 can recognize them.
38864
38865 This is accomplished by giving specific names to feature elements
38866 which contain standard registers. @value{GDBN} will look for features
38867 with those names and verify that they contain the expected registers;
38868 if any known feature is missing required registers, or if any required
38869 feature is missing, @value{GDBN} will reject the target
38870 description. You can add additional registers to any of the
38871 standard features --- @value{GDBN} will display them just as if
38872 they were added to an unrecognized feature.
38873
38874 This section lists the known features and their expected contents.
38875 Sample XML documents for these features are included in the
38876 @value{GDBN} source tree, in the directory @file{gdb/features}.
38877
38878 Names recognized by @value{GDBN} should include the name of the
38879 company or organization which selected the name, and the overall
38880 architecture to which the feature applies; so e.g.@: the feature
38881 containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
38882
38883 The names of registers are not case sensitive for the purpose
38884 of recognizing standard features, but @value{GDBN} will only display
38885 registers using the capitalization used in the description.
38886
38887 @menu
38888 * ARM Features::
38889 * i386 Features::
38890 * MIPS Features::
38891 * M68K Features::
38892 * PowerPC Features::
38893 * TIC6x Features::
38894 @end menu
38895
38896
38897 @node ARM Features
38898 @subsection ARM Features
38899 @cindex target descriptions, ARM features
38900
38901 The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile
38902 ARM targets.
38903 It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
38904 @samp{lr}, @samp{pc}, and @samp{cpsr}.
38905
38906 For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core}
38907 feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain
38908 registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc},
38909 and @samp{xpsr}.
38910
38911 The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
38912 should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
38913
38914 The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
38915 it should contain at least registers @samp{wR0} through @samp{wR15} and
38916 @samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
38917 @samp{wCSSF}, and @samp{wCASF} registers are optional.
38918
38919 The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
38920 should contain at least registers @samp{d0} through @samp{d15}. If
38921 they are present, @samp{d16} through @samp{d31} should also be included.
38922 @value{GDBN} will synthesize the single-precision registers from
38923 halves of the double-precision registers.
38924
38925 The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
38926 need to contain registers; it instructs @value{GDBN} to display the
38927 VFP double-precision registers as vectors and to synthesize the
38928 quad-precision registers from pairs of double-precision registers.
38929 If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
38930 be present and include 32 double-precision registers.
38931
38932 @node i386 Features
38933 @subsection i386 Features
38934 @cindex target descriptions, i386 features
38935
38936 The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
38937 targets. It should describe the following registers:
38938
38939 @itemize @minus
38940 @item
38941 @samp{eax} through @samp{edi} plus @samp{eip} for i386
38942 @item
38943 @samp{rax} through @samp{r15} plus @samp{rip} for amd64
38944 @item
38945 @samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
38946 @samp{fs}, @samp{gs}
38947 @item
38948 @samp{st0} through @samp{st7}
38949 @item
38950 @samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
38951 @samp{foseg}, @samp{fooff} and @samp{fop}
38952 @end itemize
38953
38954 The register sets may be different, depending on the target.
38955
38956 The @samp{org.gnu.gdb.i386.sse} feature is optional. It should
38957 describe registers:
38958
38959 @itemize @minus
38960 @item
38961 @samp{xmm0} through @samp{xmm7} for i386
38962 @item
38963 @samp{xmm0} through @samp{xmm15} for amd64
38964 @item
38965 @samp{mxcsr}
38966 @end itemize
38967
38968 The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the
38969 @samp{org.gnu.gdb.i386.sse} feature. It should
38970 describe the upper 128 bits of @sc{ymm} registers:
38971
38972 @itemize @minus
38973 @item
38974 @samp{ymm0h} through @samp{ymm7h} for i386
38975 @item
38976 @samp{ymm0h} through @samp{ymm15h} for amd64
38977 @end itemize
38978
38979 The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
38980 describe a single register, @samp{orig_eax}.
38981
38982 @node MIPS Features
38983 @subsection MIPS Features
38984 @cindex target descriptions, MIPS features
38985
38986 The @samp{org.gnu.gdb.mips.cpu} feature is required for MIPS targets.
38987 It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
38988 @samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
38989 on the target.
38990
38991 The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
38992 contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
38993 registers. They may be 32-bit or 64-bit depending on the target.
38994
38995 The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
38996 it may be optional in a future version of @value{GDBN}. It should
38997 contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
38998 @samp{fir}. They may be 32-bit or 64-bit depending on the target.
38999
39000 The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should
39001 contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through
39002 @samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should
39003 be 32-bit and the rest may be 32-bit or 64-bit depending on the target.
39004
39005 The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
39006 contain a single register, @samp{restart}, which is used by the
39007 Linux kernel to control restartable syscalls.
39008
39009 @node M68K Features
39010 @subsection M68K Features
39011 @cindex target descriptions, M68K features
39012
39013 @table @code
39014 @item @samp{org.gnu.gdb.m68k.core}
39015 @itemx @samp{org.gnu.gdb.coldfire.core}
39016 @itemx @samp{org.gnu.gdb.fido.core}
39017 One of those features must be always present.
39018 The feature that is present determines which flavor of m68k is
39019 used. The feature that is present should contain registers
39020 @samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
39021 @samp{sp}, @samp{ps} and @samp{pc}.
39022
39023 @item @samp{org.gnu.gdb.coldfire.fp}
39024 This feature is optional. If present, it should contain registers
39025 @samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
39026 @samp{fpiaddr}.
39027 @end table
39028
39029 @node PowerPC Features
39030 @subsection PowerPC Features
39031 @cindex target descriptions, PowerPC features
39032
39033 The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
39034 targets. It should contain registers @samp{r0} through @samp{r31},
39035 @samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
39036 @samp{xer}. They may be 32-bit or 64-bit depending on the target.
39037
39038 The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
39039 contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
39040
39041 The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
39042 contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
39043 and @samp{vrsave}.
39044
39045 The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
39046 contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
39047 will combine these registers with the floating point registers
39048 (@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
39049 through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
39050 through @samp{vs63}, the set of vector registers for POWER7.
39051
39052 The @samp{org.gnu.gdb.power.spe} feature is optional. It should
39053 contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
39054 @samp{spefscr}. SPE targets should provide 32-bit registers in
39055 @samp{org.gnu.gdb.power.core} and provide the upper halves in
39056 @samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
39057 these to present registers @samp{ev0} through @samp{ev31} to the
39058 user.
39059
39060 @node TIC6x Features
39061 @subsection TMS320C6x Features
39062 @cindex target descriptions, TIC6x features
39063 @cindex target descriptions, TMS320C6x features
39064 The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x
39065 targets. It should contain registers @samp{A0} through @samp{A15},
39066 registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}.
39067
39068 The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should
39069 contain registers @samp{A16} through @samp{A31} and @samp{B16}
39070 through @samp{B31}.
39071
39072 The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should
39073 contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}.
39074
39075 @node Operating System Information
39076 @appendix Operating System Information
39077 @cindex operating system information
39078
39079 @menu
39080 * Process list::
39081 @end menu
39082
39083 Users of @value{GDBN} often wish to obtain information about the state of
39084 the operating system running on the target---for example the list of
39085 processes, or the list of open files. This section describes the
39086 mechanism that makes it possible. This mechanism is similar to the
39087 target features mechanism (@pxref{Target Descriptions}), but focuses
39088 on a different aspect of target.
39089
39090 Operating system information is retrived from the target via the
39091 remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
39092 read}). The object name in the request should be @samp{osdata}, and
39093 the @var{annex} identifies the data to be fetched.
39094
39095 @node Process list
39096 @appendixsection Process list
39097 @cindex operating system information, process list
39098
39099 When requesting the process list, the @var{annex} field in the
39100 @samp{qXfer} request should be @samp{processes}. The returned data is
39101 an XML document. The formal syntax of this document is defined in
39102 @file{gdb/features/osdata.dtd}.
39103
39104 An example document is:
39105
39106 @smallexample
39107 <?xml version="1.0"?>
39108 <!DOCTYPE target SYSTEM "osdata.dtd">
39109 <osdata type="processes">
39110 <item>
39111 <column name="pid">1</column>
39112 <column name="user">root</column>
39113 <column name="command">/sbin/init</column>
39114 <column name="cores">1,2,3</column>
39115 </item>
39116 </osdata>
39117 @end smallexample
39118
39119 Each item should include a column whose name is @samp{pid}. The value
39120 of that column should identify the process on the target. The
39121 @samp{user} and @samp{command} columns are optional, and will be
39122 displayed by @value{GDBN}. The @samp{cores} column, if present,
39123 should contain a comma-separated list of cores that this process
39124 is running on. Target may provide additional columns,
39125 which @value{GDBN} currently ignores.
39126
39127 @node Trace File Format
39128 @appendix Trace File Format
39129 @cindex trace file format
39130
39131 The trace file comes in three parts: a header, a textual description
39132 section, and a trace frame section with binary data.
39133
39134 The header has the form @code{\x7fTRACE0\n}. The first byte is
39135 @code{0x7f} so as to indicate that the file contains binary data,
39136 while the @code{0} is a version number that may have different values
39137 in the future.
39138
39139 The description section consists of multiple lines of @sc{ascii} text
39140 separated by newline characters (@code{0xa}). The lines may include a
39141 variety of optional descriptive or context-setting information, such
39142 as tracepoint definitions or register set size. @value{GDBN} will
39143 ignore any line that it does not recognize. An empty line marks the end
39144 of this section.
39145
39146 @c FIXME add some specific types of data
39147
39148 The trace frame section consists of a number of consecutive frames.
39149 Each frame begins with a two-byte tracepoint number, followed by a
39150 four-byte size giving the amount of data in the frame. The data in
39151 the frame consists of a number of blocks, each introduced by a
39152 character indicating its type (at least register, memory, and trace
39153 state variable). The data in this section is raw binary, not a
39154 hexadecimal or other encoding; its endianness matches the target's
39155 endianness.
39156
39157 @c FIXME bi-arch may require endianness/arch info in description section
39158
39159 @table @code
39160 @item R @var{bytes}
39161 Register block. The number and ordering of bytes matches that of a
39162 @code{g} packet in the remote protocol. Note that these are the
39163 actual bytes, in target order and @value{GDBN} register order, not a
39164 hexadecimal encoding.
39165
39166 @item M @var{address} @var{length} @var{bytes}...
39167 Memory block. This is a contiguous block of memory, at the 8-byte
39168 address @var{address}, with a 2-byte length @var{length}, followed by
39169 @var{length} bytes.
39170
39171 @item V @var{number} @var{value}
39172 Trace state variable block. This records the 8-byte signed value
39173 @var{value} of trace state variable numbered @var{number}.
39174
39175 @end table
39176
39177 Future enhancements of the trace file format may include additional types
39178 of blocks.
39179
39180 @node Index Section Format
39181 @appendix @code{.gdb_index} section format
39182 @cindex .gdb_index section format
39183 @cindex index section format
39184
39185 This section documents the index section that is created by @code{save
39186 gdb-index} (@pxref{Index Files}). The index section is
39187 DWARF-specific; some knowledge of DWARF is assumed in this
39188 description.
39189
39190 The mapped index file format is designed to be directly
39191 @code{mmap}able on any architecture. In most cases, a datum is
39192 represented using a little-endian 32-bit integer value, called an
39193 @code{offset_type}. Big endian machines must byte-swap the values
39194 before using them. Exceptions to this rule are noted. The data is
39195 laid out such that alignment is always respected.
39196
39197 A mapped index consists of several areas, laid out in order.
39198
39199 @enumerate
39200 @item
39201 The file header. This is a sequence of values, of @code{offset_type}
39202 unless otherwise noted:
39203
39204 @enumerate
39205 @item
39206 The version number, currently 6. Versions 1, 2 and 3 are obsolete.
39207 Version 4 uses a different hashing function from versions 5 and 6.
39208 Version 6 includes symbols for inlined functions, whereas versions
39209 4 and 5 do not. @value{GDBN} will only read version 4 and 5 indices
39210 if the @code{--use-deprecated-index-sections} option is used.
39211
39212 @item
39213 The offset, from the start of the file, of the CU list.
39214
39215 @item
39216 The offset, from the start of the file, of the types CU list. Note
39217 that this area can be empty, in which case this offset will be equal
39218 to the next offset.
39219
39220 @item
39221 The offset, from the start of the file, of the address area.
39222
39223 @item
39224 The offset, from the start of the file, of the symbol table.
39225
39226 @item
39227 The offset, from the start of the file, of the constant pool.
39228 @end enumerate
39229
39230 @item
39231 The CU list. This is a sequence of pairs of 64-bit little-endian
39232 values, sorted by the CU offset. The first element in each pair is
39233 the offset of a CU in the @code{.debug_info} section. The second
39234 element in each pair is the length of that CU. References to a CU
39235 elsewhere in the map are done using a CU index, which is just the
39236 0-based index into this table. Note that if there are type CUs, then
39237 conceptually CUs and type CUs form a single list for the purposes of
39238 CU indices.
39239
39240 @item
39241 The types CU list. This is a sequence of triplets of 64-bit
39242 little-endian values. In a triplet, the first value is the CU offset,
39243 the second value is the type offset in the CU, and the third value is
39244 the type signature. The types CU list is not sorted.
39245
39246 @item
39247 The address area. The address area consists of a sequence of address
39248 entries. Each address entry has three elements:
39249
39250 @enumerate
39251 @item
39252 The low address. This is a 64-bit little-endian value.
39253
39254 @item
39255 The high address. This is a 64-bit little-endian value. Like
39256 @code{DW_AT_high_pc}, the value is one byte beyond the end.
39257
39258 @item
39259 The CU index. This is an @code{offset_type} value.
39260 @end enumerate
39261
39262 @item
39263 The symbol table. This is an open-addressed hash table. The size of
39264 the hash table is always a power of 2.
39265
39266 Each slot in the hash table consists of a pair of @code{offset_type}
39267 values. The first value is the offset of the symbol's name in the
39268 constant pool. The second value is the offset of the CU vector in the
39269 constant pool.
39270
39271 If both values are 0, then this slot in the hash table is empty. This
39272 is ok because while 0 is a valid constant pool index, it cannot be a
39273 valid index for both a string and a CU vector.
39274
39275 The hash value for a table entry is computed by applying an
39276 iterative hash function to the symbol's name. Starting with an
39277 initial value of @code{r = 0}, each (unsigned) character @samp{c} in
39278 the string is incorporated into the hash using the formula depending on the
39279 index version:
39280
39281 @table @asis
39282 @item Version 4
39283 The formula is @code{r = r * 67 + c - 113}.
39284
39285 @item Versions 5 and 6
39286 The formula is @code{r = r * 67 + tolower (c) - 113}.
39287 @end table
39288
39289 The terminating @samp{\0} is not incorporated into the hash.
39290
39291 The step size used in the hash table is computed via
39292 @code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash
39293 value, and @samp{size} is the size of the hash table. The step size
39294 is used to find the next candidate slot when handling a hash
39295 collision.
39296
39297 The names of C@t{++} symbols in the hash table are canonicalized. We
39298 don't currently have a simple description of the canonicalization
39299 algorithm; if you intend to create new index sections, you must read
39300 the code.
39301
39302 @item
39303 The constant pool. This is simply a bunch of bytes. It is organized
39304 so that alignment is correct: CU vectors are stored first, followed by
39305 strings.
39306
39307 A CU vector in the constant pool is a sequence of @code{offset_type}
39308 values. The first value is the number of CU indices in the vector.
39309 Each subsequent value is the index of a CU in the CU list. This
39310 element in the hash table is used to indicate which CUs define the
39311 symbol.
39312
39313 A string in the constant pool is zero-terminated.
39314 @end enumerate
39315
39316 @include gpl.texi
39317
39318 @node GNU Free Documentation License
39319 @appendix GNU Free Documentation License
39320 @include fdl.texi
39321
39322 @node Index
39323 @unnumbered Index
39324
39325 @printindex cp
39326
39327 @tex
39328 % I think something like @colophon should be in texinfo. In the
39329 % meantime:
39330 \long\def\colophon{\hbox to0pt{}\vfill
39331 \centerline{The body of this manual is set in}
39332 \centerline{\fontname\tenrm,}
39333 \centerline{with headings in {\bf\fontname\tenbf}}
39334 \centerline{and examples in {\tt\fontname\tentt}.}
39335 \centerline{{\it\fontname\tenit\/},}
39336 \centerline{{\bf\fontname\tenbf}, and}
39337 \centerline{{\sl\fontname\tensl\/}}
39338 \centerline{are used for emphasis.}\vfill}
39339 \page\colophon
39340 % Blame: doc@cygnus.com, 1991.
39341 @end tex
39342
39343 @bye
This page took 1.05413 seconds and 3 git commands to generate.